- Engineers: Commit code and it will be live in production in ~8 minutes, automatically
- Ops: Deliver same-day fixes for customer issues
- Sales: Receive quick turn-around on pulling metrics and one-offs
- Product: See that every day we're better than the day before
Other projects I've worked on have had stable release cycles of one per month or better. That's impressive, especially for core infrastructure. However, over time I learned something about myself: The wait between writing code and releasing it to the world is a huge drain on my morale and motivation. I think this is part of why I focused on open source projects, where I could release whenever just by committing code.
Continuous deployment eliminates the wait. Using continuous deployment has been the most liberating experience I've had as a professional software engineer. Every day when I arrive at work I know that I can ship some code, however minor, the very same day. It's like a persistent remedy for burnout. I cannot recommend it enough.
The weird, unanticipated side-effect is that my days have gained an aspect of performance. Every day is game day. But unlike when I carried the pager for App Engine, this as-it-happens problem solving is product-oriented, not just firefighting: What are our customers saying? What new behaviors do we see in our analytics? How well are new features working? It makes programming feel more whole.