• I agree with David and Tom. I have only 4 years experience, but I have seen major disasters caused by programmers who don't have any social skills and therefore cannot manage a project, and also from managers with no technical background who make idiotic, short-term fix / long-term disaster decisions.

    The worst kind of managers are those who listen to their developers and then ignore them in favour of what has already been decided, or managers (usually techies) who believes in the utopian view of projects where no compromises or trade-offs need to be made, documentation is an optional extra, and everything will come good in the end because they are using the latest bleeding-edge technology which is sure to make everyone's life easier.

    What is really needed is for utopian developers to gain some grounding in the real world and learn to make the often painful decisions that will have a reasonable chance of satisfying the customer and the project budget!

    One final point. Learning to micro-manage your work will turn you into a micro-manager, and you will stifle creativity. Never schedule a task for less than a day. Personally, unless it is a very small project, I would not schedule a task for less than 5 days - if necessary other tasks should be rolled up into one larger task.