A single change in a database is never just one line in a migration file. A new column can break queries, slow writes, and ripple through APIs, jobs, and reporting pipelines. Schema evolution demands precision or the cost compounds fast.
Adding a new column starts with defining the correct data type and constraints. Choose mutable or immutable based on how the column will be used. Consider nullability and defaults; careless defaults can bloat storage or hide bad data. For sensitive data, encrypt at rest and apply strict access rules from the first commit.
Migrations must be forward- and backward-compatible when deployed to production. Add the column without dropping or renaming existing fields in the same release. Deploy changes with zero downtime by separating schema changes from code that depends on them. Test under production load, not just in local or staging.