top | item 38345017

The Bluffers Guide to the Mythical Man Month

164 points| JazCE | 2 years ago |codemanship.wordpress.com

89 comments

order

misja111|2 years ago

This is a very shallow summary of the Mythical Man Month, and it leaves out at least one concept that the book is most (in)famous for: the '10 times programmer'. An excerpt:

> In one of their studies, Sackman, Erikson, and Grant were measuring performances of a group of experienced programmers. Within just this group the ratios between best and worst performances averaged about 10:1 on productivity measurements and an amazing 5:1 on program speed and space measurements! In short the $20,000/year programmer may well be 10 times as productive as the $10,000/year one.

Brooks did mention some other really useful concepts that are still very valid today: 'No silver bullet' and 'The second-system effect'. These should have been mentioned as well.

INGELRII|2 years ago

I agree. Mythical Man Month is a book to read. It's clear, interesting, and has better writing than summaries.

Many classics like this are so good because the author is among the first to observe new phenomena. They can write down what they have learned without cultural narratives that distort reality.

The hardest lesson in the book is the chapter 11 "Plan to Throw One Away". I have never seen this not to be the case in large systems. You must design the system to be rewritten. Accepting this is still a taboo.

> In most projects, the first system built is barely usable. It may be too slow, too big, awkward to use, or all three. There is no alternative but to start again, smarting but smarter, and build a redesigned version in which these problems are solved. The discard and redesign may be done in one lump, or it may be done piece-by-piece. But all large-system experience shows that it will be done.2 Where a new system concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time.

>The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. The only question is whether to plan in advance to build a throwaway, or to promise to deliver the throwaway to customers. Seen this way, the answer is much clearer. Delivering that throwaway to custom- ers buys time, but it does so only at the cost of agony for the user, distraction for the builders while they do the redesign, and a bad reputation for the product that the best redesign will find hard to live down.

>Hence plan to throw one away; you will, anyhow.

civilized|2 years ago

Has anyone else started feeling the following? In the last year or so, reading a banal, superficial, and platitudinous summary of something has, for me, become inflected with this feeling that it was written by GPT.

In the case of this article, there are little details that suggest it was written by a person, like randomly choosing to abbreviate the book to T-MMM. But still, it's started happening for me that an article can feel "GPT-ish".

strangattractor|2 years ago

And by 20K/yr programmer he likely means more experienced. Programmers tend to interpret this 10X as rockstar extremely prolific code programmer. In my experience the 10X programmer doesn't do things that impede the group or has enough experience to reduce the solution space to something manageable. Writing code is only part of the equation. Getting to a solution that works well cuts the time and lays the ground work for iterations and improvements. People the spew code that generally works are not as helpful.

intelVISA|2 years ago

Despite many attempts to ignore this reality, entire languages like Go were invented to try mitigate this disparity.

paddy_m|2 years ago

I am surprised that there's less mention of Brook's proposed team organization, a team of 10 led by a surgeon. The team is supposed to work on a single project. Every org I have seen has much smaller teams with much more individual responsibility and attendant coordination problems.

I can see shaving 1-3 people off of Brook's ideal team (we don't need a secretary to type anymore, PM's that organize projects at the behest of a technical leader are effective).

What I have seen over and over is, whoever writes the most code tends to get the most power in an org. Whoever is delivering features quickly gets power. This kind of works, but these coders frequently leave poorly thought out architecture that is hard to extend.

dmbche|2 years ago

Classic "You get promoted until you are incompetent" situation

sizzzzlerz|2 years ago

While Brooks' book is nominally about software processes, in my career of over 40 years, I found it to be applicable to just about every engineering discipline to which I played a part. I read this book back in the 70's and then every 10 years or so and I never failed to learn something new from it. I just wish the managers and companies I worked for would have applied these lessons.

taeric|2 years ago

I'm a bit of a broken record on the idea, but I'm fairly convinced that much of what we think is unique to software is not that unique. Coordinating work with people is hard, pretty much period.

RandallBrown|2 years ago

Yup, this book is always in the must read list for software developers but I've barely met any product/project/program managers that have even heard of it. They're often the people that would gain the most insight from the topics in the book.

kwertyoowiyop|2 years ago

Every engineer would benefit from it too.

danielovichdk|2 years ago

The Mythical Man Month is great. What makes it great, is that it circles around how important everything but code is, in any professional software development progression.

I would argue that it should be the bible for every manager that are managing engineers. They should study it thoroughly and all the literature it touches and mentions.

The best book I have read on software development by far.

NegativeK|2 years ago

When I read it, I was saddened that most of the fundamental errors were still happening at my workplace decades after it was written.

lordnacho|2 years ago

It's always a surprise to know how far back good ideas actually go. Brooks figured out all this stuff in the 70s, pretty much as soon as it was possible for someone to have done this type of work and written a book about it.

Reminds me of Adam Smith's writings about the nascent factory economy, and perhaps ancient philosophers as well.

WJW|2 years ago

The article also points out that programming, even more than other professions, suffers from a lack of available "old people in the trenches" who can pass on these ideas to newcomers. This is because:

- the field has been growing so much that at any point in time the majority of devs will be relatively new. A field that doubles every three years will never have more than 50% of people with more than 3 years of experience, obviously.

