Over the last four months I have written a dozen blogs concerning management of software development. I will write more, but I’d also like to draw a line under this mini-series for now - there are other things I want to blog about.
Management in and of software development is an important topic, simply abolishing it is simplistic. Although as I said earlier: sometimes the management is so bad getting rid of it is an improvement.
Right now I’d like pull together some of the key arguments I have made in this mini-series. And I’d like to start with the words of Fred Brooks:
“the quality of the people on a project, and their organization and management, are much more important factors in the success than are the tools they use or the technical approaches they take.” Brooks, Mythical Man Month, 1995.
Perhaps the key argument I'm trying to make in this series is: There is “management” work to do - the same as there is coding, testing and customer understanding.
Such work is legitimate, just because it isn’t coding, testing or requirements analysis/gathering doesn’t make it irrelevant or trivial. Manager-less teams might well reduce the amount of work (which is good) or might redistribute but there is always a some to do.
A lot, if not most of this work involves decision making. Such decision making usually requires authority and may require making decisions with less than perfect information. Sometimes the missing information is unknowable, or is only knowable at a prohibitive costs (which might be time, money or something else.)
Consequently doing management work requires skills of its own, but even more than skills it requires intuition. So it takes an engineer to manage engineering, non-engineers managing engineering work usually lack intuition in engineering decisions.
Once you recognise managing as a skill in its own right the question then becomes: is it better to spread the work around (in which case everyone needs time and skills to do the managing) or centralise it in one place?
Other things to consider are:
- All who are called manager are not
- There are many non-commissioned managers
- Some manager, and some NCOs are specialists not really managers
- A lot of management is administration: it might be reduced, delegated, dispersed but some still remains
- Some administration requires authority but perhaps not as much as we might think
- Some administration requires engineering knowledge if it is to be done right in an engineering environment
- Managers deal with the messy, irrational world and attempt to interface it to the rational world
- Management work is contextual: it is hard to give specific advice because there are so many variables and so many of the variables are unknown or even unknowable
- We may well see more management work migrate to engineering space and be automated
- Managers don’t do anywhere near as much planning and strategy as is commonly supposed, as a consequence they don’t exercise as much authority as is supposed
- Managers get things done by working through people. As a result managers spend a lot of time persuading and reasoning with people.
- Managers spend a lot of time firefighting.
- Managing is part science, part engineering, part craft, it is a skill and requires intuition