#Insanity Ep4: Max Out Sweat (DevOps Technical Capabilities)
Day 3: You have completed Max Out Cardio and Max Out Power – you are either dreading this or you are raring to go. Max Out Cardio gave you your benchmark and Max Out Power got you your basic moves, rhythms and metrics.
Now it’s time to sweat!
Max Out Sweat and Technical Acceleration
Max Out Sweat is intensive – Multiple consecutive exercises interspersed with a 30 sec rest every 5 mins with complete focus on making you sweat. This is an all-body workout and pushes your breathing and heart rate to their limits. A test of stamina and speed.
As part of the DevOpsGroup Discovery process, we test your organisations equivalent of stamina and speed; stability and throughput. According to Accelerate, its the combination of both of these that predicates performance. Often one gives way for another. If you go fast, the stability of your production service is impacted and customer experience takes a hit; if you are stable, changes take too long and your competitiveness takes a hit. This is extensively covered in the Accelerate State of DevOps 2018.
Therefore, your organisation’s technical capabilities are instrumental to making sure you have the right combination of stability and speed. the Process, Measurement and Culture capabilities help you to organise the way you do, measure and improve work and on their own can make a significant difference to stability and speed – but to accelerate past the competition, we need to exploit technical capabilities to go faster, safer.
In the State of DevOps Report 2018, the below “J-Curve” was defined which shows the typical journey an organisation may take when introducing new technical capabilities, particularly automation. In considering your transformation, the following curve is worth taking into account.
Note: On their own, technical capabilities will not solve your business problems. In Lean Thinking, the fastest way to deliver something is to do it right first time – taking time to identify value, prioritise this and deliver this into environments with low organisation and technical debt is essential – otherwise you will just make your slow sh*t go faster. Do the right things, then do them quickly! Accelerate State of DevOps 2018 emphasises the importance of Lean Product Management which encompasses; breaking work down into small batches, responding to customer feedback and allowing the team to create and change specifications – all with an aim of delivering the right value to the customer.
"Don't run from the work, feel the work" Shaun T
In a previous article, I shared how the DevOpsGroup Discovery Process works and that as part of the partnership with DORA, the following capabilities are understood; People, Measurement, Technical and Culture.
Max Out Sweat brings into play Technical capabilities predominantly. Shaun T prepares you make the most of every second of your work out and more importantly gets you thinking about how to be the best you can be.
This includes practices that are important components of the continuous delivery paradigm, such as: the use of version control, test automation, deployment automation, trunk-based development, and shifting left on security.
- Version control: Version control is the use of a version control system, such as Git or Subversion, for all production artefacts, including application code, application configurations, system configurations, and scripts for automating build and configuration of the environment.
- Deployment automation: Deployment automation reports the degree to which deployments are fully automated and do not require manual intervention.
- Continuous integration: 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 x immediately. The CI process creates canonical builds and packages that are ultimately deployed and released.
- Trunk-based development: Trunk-based development has been shown to be a predictor of high performance in software development and delivery. It is characterised by fewer than three active branches in a code repository; branches and forks with very short lifetimes (e.g., less than a day) before being merged into master; and application teams rarely or never having “code lock” periods when no one can check in code or do pull requests due to merging conflicts, code freezes, or stabilisation phases.
- Test automation: Test automation is a practice where software tests are run automatically (not manually) continuously throughout the development process. Effective test suites are reliable – that is, tests and real failures and only pass releasable code. It should be noted that developers should be primarily responsible for creation and maintenance of automated test suites.
- Loosely coupled architecture: A loosely coupled, well encapsulated architecture drives software delivery performance. In a loosely coupled architecture, it’s easy to modify or replace any individual component or service without having to make corresponding changes to the services or components that depend on it. In an organisational sense, teams can be described as loosely coupled if they don’t depend upon other teams to complete their work. This means that teams can test, deploy, and change their systems without depending on other teams for additional work, resources, or approvals, and with less back-and-forth communication. This means both the architecture and teams are loosely coupled.
- Empowered teams: Our research shows that teams that can decide which tools they use do better at continuous delivery and, in turn, drive better software development and delivery performance. No one knows better than practitioners what they need to be effective.
- 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 minimise the amount of test data needed to run automated tests whenever possible.
- Security: Integrating security into the design and testing of the software development process is key to driving IT performance. This includes conducting security review for applications, including the Info Sec team in the design and demo process for applications, using pre-approved security libraries and packages, and testing security features as a part of the automated testing suite.
Accelerate State of DevOps Report 2018
Accelerate State of DevOps Report 2018 through its research has defined a number of relationships between technical capabilities and organisational performance. In 2018, new additions include Continuous Testing, Monitoring and Observability, Database and Security are showing greater impact on Continuous Delivery. Combined with Cloud Infrastructure, Availability, Software Delivery Performance and Organisational Culture, Deployment Pain and Burnout is reduced and Organisational Performance is improved:
In Max Out Sweat, you need to think of your body as a total systems and push it to the limits making sure that your whole system is stable whilst going fast – safety and speed. As you practice the moves over the weeks, you will work harder and fasters as you master the moves, your heart and lungs grow stronger and as you muscle systems tone and use the oxygen and nutrients more effectively.
In you technology stack and your pipeline, you need to think about the whole system; technical debt, version control, deployment automation, continuous integration, trunk based development, test automation, loosely coupled architecture, empowered teams test data management and security. Thinking of the whole chain of events from building new value to delivering this to where the value is consumed requires all of the above to be taken into consideration.
Good engineering practices together with automation and orchestration capabilities will improve the stability of your production services whilst improving the speed of deliver of new features. Therefore, both improving customer experience AND competitiveness.
More in this series:
- #Insanity Ep1: Insanity Max 30 (DevOps: Stability AND Throughput)
- #Insanity Ep2: Max Out Cardio (DevOps Performance Benchmarking)
- #Insanity Ep3: Max Out Power (DevOps Processes and Measurement)
- #Insanity Ep4: Max Out Sweat (DevOps Technical Capabilities)
- #Insanity Ep5: Max Out Strength (DevOps Culture)
- #Insanity Ep6: Friday Night Fight (Scale)