Can someone from a non-programming background successfully manage or lead a team of programmers?
It's a good question. Of course, ultimately if you go up a few layers in an organization, the person at the top is invariably not from a programming background. I'm talking about direct leaders of the development team; the technical lead, the development manager, the scrum-master.
Over the years I've been managed by various different people from different backgrounds with varying success. I've also managed or led various development teams. Here's my general views on this:
Projects tend to fail, over-run or be massively underestimated in occasions when someone from a non-programming background leads a project. The following issues commonly arise:
- The development team aren't involved in the work estimation and so it is hugely under-estimated.
- Requirements are not communicated effectively. Typically the initial requirement is paraphrased to the development team with key points which may hugely affect design omitted. This leads to rework or worse starting again.
- The lead may try to impose a bad design onto the development team, and due to their position the development team have to persevere with it.
|Great example of bad design from Donald Norman's book - a great book for UI design. (Image from Amazon)|
Some of the points above can be counter-acted with a strong development team - a team who are not scared to question decisions coming from the top. Additionally, agile teams can fair better where the development team are getting far more exposure to the end customer and the end requirements.
Another thing which can commonly come up is that if the person leading the team does not have a good technical background, the development team can run over the top of them as they always delegate decisions to the team. I find good teams have strong leaders who will have a good technical vision but who will delegate some (or a lot) of decisions to the team. However, ultimately they have a vision and can quickly determine if the project is going off track.
In conclusion, I think that having a development team led by someone not from a programming background is extremely dangerous, and from experience very rarely works. Adopting agile methodologies can help with mitigating some of the problems above, and strong minded development teams can overcome hurdles and ensure projects stay on track.
I appreciate this is a generalisation, a bit controversial and every case is different so I'd like to hear your experiences - if you want to share please add a comment.