The data is incomplete, the queries feel slow, and the schema no longer matches reality. You open the migration file and the decision is already in motion.
Adding a new column is not trivial. It changes your model. It impacts API responses. It alters constraints, indexes, and storage. Every choice has a cost. The type must fit the data. The default must avoid downtime. The nullability must match the integrity you want.
Start with the exact definition. If you need an integer, choose the smallest type that holds the range. If you need text, decide on length or encoding. Consider how existing rows will populate this field. Backfill plans matter.