I think that you are right. The hardest part of software development is the software, it's the people. Managing expectations must be done or the project be perceived as a failure.
For example: You are the IT manager of a company, and the CEO says to you: �build me a widget (could be anything), and you have 4 weeks.�, and you follow your software development guidelines that means that the project will take 8 weeks. How do you manage the CEO in this case? What do you sacrifice, the deadline or your software development guidelines?
Neither. You educate the CEO. Read the book (you knew that was coming, right?) and look closely at The List. The List is a prioritized To Do list. It has each feature you are adding, but the features must be broken down into manageable chunks. If you have a feature listed with a one week time estimate, it's too long. Break down features to one or two day tasks. These are (generally speaking) small enough that you can understand the entire scope of the problem which helps you estimate the time more accurately.
This accomplishes two things. First, it makes sure that you have some solid justification for your longer time lines. Second, it provides your CEO with a feature list he can look at and understand. Then he can make an informed choice about the features and timeline. If your CEO doesn't understand why the new features will take two weeks, he probably won't be happy about slipping a timeline. (At some point, you hope he learns to trust you, but that doesn't always happen.)
By publicizing this information you enable your management chain to make informed decisions. Your CEO becomes a participant in your development process, not an adversary who feels like he has to drive you to get more work done. You've created a transparent process in which he understands what you are doing, not a murky bog of "development work" that looks like you are hiding lazyness.
Make sense?
[ August 02, 2005: Message edited by: Jared Richardson ]