Tuesday, May 24, 2016

Advice for managing software development?

When I started writing my management blog series one reader expressed their hope that I would give advice on how to manage software development. I’m sorry, but this series has contained very little advice on how to manage software development.

There is a good reason for that: It is hard to give specific advice to managers.

You can’t say “If X happens then do Y”, you can’t even say “If you find yourself in situation A and then B happens then do C.” You can say such things in code, and you can say such things about coding. You can say such things about testing, you can often say such things about product management. But you can’t give such rules to managers, and if you did they would cause more harm than good.

There is a branch of philosophy and logic called contingency theory which talks of such situations. When a set of pre-conditions are satisfied then a certain action is “the right” thing to do.

The problem with managing is that it is difficult to give hard and fast rules, management is not contingent. What managers do, and what decisions they make - and don’t make - is very very dependent on context.

If you were to try and codify all the management actions and decisions you would need an incredible amount of detail and an incredible number of rules. Now computers are getting more powerful and the application of artificial intelligence may render some management decisions subject to contingency theory but for most humans such an approach to decision making is not possible.

And to complicate matters, even if you did have a decision making system much of the information managers have is incomplete or fuzzy, indeed, part of their job, their reason for existing, if to manage in when information is uncertain and the world is changing. (These same factors mean attempts at contingent management, like PRINCE2, are fundamentally misconceived.)

Hence intuition and understanding of context are important. Let me repeat a quote I used a couple of weeks back from Professor Henry Mintzberg:

“Put together a good deal of craft with the right touch of art alongside some use of science, and you end up with a job that is above all a practice, learned through experience and rooted in context. There is no ‘one best way’ to manage; it depends on the situation.” Mintzberg, Simply Managing

Management is contextual not contingent, there are few, if any, hard rules.

Consequently I think the best advice I can give to managers, and soon to be managers, is:

  • Understand your management philosophy. Understand what you believe, understand how you believe the world works. Your philosophy will inform your decision making.
  • It is not enough to just understand ones own philosophy, one needs to continually reflect and build on ones own experiences.

Hence I have very little advice for managers. Well, actually… I do… my “failed” book, Xanpan 2, set out to try and decode many of the problems managers face in software development and build a practical guide to software managers. I was, perhaps, too ambitions. Xanpan 2 is available, as it stands it forms a wonderful appendix to Xanpan.