Closely related to releasing is the concept of continuous deployment. Jez Humble and David Farley discuss it in Continuous Delivery. This book puts the focus on implementing rapid build, test, and deployment automation and describes the deployment pipeline as an automated manifestation of getting software from version control into the hands of the users. These practices enable the team to rapidly build, package, test, and deploy applications in an iterative and effective way.
There are many lean practices that also help to improve the team's performance. Mary and Tom Poppendieck discuss seven principles that improve the performance of the team, including: eliminating waste, building quality into the code from the start, creating knowledge in the form of requirements that are amenable to feedback from the stakeholders and customers, deferring commitment to the last responsible moment, delivering functionality to the customer on a rapid basis, respecting people, and optimizing the whole value stream instead of focusing on just one part. The Poppendiecks' work was largely influenced by the early work done at Toyota and especially the work done by E. Edwards Demings, widely regarded as the father of quality management.
Agile focuses on Individuals and interactions over processes and tools (as described in the Agile Manifesto), but this does not mean that processes and tools are optional. We've discussed the importance of build, package, testing, and deployment automation, which is accomplished with the effective use of tools. Process maturity is also essential to consider when implementing agile. Scott Ambler defines the Agile Scaling Model (ASM) as a framework for the effective adoption and tailoring of agile practices to meet the needs of an agile team of any size. This is particularly important when agile needs to scale to support larger development efforts. The ASM distinguishes between three scaling categories:
- Core agile development methods are optimized for small, collocated, fairly straightforward teams.
- Disciplined agile delivery methods are self-organizing within an appropriate governance framework.
- Agility at scale focuses on disciplined agile delivery where one or more scaling factors are applicable.
Potential agile scaling factors include team size, geographic distribution of the team, regulatory compliance requirements, domain complexity, organizational distribution, technical complexity, organizational complexity, and enterprise discipline.