Adding a new column should be simple. In practice, schema changes can slow deployments, add risk, and break production if handled poorly. A new column impacts queries, indexes, constraints, and the way your app reads and writes data. The key is to manage the change without downtime or data loss.
First, define the new column with the correct data type and defaults. Explicitly set nullability. Avoid hidden behavior from implicit type casting. If the column will be indexed, create it as part of a phased migration to reduce locking on large tables.
Second, use safe migration strategies. In PostgreSQL or MySQL, adding a nullable column without a default on an existing table is often instant. But adding a column with a default value can rewrite the table and block writes. Break this into steps: add the column as nullable, backfill in batches, then add the default and constraints.