Adding a new column is the most common schema change that still breaks production. It looks simple. One line in a migration. Yet it can cascade through APIs, batch jobs, and analytics pipelines. The shape of the data changes. The assumptions baked into joins, indexes, and validations are no longer true.
Before adding a new column, define its type with precision. Choose nullability based on how quickly you can backfill data. If a backfill will take hours or days, start with the column nullable to avoid locking writes. Index only if queries demand it; every index has a write cost.
Deploy the migration in stages. First, add the column. Then, backfill in small batches to avoid load spikes on production. Once the column is populated, update the application to read and write it. Finally, enforce constraints once you are sure production traffic matches expectations.