This is still the header! Main site

More People, Worse Product?

2021/10/27

... this is pure speculation btw.

This is post no. 40 for Kev Quirk's #100DaysToOffload challenge. The point is to write many things, not to write good ones. Please adjust quality expectations accordingly :)

Man-Months

You're probably familiar with The Mythical Man-Month, a book by Fred Brooks. One of the described ideas was that you can't just make software projects complete faster by adding programmers to them; doing so adds overhead that might actually make things happen slower.

Projects will be, thus, occasionally, late. Sometimes, they won't finish at all. Sometimes, they will; the end product is, at some point, delivered.

But then... what if... apart from being slower, adding more people also makes the end product irreparably worse, regardless how much time it is spent on it?

The theory

If you have more people, you need to divide up work. You need interfaces. You need to slice things apart that could have conveniently been kept in the head of a single person.

Once separate people start working on the sections, they will individually become big enough chunks to take up a person's working memory. They're their own things now, with interfaces treated as unchangeable constraints of the outside world. It's really hard to re-merge them. But... due to the added complexity, you need to add even more programmers.

Let's say the product would've taken 3 years to write with one person. Bean-counting manager types would think it'd take 1.5 years if you had two programmers. In fact, it might take 2.5. Or 3.5. But... regardless of the actual timing, you'll have more code. Which means... an end product that is slower and harder to maintain. How much longer it took is just a side effect.

If efficiency, low complexity and speed counts as a feature (as it should)... maybe it is just impossible to meet this spec with a team that's too large, regardless of how much time they spend on it?

Examples.

TempleOS has been written by Terry A. Davis. One person. It's awesome.

There is also SerenityOS. Although it's a larger project by now, Andreas Kling was working on it mostly alone for years. (I still need to try it at some point.)

Would either of these be as impressive as it is if they started by tasking a lot of developers with gluing together existing parts of things that other developers already have been piling code into?

... comments welcome, either in email or on the (eventual) Mastodon post on Fosstodon.