Adding a new column seems simple. It isn't. Every decision touches schema integrity, query performance, and the ability to deploy without taking the system down. In production, you can’t afford reckless changes.
Start with intent. Define exactly why this new column exists. Decide its type, constraints, and whether it can be null. Set a default only if you must. Defaults can mask errors and hide missing transformations.
Plan for the migration. On large datasets, adding a column locks the table or forces slow rewrites. If downtime is unacceptable, use an online migration tool or break the change into steps: add the column, backfill in small batches, then apply indexes or constraints.
Handle queries. Code that reads or writes to the table must adapt. Feature flags can control rollout. First, deploy code that handles both old and new schema states. Then backfill. Finally, switch the feature flag to require the new column. Remove any compatibility paths once the change is stable.