Adding a new column seems simple. It can break production if you get it wrong. Schema changes mean locking tables, shifting indexes, and touching queries that have lived unchanged for years. The wrong migration steps stall deployments or block writes at scale.
Start by defining the new column with exact types and constraints. Avoid generic types that leave room for later surprises. Use NOT NULL only when you are certain every row will have valid data. Default values help with backfilling, but choose them with intent—every default has an operational cost.
Test schema migrations in staging against a dataset that matches production size. Simulate high read/write traffic during the migration to catch concurrency issues. Index the column only if queries demand it; new indexes slow writes and increase storage.