The Engineering Hierarchy of Needs: Balancing Urgency with Importance
Myles Henaghan
Lifting the standard of software engineering in New Zealand, Australia and beyond
In software engineering, urgent issues often eclipse important ones. Here's how to realign your team's priorities for sustainable success.
??vs?? Fix the build or patch the security vulnerability? Before asking teams about security and cost reduction work, first enquire about the performance of their build pipeline and local dev environment.
At Wires Uncrossed, we believe there is a clear hierarchy of needs within an Engineering team. You see this play out daily in teams' decisions on what to work on. Lower-level, basic needs will always trump higher-order responsibilities. So when leaders need teams to work on reliability or governance, first acknowledge that lower-level pain points will take precedence and then proceed accordingly. We have been modelling a hierarchy of engineering needs for several years and want to share a high-level overview of how we apply it.
The Daily Grind: Immediate vs Important
Imagine you're Mika, a team lead in a 10-year-old tech company.?
You're two weeks from a delivery milestone, a month behind what was promised to customers. You're wondering about a cloud cost alert notification on the way to work. Humm, I must look into that.?
Mika's week reveals a recurring theme in engineering—urgent issues often derail focus from longer-term but increasingly essential objectives.
Monday morning
Action >> Must fix the database.
Tuesday
Action >> Fix the build
Wednesday
Action >> Mitigate the vulnerability
领英推荐
Thursday
Action >> Patch the template
Friday
Action >> Take care of the grads. The $ can wait till Monday ( or maybe Tuesday ??)
We could go on, but you get the idea. Just like in our daily lives, when we get sick or hungry, in a matter of hours, that becomes the most critical priority for us. Forget about everything else. And so it is with software teams. If we expect teams to proactively manage reliability, security and all the other things, we should first understand how well their delivery system meets their basic needs.
The Solution: A Hierarchy of Needs
We model these needs in our?Hierarchy of Engineering Needs, which you can apply in various ways to diagnose and prioritise initiatives across Engineering experience.?The model has three layers of detail, starting with the five primary levels of need:
Each area is then broken down into individual needs (e.g. compute, quality engineering) with an associated definition and examples. Throughout, we avoid mentioning specific technologies and instead focus on the need a tool or technology should address.?
Conclusion
To sustainably lift the maturity and capability of a software delivery system, we must acknowledge that immediate needs will always trump important ones. For example, we may first need to support teams on their deployment pipeline performance to advance our templates or golden paths.?
All models are wrong, some are useful - George Box
Useful to you?
The model is beneficial to us in having to understand multiple and varied delivery systems, but take a look yourself and let me know your thoughts on how you might apply it.
Really like this Myles, a really easy to understand and useful model.
Software Engineering and Team Productivity | Leadership Coaching | Principal Consultant | Director
1 年Great article Myles, the model is really useful. Question for you, how does ability of a team to meet a 'need' play in to the model? Is there a level of maturity or fluency a team needs to reach (to say it is met) before moving on to focus on a higher order need?
Solution Architect at First American
1 年Informative post Myles Henaghan! Thank you for sharing.
Technology Leader
1 年This is great Myles, a fantastic tool for visualisation and communication of how meeting each layer of needs unlocks the layers above.