Stop Sinking Engineering Teams
I’ve been lucky (or crazy) enough to manage both marketing and engineering teams. My background and real home base is in marketing and product development, but I have managed and coached a few different engineering teams. My conclusion:
We are mismanaging our engineering teams
Think back to why someone opted to study engineering. Almost all of them got hooked at some point on the challenge of building cool new things. Whether it was rockets or an app, there was some spark inspired by curiosity and a desire to make something. This spark is exactly what every team really wants.
Unfortunately, way too many of our current management processes drive out creativity and treat engineers like assembly line workers. When engineers build to requirements and don’t use their creativity we get no inspiration. CEOs then complain about “mehh” results and start looking for other solutions--often expensive outsourcing.
For a lot of teams the agile/scrum process has become part of the problem. Drowning in a never ending line of Jira tickets is disheartening and deadening. So how do we harness the creativity of our teams?
- Frame the problem/challenge clearly. Everyone loves working on a good problem. A clear description of a problem that includes data and stories is a lot more exciting than a list of requirements.
- Use Agile to empower the team: Most teams use some variation of agile/scrum, but way too often it is really just a list of to dos for the next 2 weeks. Empower your team to create the backlog and manage it.
- Trust: You hired smart folks. Trust that they will do the right things.
- Remove bad eggs: There are lots of folks with great skills who don’t gel with the rest of the team. Don’t be too hasty, but be willing to make the hard decision.
- Don’t go wild on KPIs: Keep to the basics that help teams improve. I like “percent of committed tasks completed,” “team velocity,” and “critical bugs.” Much more than that and you are probably drowning in noisy/meaningless data.
- Ask lots of questions: Keep asking questions and making sure you are pushing folks for interesting solutions. The corollary is avoid pontificating and trying to be the smartest person in the room.
- Make sure they are swinging for big changes: Even for a rewrite on an existing code base, make sure folks are empowered to make changes.
- Reserve time for learning: There is always something new coming out. Make sure your folks have time to learn it.
- Celebrate Successes: Everyone has things they are proud of. Celebrate them.
Bottom line: Software engineering is an exciting field with lots of great opportunities. Let’s not kill it with bad management.
Software development is not a rote technical task where process or methodology can compensate for lack of strategic direction & communication. I've seen countless organizations look to "Agile" as the silver bullet to solve all of their software delivery problems when it really comes down to leadership and people. Rigid process is the death of good software. It's important to have structure but only if you allow your teams the flexibility to know when to bend the rules for the greater good. Hire well and trust your teams to do their jobs.