Accelerate - by Nicole Forsgren, Jez Humble und Gene Kim
ISBN-13: 978-1942788331
"Accelerate" dives into the dynamics of high-performing software development teams. The book explores the intersection of technology and management, and how they combine to drive productivity and innovation. It offers a compelling look at how high-performing teams operate, drawing on years of research and data. Forsgren's insights help to understand the key practices that make for successful software development in the modern era.
MY NOTES
To remain competitive and excel in the market, organizations must accelerate: delivery of goods and services to delight their customers, engagement with the market to detect and understand customer demand, anticipation of compliance and regulatory changes that impact their systems, response to potential risks such as security threats or changes in the economy.
At the heart of this acceleration is software.
Our research has uncovered 24 key capabilities that drive improvements in software delivery performance.
CONTINUOUS DELIVERY CAPABILITIES
- Use version control for all production artifacts.
- Automate your deployment process.
- Implement continuous integration.
- Use trunk-based development methods.
- Implement test automation.
- Support test data management.
- Shift left on security.
- Implement continuous delivery (CD).
ARCHITECTURE CAPABILITIES
- Use a loosely coupled architecture.
- Architect for empowered teams.
PRODUCT AND PROCESS CAPABILITIES
- Gather and implement customer feedback.
- Make the flow of work visible through the value stream..
- Work in small batches.
- Foster and enable team experimentation.
LEAN MANAGEMENT AND MONITORING CAPABILITIES
- Have a lightweight change approval processes.
- Monitor across application and infrastructure to inform business decisions.
- Check system health proactively.
- Improve processes and manage work with work-in-process (WIP) limits.
- Visualize work to monitor quality and communicate throughout the team.
CULTURAL CAPABILITIES
- Support a generative culture (as outlined by Westrum).
- Encourage and support learning.
- Support and facilitate collaboration among teams.
- Provide resources and tools that make work meaningful.
- Support or embody transformational leadership.
FOCUS ON CAPABILITIES, NOT MATURITY[1].
A recent Forrester (Stroud et al. 2017) report found that 31% of the industry is not using practices and principles that are widely considered to be necessary for accelerating technology transformations such as continuous integration and continuous delivery, Lean practices, and a collaborative culture.Many Agile adoptions have treated technical practices as secondary compared to the management and team practices that some Agile frameworks emphasize. Our research shows that technical practices play a vital role in achieving these outcomes.
We find that continuous delivery practices do in fact have a measurable impact on these outcomes.
There are five key principles at the heart of continuous delivery:
- build quality in
- work in small batches
- computers perform repetitive tasks; people solve problems
- pursue continuous improvement
- everyone is responsible
Continuous delivery improves both delivery performance and quality, and also helps improve culture and reduce burnout and deployment pain.
MATURITY: It refers to a concept that classifies organizations or technologies based on a set scale or set of criteria to assess their level of development. These maturity models are often linear and suggest that a higher level of the model is always better.
A well-known model for assessing the maturity of processes and organizations is the Capability Maturity Model Integration (CMMI). CMMI is used to evaluate the process maturity of organizations, particularly in the area of software development, though it has found application in other areas, including hardware development and service processes.
The CMMI model divides process maturity into five levels:
- Initial: Processes are often ad hoc and chaotic. The organization lacks a stable environment for developing and maintaining products.
- Managed: Projects are planned, executed, measured, and controlled, but often on a reactive basis.
- Defined: The organization has established a set of standardized processes that can be guided and improved across projects.
- Quantitatively Managed: The organization uses quantitative data to improve process efficiency and achieve higher predictability.
- Optimizing: The organization focuses on continuous process improvement and can rapidly adapt to new requirements and changes.
Each level builds on the capabilities established at previous levels, aiming to achieve higher maturity levels that lead to better business outcomes, higher product quality, and more efficient processes. CMMI is often used as a framework for continuous improvement within organizations.
The authors critique this perspective because it implies there is a single, best path that all organizations should follow to be successful. Instead, they emphasize the importance of building and improving capabilities specific to an organization's unique requirements and goals. The idea is to focus on what enables an organization to deliver quickly, adapt, and learn, rather than trying to achieve a certain level in a maturity model.