In Part 1 we covered the basic concepts of what DevOps is. Now, these articles were inspired after finishing the book Accelerate, The Science of Lean Software and DevOps by Gene Kim, Jez Humble, and Nicole Forsgren.
From the research of the State Of DevOps, they have learnt there are capabilities, as enablers, to build scaling high performance tech organisations. And they grouped them into 5 categories.:
CONTINUOUS DELIVERY capabilities:
- Use Version Control, for all your production artefacts. Seriously invest in your team, including admins, to learn about and use version control, forget about change sets!
- Automate your Deployment. To a degree that doesn’t require manual intervention. (Yes the Community Product team & others are working hard on API first mindset)
- Implement Continuous Integration. Yes this does differ from Continuous Delivery, the 2 things are often get bundled together as one; CI/CD. One does enable the other but they are not one of the same. Continuous integration is the first step towards Continuous Delivery, continuous Integration is where code is regularly checked in, and each check triggers a set of quick tests to discover serious regressions, which when found are fixed immediately.
- Keep Your Branching Strategy Simple. In your code repository (yes you need to sort the first item of the list first) you have a maximum of 3-5 branches, all branches or forks having a very short lifespan. Scratch orgs are a step to help us to get into that rhythm and check the code and move value along the delivery pipeline. They are ephemeral, a branch never usually exists after the pull request is merged.
- Implement Test Automation. So you have tests running automatically and continuously, test suites should be reliable and find real failures and pass only releasable code. More on this here.
- Support Test Data Management. This is going to need maintenance, so that you have a complete and relevant (yet minimal) set of test data that you can run across your delivery pipeline starting from scratch orgs, available on demand and so you can run/upload with a simple script.
- Shift Left on Security. Is not just development practices in mind, we need to embed infosec into our value delivery.
- Implement Continuous Delivery. Meaning that any development of your Salesforce is deployable, having a fast feedback loop on its quality and readiness. So that it can be deployed to users at anytime on demand.
- Use a Loosely Coupled Architecture. To give elasticity and flexibility to your solutions. Helping teams to work independently and quickly to deliver value.
- Architect to Empower Teams. The teams that chooses their tools do better at continuous delivery, by doing so they also do better at development and performance.
PRODUCT & PROCESS capabilities:
- Gather and Implement Customer Feedback. What’s the point of an application, feature, enhancement if its not used nor if it’s not fit for purpose. Go to market earlier, get feedback earlier, which then informs teams how to deliver what is really wanted.
- Make the Flow of Work Visible Through the Value Stream. Visualising the work in progress is key, and so is the flow of it, acting as an information radiator from inception to shipment.
- Work in Small Batches. Deliver in small chunks, which are integrated, tested, monitored and deployed (in hours, not months).
- Foster and Enable Team Experimentation. Try out new ideas, new tech, new ways, different solutions… apply scientific methods to the every day. Combat fear of failure by being part of the process, experimentation being intrinsic and therefore coming from within.
LEAN MANAGEMENT & MONITORING capabilities:
- Have a Lightweight Change Approval Process. Unsurprisingly Kim, Humble, and Forsgren found in their research that this (like peer reviews) outperforms what I call bureaucrazy.
- Monitor across Application & Infrastructure to Inform Business Decisions. No more gut feelings, use data and monitoring to work out the next steps.
- Check System Health Proactively. With automated checks of thresholds and rate-of-change to detect and mitigate.
- Improve Processes & Manage Work with Work-in-progress limits (WIP). Practice often used in the kanban framework, is to maximise throughput. As the value is in finished product not in the many things ‘in progress’.
- Visualise Work to Monitor Quality & Communicate throughout the Team. Again, information radiator superpowers on steroids.
- Support a Generative Culture. Their research found that the measure of Ron Westrum is predictive of performance & decreases burnout.
- Encourage & Support Learning. As an investment, and ongoing practice, not a one off nor at a cost.
- Support & Facilitate Collaboration among Teams. Together towards a common goal, rather than my bit your bit, my dept your dept, my role your role…
- Provide Resources & Tools that make Work Meaningful. Satisfaction on challenging and meaningful work, empowered to get involved and get better at what we do.
- Support Transformational Leadership. From the vision, inspirational comms, stimulate the intellect rather than top-down directives, focuses as an enabler.
Wow, that was also longer than expected! And there is so much more to unfold. Let’s leave it at this for now. Is there any particular item that resonates the most? Or any that you want to find out more about? Tell us!