This small article from John Cowan, Flow, Stuckness, and Interruptions, is one of the most useful and pithy explanations I've ever seen of the difficulty of managing programming projects.
My recent return to managing a team of people has highlighted for me the difficulties of the arbitrary deadline approach to project management. Unfortunately, it's also the default management approach applied by a lot of people, because the concept is easy to grasp.
The arbitrary deadline method is troublesome because of the difficulty of estimation. As John's post elaborates, you can never foresee all of the problems you'll meet along the way. The distressing inevitability of 90% of the effort being required by 2% of the deliverable is frequently inexplicable to developers themselves. Never mind the managers remote from the development!
I found this part rather interesting:
A relatively successful model for programming management, however, is based on the notion of trouble-ticket tracking. Since projects are not for the most part self-generated but rather arise out of requests from editorial, sales, or customers directly, each of them can be treated as a trouble ticket at whatever scale, and then the question becomes not "Is this project past its highly arbitrary deadline?" but rather "How many projects being starved of the time and attention they need?"
Of course, to some people the answer will always be "all of them."
Blogs, books and forums are full of sage advice and new methods to solve problems like this one. They're great, until you put them into your own situation, and find that it's not just about technique. (Hurrah for Basecamp, which pushes communication as a primary tool of project management.)
Every little thing can help though. Best practice for me tends to be a mongrel creation, containing many contributions from the 2% of residual wisdom that sticks with me from every new good idea.
A note on flow and interruptions
Danny O'Brien's Webolodeon is a gentle way of forcing web browsing behaviour into useful patterns. Self-interruption is as big a problem as external interruption when it comes to staying in the "flow". Now, all we need is one of Danny's gadgets fixing to the RSS readers as well.