Adding a new column is more than typing ALTER TABLE. It changes contracts. It shifts indexes. It impacts queries you wrote years ago and forgot. A single new field in a relational database can cascade across code, APIs, and reports. Every dependency must line up, or something will break in production.
The first decision is the column type. Pick it with intent. Integer or bigint for counters. Text for variable strings. JSON if you want flexibility but can live with slower lookups. Use NOT NULL when the value is required, with a sensible default for existing rows. If you expect high read or write volume, decide on indexing early. Adding an index later on a large table is slow and locks writes.
Next is migration strategy. For small datasets, you can alter the table directly. For large or busy tables, use an online schema change tool to avoid downtime. Run migrations in stages. Deploy the new column first, then update the application to start using it. This approach avoids hard failures when old code meets new schema.