Thursday, January 28, 2016

It takes an engineer to manage engineering

I’ve been meaning to write about the managers and Agile software development for a long time. And, apart from a few asides, I haven’t.

Why not?

Well partly because the topic is difficult, or rather large, but mostly I’ve not written it because I’m fearful of the flames that will come down on me.

You see I think managers have a role to play in Agile, but I am acutely aware that many people don’t.

So am I steeling myself, I’d love to come up with a “grand theory of management” but I’ve been trying to do that for years! I think instead I’d start blogging about my thoughts on management, and hopefully a grand unified theory of management will emerge.

Still, I expect many people will not agree with me - there is one of them I can see right now, he’s almost standing in front of me. The funny thing is, I was a professional programmer, I got interested in management as a way of ensuring I didn’t become the type of poor manager I’d worked for.

I took time out of my programming career to study management. What nobody told me was that if you study management programmers are more suspicious of you than ever, non-developer management types will always see you as a programmer (perhaps a jumped up programmer) and programmers who have fallen into management (those with no qualification and probably no time to study the subject) don’t trust you. Add in the fact that the academic community is split over management qualifications and it’s a right mess.

Unfortunately managers and programmer are locked in a decades old existential fight.

Many on the management side of IT dream of a world where programmers can be replaced by a software tool. That isn’t going to happen, all it does it move the point at which the programming happens. If you replace a programmer with a software tool the person who uses the tool is now a programmer - whether you call them a programmer, analyst, consultant or serf.

On the other side programmers dream about replacing managers with “self organizing teams.”

Both sides want victory by proving the other need not exist - at which point they will disappear in a puff of smoke. (Sometimes it seem to be the old worker-capitalist class struggle.)

My logic is this:

  • Management is a skill like any other, like writing Java or like writing test scripts
  • Many people who find themselves managing don’t have the skill and some don’t bother to learn
  • Consequently many “managers” aren’t actually very good at managing
  • While there are a few “natural” managers - like there are natural Java developers(?) - one can learn to be a better manager

The state of management in the IT world is so bad that frequently removing the manager altogether makes things a better than they were.

Oh, and the misuse of the word “manager” doesn’t help.

The thing is…

I’m an ex-programmer, I still consider myself an engineer (another controversy) and I also think management can play a useful role in engineering software development.

It took me 10 years to become a software engineer and I never stopped learning, 34 years later I’m still learning to be a better programmer.

I also hold an MBA degree, it took me a year of hard work to get it.

1 year, not 10 years and certainly not 34 years.

Actually, it has taken three generations to make me an engineer: my farther was an engineer, and my grandfather too. I was going down engine rooms when I was 7 or 8, I’ve watched engines being overhauled. I know what being in dry dock means and I know commercial considerations and engineering considerations are often in conflict, but engineers not people in suits make it work.

Being an engineer and a manager is not a contradiction. I know that because my farther and grandfather were Chief Engineers: they took years to obtain that rank, and when they did they still went down the engine room, they still mucked in sometimes, but they also spent a lot of time “managing” the work in the engine room and on deck.

You see: it takes an engineer to manage engineering.

Summary

  • The general quality of management in the IT world is poor
  • Management itself is a skill, one which few take time to learn about
  • Managing software engineering well requires one to understand software engineering: it takes and engineer to manage engineering