Adding a new column is not just a simple DDL statement. It touches every part of the system: the migrations, the application code, the tests, the data pipelines, the monitoring. Done wrong, it slows queries, corrupts writes, or triggers silent failures. Done right, it ships without downtime.
Start with atomic changes. Plan the column at the database level. Define data type, nullability, default values, indexing strategy. Add the column with online migration tools when dealing with high-traffic production systems. Avoid locking tables.
Update the application in phases. Add read compatibility first, so existing code still works. Then write to the new column, ensuring dual-write logic where necessary. Backfill data in controlled batches to avoid performance hits. Test every branch of logic that touches the column.