“Alan Cooper argues in this article that a way to win in the software business is not by cutting costs of production (i.e. number of programmers and their salaries) but by investing more in creating good software (i.e. hiring more programmers).”
My emphasis; I don’t think that’s what Alan’s suggesting.
Updated 3rd May 2023 to fix broken links
Alan says: “You must invest more time and money on the research, thinking, planning, and design to make your product better suited to your customer’s needs. Instead of reducing what they spend to build each object, software companies must increase what they spend to build all objects.”
And unfortunately Krzysztof assumes that means hiring more programmers. I personally think that spending additional money in hiring more programmers is quite possibly the worst thing you could be doing. You should be investing in requiring fewer programmers!
It’s easy to hire more programmers, at least with the current market conditions. Just let the world know you’re hiring and you’ll get stacks of people applying. The hard part is working out who the best people are and then keeping them working for you. The harder part is working out how few of the best people you can get away with employing get the work done in time.
Ever since the Mythical Man Month was published in 1975 it’s been acknowledged that adding more people to a project doesn’t necessarily help… Yet still people suggest it as the ‘obvious’ thing to do. It’s wrong. Don’t do it. Read the book if you don’t know why.
So, if hiring more developers is wrong what’s right? Alan’s suggesting we need to invest more in our software development efforts; how could we do that and not increase the number of people involved and the corresponding lines of communications and complexity?
Well, we could spend more on due diligence of the hiring process; make sure the people that hire and retain the guys and gals that do the work actually know what they need and can judge good from bad. That would be a start. Once companies can judge good from bad they could actively seek to retain the good and shed the bad or, if employment laws make that hard, at least find somewhere harmless to retain them. When you hire the wrong people it’s worse than not hiring anyone. The wrong people tend to make it harder and harder for the right people to get things done. You don’t want to end up with a load of plankers. This is hard though. It takes time and money; but we have that now because we’re investing more in our software…
We could also spend more on making sure that we retain the good people; pay them appropriately, or more than appropriately (I like the top sport’s star analogy from Pete McBreen’s Software Craftsmanship…). But it doesn’t just have to be money. Buy some of DeMarco’s books, or Constantine’s, read Joel’s site; give these people a nice place to work.
We’re investing more in the software so perhaps we can invest more time as well as more money… Try setting some reasonable schedules, or if that’s too hard then just admit it’s hard and try and schedule what you can rather than trying to be all macho and just plucking a date from thin air. Do some risk management. Do some iterative development. This all goes towards making your environment somewhere that the best people, the ones that you invested all that time in retaining, want to remain. If you set an unrealistic schedule then often the best people will leave; they know they can’t work to their own quality standards and decide they’d prefer to work elsewhere; and guess what, the best people can always find work elsewhere. Allow time and money for people to think about what they’re doing…
In my opinion, investing in quality software products is, quite possibly, the exact opposite in investing in more programmers. Don’t fall into the “Army of Muppets” trap; because once you’re there, it’s really hard to get out again…