The schema was wrong, and everyone knew it. The data team needed a new column, but the clock was running and the migration window was small.
Adding a new column should be simple. In practice, it can break prod, slow queries, and trigger every lurking bug that waits for a change in shape. Choosing the wrong data type now means a rewrite later. Choosing the wrong default can mean bad data forever.
A new column starts in the database definition. Define the column name, type, nullability, and default value. Use explicit types. Avoid polymorphic meaning. Confirm the change matches documented contracts. In relational databases, run the DDL statement in a controlled environment first. Example:
ALTER TABLE orders ADD COLUMN delivery_eta TIMESTAMP WITH TIME ZONE;
For large tables, add the new column without defaults to avoid table-wide locks. Then backfill in batches. Index only if required by queries you can measure. Every index write will add cost to inserts and updates, so test query plans before committing.