Adding a new column to a database table sounds simple. In production, it is not. Schema changes can block queries, lock tables, and make deployments unpredictable. The key to doing it safely is to make each change backward-compatible and verifiable before shipping.
Always start with an additive migration. A new column can be added without touching existing columns or altering their data types. This preserves existing queries and keeps application code functional during rollout. Use ALTER TABLE with care, and understand how your database engine executes it. In Postgres, for example, adding a nullable column without a default is fast. Adding one with a default rewrites the entire table and can stall production.
After adding the column, deploy code that writes to both the old and new columns if necessary. This dual-write pattern keeps data synchronized until a full cutover is safe. When confident, migrate reads to the new column in a separate release. Avoid combining these steps into a single deployment; small changes reduce blast radius.