Creating a new column in a database table is not complex in theory. In production, under real traffic, it can break deployments, slow queries, and lock write operations. The difference between clean execution and chaos depends on how you plan and execute the change.
First, audit the table. Know its size, indexes, foreign keys, and read/write patterns. Adding a new column to a table with millions of rows on a live system can cause long-running locks. If your database supports it, use an online schema change tool like gh-ost or pt-online-schema-change. For Postgres, ADD COLUMN is usually fast for nullable columns without a default, but defaults on large tables must be backfilled in chunks.
Second, design the new column with precision. Specify correct data types and constraints. Avoid unnecessary defaults that could cause performance hits. Normalize where possible, but measure the trade-offs in query complexity. Consider whether the column belongs in the primary table or a related table to reduce row size and I/O.