Improve it! Running an Effective Software Team
How can I make my team(s) more productive?
That’s the constant question that engineering managers ask themselves. Managing a group of people working in a complex environment feels more like an art than a science. How much work can we do? What staffing decisions should I be making? How can I improve quality and deliver features at the same time?
All these questions are also made within the context of managing people, which makes it more complicated. Making a team effective means keeping people fulfilled at their job. How can an engineering manager strike a balance between company, team and individual needs? A colleague once said that “a manager gets all the oddly shaped problems to deal with”, and that certainly feels correct when doing it.
While all the above are real issues, I believe we have made it harder than it should be. In the past few decades, the technology industry has shifted from a project-centric view, in times to the detriment of people, to a people-centric view, leaving behind a significant amount of knowledge.
We shifted from having project managers, who would have the systemic view of a project as their main skill, to engineering managers, who are people-focused and often haven’t been exposed to systems thinking as a skill. That can be observed by the standard tech career ladder, where engineers move directly into management, sometimes without much training apart from coaching on how to run 1:1 meetings.
In the next few weeks I will be writing on how we got to this situation, and how to bring systems thinking into team management. Topics I’ll be exploring include:
- Why is it important? Modern engineering management practices make it hard to deliver. It’s important to understand why.
- Why does the process matter? Deming, Lean Production, Agile and how we got here in the first place.
- How to balance people and team needs — Individuals vs the group is a false dichotomy that stops a team from improving their potential.
- How to focus on quality and speed — This problem has been solved in other industries, and we can apply the same thinking to software.
- How to make better decisions — We use metrics in all parts of technology, apart from our work. We can use them to make more informed decisions.
Ultimately, how to create an effective engineering team, where people are fulfilled and work gets done. I definitely don’t have all the answers but can share what has worked well for me in the past. If this sounds interesting to you or you have more questions, leave a like or a comment. Would love to understand questions people have and lessons I could learn from others.
Don’t get me wrong, leading software delivery teams will always be challenging. But bringing systems, process and project management principles into it will make it significantly more manageable.