- I have no numbers to back this up, but intuitively it feels like more devs "drop out" of software development than in other professions. Many become managers, others take up various non-development projects or retire altogether. This makes it so that even less senior people are available.

throwawaaarrgh|2 years ago

I'd call them eventualities more than ideas. Do X thing in Y way and certain things are going to result every time. Somebody finally puts that in a book. But most people are either ignorant of it, forget it, or ignore it.

We can't just assume the people we hire will avoid the eventualities. This is why we need process, to force people into working in ways that avoid as many of the problems as possible. But then the problem becomes getting people to do the process correctly.

I believe the one thing that could transform the industry most significantly is better management. Most managers and team leads I have worked with, even if they've heard of these books, do not act in ways to prevent their problems. They fall into a rut, because they are not following a process.

It gets even worse when they claim to be following a process but aren't. There's loads of business improvement processes out there, but most are paid lip service. Then people get jaded at the process rather than the person or leadership team who clearly wasn't doing it.

dredmorbius|2 years ago

Since you bring up Smith, one of the absolutely glaring oversights of Wealth of Nations is that it utterly fails to grasp or note the role steam power would play in the next century of increasing automation, factory-system development, and transportation within England and the economies of Europe and North America especially.

This is all the more gobstopping an oversight when you realise that Smith not only know of James Watt and his steam engine, but was personally acquainted with Watt, personally arranged for him to have a position at the University of Glasgow, and that that was specifically to work and improve the University's own steam engine. Watt remained at that post for a decade or more if memory serves, much of that prior to the publication of Wealth in 1776.

AdamH12113|2 years ago

The concept of "conceptual integrity" is one of the most useful things I've ever learned. The tension between conceptual integrity and things like group-based communication and requirements-gathering (what one might call "representativeness") seems to me to be a foundational issue not just in software development but in human civilization as a whole.

jcmeyrignac|2 years ago

This is nothing new. In 1913, Max Ringelmann measured the effort of individuals when working in a group. The results are impressive: https://gallica.bnf.fr/ark:/12148/bpt6k54409695.image.f14

A group of 8 persons provides the same amount of work as 4 individuals.

ewst|2 years ago

> As more people are added to a project, the complexity of communication increases exponentially.

Doesn't it increase by n^2? as per the picture with the graphs?

supernewton|2 years ago

Laypeople use "exponential" to mean "superlinear". It's fine, probably.

rco8786|2 years ago

I've always had a little bit of a gripe with how the "communications complexity" is presented here. As if the only way to communicate on a team is to have everyone stand in a circle and yell at everyone else.

In reality, there is very often opportunity to take 1 project with ~3 engineers, and break it into 2 smaller projects each with ~3 engineers and run them mostly in parallel. Do your best to isolate those projects, but have a point of contact (EM, PM, tech lead) between the two teams to coordinate whatever dependencies are unavoidable, etc.

You'll notice, that this is just a smaller microcosm of how every company is actually structured anyway. There's still diminishing returns, but most people on the team never need to communicate directly with people outside of their project.

NeoTar|2 years ago

Is this not just a different manifestation of the third key observation?

"Division of Labor: There’s a limit to how effectively a task can be partitioned among multiple workers. Some tasks simply cannot be divided because of their sequential nature, and for those that can be divided, the division itself can introduce extra work, such as integration and testing of the different parts."

Just replace 'workers' with 'teams'.

psychlops|2 years ago

Pretty sure it simply represents the upper bound of communication complexity. Any management of it can improve coordination. The conceptual lower bound is that each additional programmer adds 100% more programming speed.

fassssst|2 years ago

The book only takes like an hour to read you know.

drewcoo|2 years ago

When you try to read and discuss as a group, it takes much longer.

maximus-decimus|2 years ago

You can read 336 pages in an hour?

bernardlunn|2 years ago

I read it in the 1970s as a youngster, now retired, brilliant then and now.

monoscient|2 years ago

I'm so sorry but I read it as "the Mythical Moth Man" for a second

smcin|2 years ago

very Kafka. If only the industry had adopted your 'vision'...

Also, very Norm MacDonald (RIP).

gjadi|2 years ago

Another aspect discussed in TMMM not present in this summary is the possible benefits of AI.

Brooks says there can be some gains, but no silver bullet :)

- As a Testing Agent that learns how the system behave and how to test it as the developers interact with the agent.

- As a tutor, junior can learn from the knowledge of experts by interacting with the AI.

- For "automatic" programming when the problem is characterized by few parameters, when there are many known solutions and good knowledge to select the correct solution.

So far I've read about tutoring and automatic programming, but I haven't read about how to use AI to learn about the system and generate tests.

pie314isi|2 years ago

once, when complaining to a colleague about our workplace and their hiring and staffing idiosyncrasies, I quipped "I should give <manager> a copy of TMMM". My colleague, without missing a beat said "You should give him two copies so he can read it faster"

jSully24|2 years ago

>”give him 2 copies so he can read it faster”

Gold! My week is made, no matter how many deadlines I blow past.

danwee|2 years ago

I'm not sure if reading the book would help. If the manager has a technical background (e.g., they have worked as developers before) then they already know the main point of the book. If the manager does not have a tech background, then there's little that the book can do for them.