Software Engineering Capability Taxonomy
2 min read

Building blocks for software engineering organizations

In the last few years, I’ve been closely involved with various Software Development LifeCycles (SDLC), DevOps and Agile transformations, and internal Developer Enablement and Developer Relationship (DevRel) teams.

One of the things that has come up every time, is the need for a good Software Engineering Capability Taxonomy. A list of competences and supporting technology an organization needs to build modern and secure software in a consistent and efficient way.

After it’s compiled, this taxonomy can then be used to identify gaps, dependencies, duplication and required improvements. It’s the starting point to have a more structured conversation around DevOps tooling, systems, processes and training.

There are a lot of sources online that give you (partial) taxonomies:

Yet, I haven’t been able to find a list that is exhaustive, free and easy to consume - I’ve tried googling more than once! As a result, I’ve started compiling my own taxonomy as a mindmap in SimpleMind.

High-level software capability taxonomy, children collapsed
Enlarge

High-level software capability taxonomy, children collapsed

While my taxonomy is far from exhaustive, I find it extremely useful and refer to it at least once a week. As you can see, I also try to list out a number of specific examples of software and systems that implement each capability.

Partially expanded Observability sub-tree
Enlarge

Partially expanded Observability sub-tree

I’ve uploaded the full taxonomy on github. Here are quick links to the latest version in OPML (to import in most mindmapping tools) and TXT.

Software-Development.opml

Software-Development.txt