A new column changes the shape of your data. Done wrong, it can lock tables, block writes, or corrupt dependent code. Done right, it extends functionality with zero disruption. The key is to treat schema changes as part of your release process, not an afterthought.
Start by defining the exact purpose of the new column. Write a migration script that adds it as nullable or with a safe default. Avoid adding constraints during the initial rollout. This ensures fast execution and prevents production stalls.
After the column exists, update your application code to write and read from it. Deploy this change separately. Only after everything is stable should you enforce non-null constraints or add indexes. Splitting schema updates into staged steps prevents downtime and protects users from errors.