Developing Software Engineering Strategies
Since the previous year, I’ve been studying and practicing the development of software engineering strategies as part of my development into senior engineering leadership roles.
My first introduction to this topic was through the excellent book An Elegant Puzzle by Will Larson (CTO at Carta).
In essence, a software engineering strategy consists of the following components:
- Diagnosis: The theory describing the challenge at hand, including its factors and constraints, along with a problem statement;
- Guiding Policies: These are the policies that will be applied to address the challenge. They describe the general approach taken to tackle the problem;
- Actions: These are the specific steps implemented to address the challenge.
From my experience, I have found software engineering strategies useful in two contexts:
- Writing guides to help teams tackle specific operational challenges: I have explored this in Writing Guides to Support Your Teams. The diagnosis usually identifies one specific challenge, and the guiding policies and actions are tailored to address that challenge;
- Developing mid or long-term software engineering strategies for my team or business unit: In this context, the strategy explores multiple challenges, identifies the guiding policies and actions to tackle them, and aims to inspire and guide leaders and individual contributors in their work towards common goals.
I have also been writing a dedicated page called Software Engineering Strategy on this website, where I document the key learnings, insights, and resources that I find useful in my journey to deeply understand this topic.
I hope you find it helpful as well. Please feel free to reach out if you have any questions or comments about software engineering strategies.