Adding a new column sounds simple. It isn’t. The wrong approach leads to migrations that stall deploys, lock tables, and break downstream systems. At scale, schema changes have consequences measured in downtime and lost trust.
A new column must be defined with the right data type, default behavior, and nullability from the start. Name it clearly. Document its intent before writing the first line. If the column stores derived data, consider whether it belongs in the source table or a separate one to reduce coupling. For live systems, use additive changes: create the column first, backfill asynchronously, then switch application code to use it.
When performance matters, think about indexing only after usage patterns are clear. Avoid unnecessary indexes during initial creation—they can double migration time and block writes. If this column supports queries in production, measure the impact before and after adding it.