In databases, adding a new column is simple in theory but dangerous in practice. It changes the shape of your data. It can break production queries. It can lock a table and delay transactions. The right approach starts with the migration plan.
First, define the column with an explicit name and type. Use ALTER TABLE or the equivalent in your database engine. In PostgreSQL, for example:
ALTER TABLE orders
ADD COLUMN shipped_at TIMESTAMP WITH TIME ZONE;
Second, avoid adding NOT NULL constraints until the column is populated. This prevents write disruptions. Use defaults only when they fit real business rules.
Third, backfill data in small batches. This keeps locks short and avoids performance cliffs. For large tables, run migrations off-peak. Monitor query plans and indexes.