Adding a new column should be simple: define the name, set the type, apply constraints, deploy. In production, it’s rarely that clean. Schema changes ripple through APIs, background jobs, and analytics pipelines. A single added field can break downstream integrations or trigger costly table rewrites.
Start by mapping dependencies. Identify every query, index, and trigger touching the target table. When the new column affects high-traffic tables, plan for minimal locking—use ADD COLUMN with defaults carefully, or create the column without a default and backfill in batches. This avoids full table rewrites that can stall writes and reads.
Keep consistency front of mind. If the new column stores derived data, enforce correctness at the point of write, not later. Audit ORM configurations—lazy defaults in code can override migration rules. Document the intended type and constraints to prevent silent drift over time.