A couple of books finally arrived yesterday. I started reading The Mythical Man Month, mostly because I've heard from so many different sources that it's a must read. And after three chapters, I can only agree...
So here are the key observations as I see it. Mostly so I'll remember the important parts myself
Feel free to chip in.
1 - The Tar Pit
Large scale programming is different from programming in the small. It requires a lot more non-programming stuff to be finished, like testing, documentation, integration etc.
"Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program."
2 - The Mythical Man Month
We are bad at estimating, which at heart is based on the false assumption that all will go well.
Programmers are optimists.
The incompleteness of our ideas only become evident during implementation. Practice is important for theory.
For any single task, a bad estimate isn't so important. But tasks add up, and in sequence they are very unlikely to conform to the total estimate.
Tasks can be implemented in parallell only if they are independent and require no communication effort on the part of the designers/programmers. If not, the communication effort adds overhead which may overcome the effect of more people.
We must have courage to stand by our estimates, in spite of outside pressure. "The urgency of the patron may govern the scheduled completion, but it cannot govern the actual completion."
Adding manpower to a late project makes it later.