Code

Making a Difference

How to have impact when the way forward is unclear

March 26, 2024

When things are broken, it’s easy to know what to do. Less so when things seem to be ticking along.

One useful source I’ve found is the 24 capabilities described in Accelerate. Benchmark your org against them, see what’s deficient and get to work.

Often the actual issue is a few degrees of separation away from the capability. For example capability #14 is “Foster and enable team experimentation”:

Team experimentation is the ability of developers to try out new ideas and create and update specifications during the development process, without requiring approval from outside of the team, which allows them to innovate quickly and create value.

— Accelerate, Forsgren, Humble and Kim

When I benchmarked my workplace, I found that whilst we did have AB test infrastructure, running an experiment required a series of approvals from the higher-ups. When I started asking about that, I found they didn’t trust teams to design sound experiments.

Ultimately the real problem was that our products did not have effective KPIs, so both product and engineering were unclear on how to improve.

So whilst the capabilities are a useful starting point, see them as threads to pull on to get to the underlying issues. This is especially true in successful companies where much of the low hanging fruit has already been picked.

Let’s say your organization has already implemented capability #3, “Continuous Integration” and you have good unit test coverage. Have you eliminated all runtime exceptions? Probably not. Classify them and figure out how to catch them at build time.