The build had failed again. Not because of logic. Not because of tests. Because someone forgot to add a new column.
Adding a new column should be exact. Schema changes are not decoration; they are structural. In most systems, a new column means migrating live data without breaking production. This is where discipline matters. Decide the column name, type, default, nullability. Decide how it fits into indexing. Decide if it belongs in the primary path or in a side table to reduce I/O under load.
When you create a new column in SQL, use explicit types. Avoid implicit conversions. In PostgreSQL:
ALTER TABLE users ADD COLUMN last_seen_at TIMESTAMPTZ DEFAULT NOW();
This runs fast on small tables. On large ones, it can lock writes and block traffic. Plan the migration in steps. First, add a nullable column without a default. Then backfill asynchronously. Finally, set the default and constraints once the data matches the rule. This minimizes lock time.