"If it hurts, do it more often, and bring the pain forward."
These words of advice came from Jez Humble, Build and Release Principal at ThoughtWorks Studios, in describing the agile software development concept of continuous delivery. "If pain is releasing software, then release all the time. This will fundamentally change the way you work." Developers by nature want to go fast, and to them, that means writing code. "That's an illusion," Humble said as part of the "Leaders of Agile" virtual conference hosted today by SD Times and emceed by agile thought leader Kent Beck. "They do not take into account the weeks of stabilizing and integrating necessary to get things to work properly."

Humble offered up a number of steps to achieve continuous delivery. First, he said, create a reliable, repeatable process for releasing software. Make sure everything is automated, and keep everything -- tools, dependencies, deployment scripts and everything else you need to recreate your system -- in version control. Look to continually improve the software and build quality in during the "deployment pipeline," which is a model of your process that can be as simple as build-test-deploy or include additional steps for different kinds of testing. (The deployment pipeline, he said, gives you fast feedback during the early steps and increased confidence that the build is correct as you go through the later steps.) And keep in mind that everyone on the team is responsible for software delivery.