A schema change is simple in theory, but reality is harder. A new column in a production table can lock writes, block reads, and stall your system if you do it wrong. Even small migrations can cascade, breaking APIs and downstream jobs. Speed matters. Safety matters more.
When you add a new column, plan for compatibility. Choose null defaults or backfill values that won’t break existing queries. Avoid destructive changes in live traffic hours. Test your migration on a replica with realistic data before pushing to production.
For relational databases like PostgreSQL, adding a nullable column is fast because it updates metadata only. Adding a column with a default or NOT NULL constraint triggers a full table rewrite, which can halt throughput. Use NULL first, then update in batches, then set constraints once data is stable.