Adding a new column should be simple, but in production systems it often carries risk. Schema changes can lock tables, break queries, and push outages into peak traffic. To ship fast without breaking things, you need a process that treats a new column as both a functional change and an operational event.
Start with the database engine. Understand how it handles ALTER TABLE for your storage engine. Some support online DDL, others need full table rewrites. Always confirm whether the new column will block reads or writes during creation.
Name columns with purpose. Avoid vague labels and stick to naming conventions that make queries self-explanatory. Define data types for precision, not just convenience — a VARCHAR where an INT belongs will slow indexing and waste memory.
Default values matter. In large datasets, applying a default during column creation can trigger a full table rewrite. Consider adding the column NULL first, backfilling in small batches, then enforcing defaults and NOT NULL constraints later.