Joel wrote an article for Inc.com titled "How Hard Could It Be?: Five Easy Ways to Fail".
The issue that I have gnashed my teeth over the most is distribution of work which Joel describes as Mistake No. 4: Divide tasks equally. If you have the luxury of being able to find and hire what Joel desacribes as "the superstars that are 10 times more productive than even excellent developers", by all means do it. But that is not realistic in most situations. You can build a great team with a mixture of talent. But if you don’t use the talent effectively and find a way to get the most out of each member, then you are squandering your resources. Writing functional specs, documenting algorithms, documenting code and writing self-documenting code is the framework for ever having a chance at
having another developer be productive with code that he did not write himself.
Joel knows how to stroke the programmer with statements like this:
"Software development takes immense intellectual effort. Even the best
programmers can rarely sustain that level of effort for more than a few hours a
day. Beyond that, they need to rest their brains a bit, which is why they always
seem to be surfing the Internet or playing games when you barge in on them."