Spencer Christensen Site Reliability Engineer

Code Freeze is dumb and here's why

If you work for a company that does web development and periodically they put a hold on all changes from being released, known as a "code freeze", then you are not alone. Several companies choose to do this especially around the holiday season (4th quarter, October - December). However, this is actually a poor choice and shows a lack of solving much deeper problems.
The main reasons for having a code freeze is to mitigate risk- to prevent a change from being released that takes the site down. And down time during the busy season is really bad! Right?!?!? So it is worth it to stop all changes (or severely limit them) during this time period. Right??!? It doesn't really matter that engineers will just have to find something to keep them busy until January (because their velocity of deploying changes will drop to zero).
There is more going on here that people are not discussing. The fact that they don't want to release during the busy season because they fear downtime means that they fear releasing. True? It means that releasing changes is too risky and they don't want to take the risk. Now we come to the heart of the matter- Why is releasing during the busy season too risky?
Fear (and risk) of releasing changes comes down to these main issues:
  1. Not enough planning (including deployment and rollback plans)
  2. Not enough testing, or not enough confidence in testing
  3. The release process itself is not stable or efficient enough
These are the problems that really need to be attacked instead of wasting time with a code freeze. If you properly plan releases you can mitigate risk. If changes are thoroughly tested then you will have confidence in the release and know what to expect. If your release process itself is reliable and easy then you should be able to release often without it being a burden or risky.
So here is the challenge- take this next code freeze time to focus on these problems. Make it a goal to make your releases as risk free as possible. Set a goal to release multiple times a day on your busiest day of the year. What do you need to do, what changes need to be made in order for you to do that? Now that is the direction you should be headed!
Code freeze is a symptom of being lazy and cowardly. Thinking it is not important enough to fix those three problems above is just ignoring the fact that your release process is holding your business hostage and will always hold you back until you wake up and fix it.