1 The Stairway to Heaven model
1.1 Traditional development
We define traditional development as an approach to software development characterized by slow cycles, e.g. yearly, waterfall-style interaction between product management, product development, system test and the customer and, finally, ad-hoc customer feedback processes that are not integrated well with the product development process. For a company interested in moving from traditional development to the next step, i.e. an agile R&D organization, there are a number of barriers to overcome. First, basic agile working processes and principles must be introduced and anchored in the organization. Second, large project groups need to be re-organized into smaller cross-functional teams. Finally, teams need to be organized around features rather than components. Usually, these barriers pose great challenges to companies due to current company culture as well as current work processes.
1.2 Agile R&D organization
The next step in the evolution is where product development, i.e. R&D organization, has adopted agile practices, but where product management and system verification still work according to the traditional development model. Although the first benefits are reaped, as there in principle always is a product ready for system test, there is no agile interaction with the rest of the organization and nor short feedback loops with the customer. To move from an agile R&D organization to the next step, i.e. continuous integration, companies need to develop a complete test suite including automated tests that are well integrated with system validation. Also, code needs to be checked into a main branch, i.e. the production line, to avoid having many branches that will add complexity and lead-time. Finally, code needs to be frequently checked in so that tests can be run immediately. In this way, the build process is shortened at the same time as quality is reviewed at an early stage.
1.3 Continuous integration
A company employing continuous integration has succeeded in establishing practices that allow for frequent integration of work, daily builds and fast commit of changes (automated builds and automated test). Continuous integration consists of encouraging developers to commit their changes as soon as possible to the main branch, in order to provide fast feedback”. The idea of automating test cases, builds, compilation, code coverage etc. allows teams to test and integrate their code on a daily basis which minimizes the time it takes from having an idea to actually implement the idea in software. At this point, both product development and system validation are working agile. To move from continuous integration to the next step, i.e. continuous deployment, companies need to involve not only the R&D units but also the product management units in the aim of delivering smaller features more frequently to customers. Also, in order to explore the opportunities with CD it is important to find a ‘lead customer’ who is interested in exploring this concept together with the development company. What is important is to find mechanisms to facilitate for fast customer feedback and mechanisms for translating this feedback into improved software functionality.
1.4 Continuous deployment
As the name implies, at this stage software functionality is deployed continuously, or at least frequently, at a customer site. This allows for continuous customer feedback, the ability to learn from customer usage data (rather than customer opinions) and to eliminate any work that doesn’t produce any value for the customer. At this point, product management as well as the customer is involved in a rapid, agile cycle of product development. To move further from continuous deployment to the final step, i.e. R&D as an ‘experiment system’, companies need to further utilize all their capacity to transform customer feedback to improved software functionality. In this, close customer relationships, an efficient R&D organization, and a product management organization that is well integrated in the agile practices are all important ingredients.
1.5 R&D as an ‘experiment system’
The final step on the “stairway to heaven” is where the entire R&D system responds and acts based on instant customer feedback and where actual deployment of software functionality is seen as a way of experimenting/testing what the customer needs etc. In this world, deployment of software is seen more as “a starting point for further tuning of functionality rather than delivery of the final product”. In SaaS/Web 2.0 solutions, many companies use A/B (or split) testing where customers use a randomly selected version for part of the solution. The data collected from these experiments forms the basis for a continuous improvement process.