I came across this gem of a post on the web obviously gleaned from in the trenches experience developing software. Here are his five pitfalls:
1. Allowing non-technical staffers to give estimates
2. Being afraid to look in the mirror
3. Underestimating design time and debugging time
4. Inadequate/unclear requirements
5. Taking too large a bite from the apple
Of course we'll all agree that these observations are obvious, and that we always apply them rigorously, right? ;-)