The schema is wrong. You know it the second you see it. A feature depends on a table that doesn’t exist yet, and the plan calls for a new column to store critical data. Every delay here compounds into sprints lost and codebases drifting.
Adding a new column sounds simple. But in production, speed, safety, and precision matter more than syntax. You must decide how to define the column, whether it needs an index, how it interacts with constraints, defaults, and migrations. You weigh the cost of locking tables, the impact on replication lag, and how it fits into your rollout strategy.
The wrong approach means downtime, failed deployments, or corrupt data. A safe rollout demands feature flags, migration scripts that run in multiple stages, and backfilling data without blocking traffic. For large datasets, adding a new column with a default value can trigger a full table rewrite; avoid that with nullable columns first, then backfill, then enforce defaults in later migrations.