Andy Singleton, who is the CEO of Assembla where they help build software faster with less stress, has written a book called Unblock. In this book, he details how we can use the Continuous Agile Model to develop new things faster. Teams that release faster are innovating more often and improving rapidly. Andy’s company discovered these techniques as they grew and became more innovative themselves.
His company was using Scrum to do development initially. As the company grew they saw how Scrum didn’t effectively scale for larger teams and rapid releases. They started to work on releasing more often. They began to break things up and eliminate large releases. They created a process of continuous agile and non-blocking development.
Using Lean principles, his company began to focus on one thing at a time. This gave people the ability to pull what features were ready. They created an automated environment where nothing was hidden in manual commands. Everything was visible to the whole team and in repeatable scripts.
One key that Andy shares are that they measure what is being used. They will only work on the features being used instead of taking the time to work on the unused portion. Assembla is constantly trying new things and measuring their usage. If something is not used it is removed.
Once you have the measurements in place you can put out frequent releases and collect measurement data to guide your future. The principle of frequent releases was important for Assembla to gain competitive advantage. Before this change, they were lagging behind their competitors.
Assembla also leveraged automation in the build, test, and deploy cycles to make these frequent releases possible. They ask the questions, “Where can we use machines more?” and “What can we automate?” An analogy Andy uses is if we look at the first coal mines they used men and shovels. Today coal mines are using great big machines that mine the coal at an efficient rate. Companies today are leading a similar change in the software development process.
Andy points out how we can add layers of testing to increase quality in our releases, or to speed up the frequency of releases you can remove layers. Unit Testing, Code review, and Human Quality Assurance are just a few examples he shares of test layers. He highlights the company Edmunds.com that uses 9 layers of testing. They are not as highly concerned with test coverage, but more focused on frequency.
Developer’s responsible for Quality
At Assembla, they make the developers responsible for quality and decide when a feature is ready for release. This creates an onus on the developer that gets them more engaged in code reviews and testing. By making quality everyone’s responsibility, you get the developers more engaged. The Quality Assurance staff becomes more of a consultant that aids in testing strategy.
Similar to Spotify’s feature toggles, at Assembla they use feature switches that give them the ability to hide functionality until it is ready to reveal. Andy talks about separating release from launch. As you work on a new feature it is hidden in the numerous releases that come about over time.
From Batch to Continuous
The delivery process of releases changes from the big batch release to the continuous and frequent releases of changes. Enhancements are put out and measured to see what value they bring and changed or removed depending on the metrics.