Accelerate | 24 key capabilities that drive improvements in software delivery

Accelerate | 24 key capabilities that drive improvements in software delivery

CONTINUOUS DELIVERY CAPABILITIES

1. Use version control for all production artifacts (GIT).

2. Automate your deployment process and do not require manual intervention. 

3. Implement continuous integration. CI is the first step towards continuous delivery. This is a development practice where code is regularly checked in, and each check-in triggers a set of quick tests to discover serious regressions, which developers fix immediately. The CI process creates canonical builds and packages that are ultimately deployed and released.

4. Use trunk-based development methods. Branches and forks having very short lifetimes (e.g., less than a day) before being merged into master

5. Implement test automation.

6. Support test data management. Test data requires careful maintenance, and test data management is becoming an increasingly important part of automated testing. Effective practices include having adequate data to run your test suite, the ability to acquire necessary data on demand, the ability to condition your test data in your pipeline, and the data not limiting the amount of tests you can run. We do caution, however, that teams should minimize, whenever possible, the amount of test data needed to run automated tests.

7. Shift left on security. Integrating security into the design and testing phases. This includes conducting security reviews of applications, including the infosec team in the design and demo process for applications, using preapproved security libraries and packages, and testing security features as a part of the automated testing suite.

8. Implement continuous delivery (CD). CD is a development practice where software is in a deployable state throughout its lifecycle, and the team prioritizes keeping the software in a deployable state over working on new features. Fast feedback on the quality and deployability of the system is available to all team

members, and when they get reports that the system isn’t deployable, fixes are made quickly. Finally, the system can be deployed to production or end users at any time, on demand.

ARCHITECTURE CAPABILITIES

9. Use a loosely coupled architecture (microservices). Allows your teams to work independently, without relying on other teams.

10. Architect for empowered teams.

PRODUCT AND PROCESS CAPABILITIES

11. Gather and implement customer feedback

12. Make the flow of work visible through the value stream. Visibility into the business, status of products and features. 

13. Work in small batches (in a week or less). 

14. Foster and enable team experimentation without requiring approval from outside of the team, which allows them to innovate quickly, specially combined with customer feedback. 

LEAN MANAGEMENT AND MONITORING CAPABILITIES

15. Have a lightweight change approval processes (peer review, pair programming or intrateam code)

16. Monitor across application and infrastructure to inform business decisions. Use data from application and infrastructure monitoring tools to take action and make business decisions.

17. Check system health proactively. 

18. Improve processes and manage work with work-in-process (WIP) limits

19. Visualize work to monitor quality and communicate throughout the team.

CULTURAL CAPABILITIES

20. Support a generative culture

21. Encourage and support learning.

22. Support and facilitate collaboration among teams.

23. Provide resources and tools that make work meaningful.

24. Support or embody transformational leadership: vision, intellectual stimulation, inspirational communication, supportive leadership, and personal recognition.

To view or add a comment, sign in

More articles by Clarolab

Others also viewed

Explore content categories