A new column looks simple. In code, it is one line. In production, it can freeze queries, lock tables, trigger deploy delays, and cause downtime. The deeper the dataset, the heavier the change.
Adding a new column starts with intent. Define the exact name, type, default value, and whether it can be null. Every choice carries weight. Changing types later is harder than getting them right now.
Migrations should be explicit and reversible. Use tools that generate clear SQL for the new column and review every query before running it in production. Always test on a staging database with a recent production snapshot. Monitor execution time.
For large tables, consider adding the new column without a default, then backfill in batches. This prevents long locks and replication lag. If your ORM auto-generates migrations, audit the output. Many ORMs hide costly operations inside a single migration file.