The longer I'm in the field, the more I work with different teams, the more I realize that writing code is a much easier skill for people who don't know to learn than reading people is for those who can't seem to.
The longer I'm in the field, the more I work with different teams, the more I realize that writing code is a much easier skill for people who don't know to learn than reading people is for those who can't seem to.
No company or project wants rank and file programmers (which is the vast majority of any project) who think there also managers and act as such. Even if you have those skill your job is to focus on your tasks and solve your very specific problems, not the big picture and what everyone else is doing.
I've been in plenty of teams that were extremely flat exactly because the programmers in those teams were all highly skilled in those areas.
It reminds me of what a coed wrote to me once about the difference between a good developer, and two ok ones.
"2 < 1+1"
Basically, even if you're higher ranked intellectually speaking and do more work than the average worker alone, two people that can perform adequately and that work together will outperform you.
Cooperation is key, and people need to be trained to do better handle that part of the job. Not just produce code.
</end-rant>
I'm not saying Brooks is 100% correct, but his observations are close to what I am seeing in the field.
Further, his second point about communication issues is to some extent proving my, and michaelchisari's point. Communication is a skill that is essential, but not stressed enough. If people were better at "communicate complex ideas in accessible ways", as michaelchisari originally put it, then I think it's likely that Brooks' wouldn't have the second argument to support his law (https://en.wikipedia.org/wiki/Brooks%27s_law).
Essentially, I think it comes down to where we work, what we assume about a project, and how the issues in these projects are best tackled.
At my work, better communication would have lead to less work in the long run. This because team leads couldn't clearly state their requirements, the different parties thought they agreed, and work was made that wasn't originally intended by team leads. Moreover, no one that holds a senior position is willing to acknowledge that these communication issues often are two way streets and that they are equally responsible for the miscommunications that happen. They also talk badly about others and have a serious case of hubris, which means that other peoples opinions are looked down upon or sometimes not even listened to. Basically lacking a lot of the skills that michaelchisari originally listed.
I hope that this clears out any "unsubstantiated" parts of my original rant for you.
But its much less people skills then a manager, in meetings most of the day resolving issues that are much higher level that involve different departments etc.
So your average programming job is well within the social skills of the vast majority of Men. When your evaluating a pool of potential hires its going to be 95% finding the best programmer and then the last 5% is making sure there not crazy or a drug addict etc.
Its never going to be the case that you start out with a pool of resumes from people with really nice personal bios and try and find out which ones can program a computer.