Adding a new column should be simple. In practice, it can break production if you skip the details. Database schemas are rigid. Once you add a new column, every system that touches that table must understand it. Missing migrations, stale ORM models, or untested queries can cause errors that hide until traffic hits.
Define the exact schema. Declare the column name, type, defaults, and constraints before touching the database. Test the migration on a copy of production data. Watch the performance impact of adding a new column, especially on large tables where a lock can freeze writes.
Use backward-compatible steps. First, add the new column as nullable or with a safe default. Deploy application changes that read and write the column. Only after confirming stable writes should you enforce NOT NULL or unique constraints. This phased approach makes the new column deploy predictable.