Yesterday I attended Josh Kerievsky’s Always Shippable tutorial at the Agile Vancouver conference. Josh is a sharp guy and went over how his company has implemented Continuous Delivery in the past 6 months.
Josh explained that Industrial Logic has reduced their time for a code commit to the source repository to move into production to about 1 hour and that this production push is entirely automated. That’s impressive because, as Josh said, it lets you get that value into the hands of your customers right away.
There were two big takeaways for me: First, you need to work in an organization where the culture will support your team’s efforts to improve their process. You also need a solid foundation of tests which you can rely on to catch bugs and regressions since you don’t have a QA step in between your code commit and that code being pushed to production. Josh mentioned they were doing TDD, which I can imagine is the only way you can keep up the high level of test coverage you’d need to go to Continuous Delivery.
Test driven development is something I’ve messed with in the past but it’s never become part my daily workflow. Now that I’m playing with Rails I’m taking another crack at it since Rails has testing and BDD baked right in with Rspec and Test::Unit. Given I’d like to one day be deploying applications in a Continuous Delivery fashion I need to get on top of TDD.