Paul Graham has an essay on the 18 reasons why start-ups fail. I especially like how he sums it up to a single sentence: “In a sense there’s just one mistake that kills start-ups: not making something users want.“
These are all very valid reasons, and my favorite is Hiring Bad Programmers. Unfortunately it is quite often the only option. If you’re applying “Just in Time” hiring, the candidates you are looking at may be the only choice available. One way to avoid the permanent hit of a bad coder is to hire them on contract with the possibility of giving them a full time position in the future. Giving them an expiry date gives you an easy out, but you’ll still be accruing technical debt the time they are with you.
>> The 18 Mistakes That Kill Startups
Marus from PlentyOfFish disagrees with Paul’s reasons. But he missed the One True Rule that overrides them all “make something users want” and you don’t have to worry about the rest of the rules. :)