Key Capabilities to drive improvements in Software Delivery Performance

In their book, “Accelerate – The Science of Lean Software and DevOps, Building and Scaling High Technology Organizations”, Nicole Forsgren, Jez Humble and Gene Kim came out with 24 key capabilities that drive improvements in software delivery performance.  This is another great book on DevOps -following ‘The Phoenix Project’ and and “The DevOps Handbook”.

These capabilities are classified into five categories

  1. Continuous Delivery
  2. Architecture
  3. Product and Process
  4. Lean Management and Monitoring
  5. Cultural
  • Continuous Delivery Capabilities
    1. Use version control for all production artifacts – Use of version control systems such as GitHub or Subversion for all production artifacts – application code, application configurations, system configurations, scripts for automating build etc.
    2. Automate your deployment process – Deployment automation is the degree to which deployments are fully automated and do not require manual intervention
    3. Implement Continuous Integration (CI) – CI is the first step towards continuous delivery. Code is regularly checked in, each check-in triggers a set of tests to discover serious regressions which are fixed immediately. The CI process creates canonical builds and packages that would be deployed and released.
    4. Use Trunk Based development – Trunk based development is a predictor of high performance in software delivery. It is characterized by less than three active branches in the code repository; branches and forks having short lifetimes and application teams never having “code lock” periods where no one can check in code or do pull requests due to merging conflicts, code freezes or stabilization phases.
    5. Implement test automation – Test automation is a practice where software tests are run automatically continuously through out the development process. Developers should be primarily responsible for creation and maintenance of automated test suites.
    6. Support test data management – Test data requires careful maintenance and effective practices include having adequate data to run your test suite, ability to acquire necessary data on demand, ability to condition your test data and data not limiting to the amount of tests you run.
    7. Shift left on security – Integrating security into the design and testing phases of the software development process is key to driving IT performance. This includes conducting security reviews of applications, using preapproved security libraries and packages and testing security features.
    8. Implement Continuous Delivery (CD) – CD is a development practice where software is in a deployable state through out its lifecycle and the team prioritizes keeping the software in a deployable state over working on new features.  The system can be deployed to production at any time, on demand.
  • Architecture Capabilities
  1. Use a loosely coupled architecture – This affects the extent to which a team can test and deploy their applications on demand without requiring orchestration with other services. Having a loosely couple architecture allows teams to work independently and enable them to work quickly and deliver value to the organization.
  2. Architect for empowered teams – Architects should collaborate closely with their users, engineers who build and operate the system and help them achieve better outcomes and provide them with the tools and technologies that will enable the outcomes.  
  • Product and Process Capabilities
  1. Gather and implement customer feedback – Organizations actively and regularly seeking customer feedback and incorporating them into the design of their products is key to better software delivery performance
  2. Make flow of work visible through the value stream – Teams should have a good understanding of and visibility into the flow of work from the business through to the end user.
  3. Work in small batches – Having work decomposed into small features allow for rapid development – this enables shorter lead times and faster feedback loops
  4. Foster and enable team experimentation – This is the ability of developers to try out new ideas and create and update specifications during the development process without seeking approval from outside the team.
  • Lean Management and Monitoring capabilities
  1. Have a lightweight change approval process – Having a light weight change approval process based on peer review produces superior IT performance than using external change approval boards
  2. Monitor across application and infrastructure to inform business decisions – Use data from application and infrastructure monitoring tools to take action and make business decisions
  3. Check System Health proactively – Monitor system health, using threshold and rate of change warnings to enable teams to preemptively detect and mitigate problems
  4. Improve processes and manage with WIP limits – Used effectively, WIP limits drives process improvement, increases throughput and makes constraints visble in the system
  5. Visualize work to monitor quality and communicate – Visualizing work has been shown to contribute to improved software delivery performance
  • Cultural capabilities
  1. Support a generative culture (Westrum Model) – this entails good information flow, high cooperation and trust and a conscious enquiry.
  2. Encourage and support learning – Learning culture is essential for continued progress and improvement. How the organizations treats learning is key – as a cost or as an investment.
  3. Support and encourage collaboration between teams – This reflects how well teams, which have traditionally been siloed, interact in development, operations and information security.
  4. Provide resources and tools to make work meaningful – being empowered to exercise skills and judgement in doing the work which is meaningful and challenging.
  5. Support or embody transformational leadership – Transformational leadership supports and amplifies the technical and process work that is so essential in DevOps. This consists of vision, intellectual stimulation, inspirational communication, supportive leadership and personal recognition.

***********************************XXXXXXXXXXXXXX************************************

 

Brief Summary of “Making Work Visible – Exposing Time Theft to Optimize Work and Flow”

Dominica Degrandis’s book “Making Work Visible – Exposing Time Theft to Optimize Work and Flow” dwelves on not just making work visible but identifies the five time thieves that prevent you from getting work done – namely, Too much WIP, Unknown Dependencies, Unplanned Work, Conflicting Priorities and Neglected Work. Each of these “time thieves” are dealt with in depth and  also looks into  ways and means to tackle each of them.  

Here is a brief summary of the book –>Brief Summary of Making Work Visible

Brief Summary of The DevOps Handbook

The DevOps Handbook is a truly comprehensive book on DevOps.  It covers the theory principles and practices to start off a DevOps initiative.  The book covers the whole gamut of DevOps from the cultural aspects, flow, feedback, continuous improvement, value streams, the foundations for the Deployment pipeline automated testing, Continuous Integration, , Continuous delivery and deployment, the popular tools and metrics collected, right up to integration security and compliance as part of regular work.   The case studies from Netflix, Target, Etsy, Google and others gives us a clear picture of how the concepts and principles are put into practise.

The book complements ‘The Phoenix project’ and “Lean Enterprise” in terms of content related to DevOps.

Here is a brief summary of the book  -> the-devops-handbook-summary