This book is a book about discovery. We discovered our needs as we went along, and we discovered how to fill those needs. As such, it made the book difficult to schedule, because I didntand couldntknow exactly what was coming next . Then, as I was nearing the end, I was seriously slowed down by my neck problems.
From time to time, my acquisitions editor, Linda Engelman, would express concern over how long things were taking. She was always very gentle in these expressions, only rarely mentioning things like the full weight of my mighty wrath coming down on you, but I always perceived the pressure behind her innocent and delicate queries. Now, it is my view that a comment about how long things are taking is always really a request for information and a request for more control. So I always try to respond with these things:
A list of everything I know of that may need to be done
An explanation of the possible value of each thing as I understand it
An estimate of how long each thing will take
My recommended list of the things we should actually do
The total estimated time to accomplish those things
An expression of willingness to change the list, or the order of the list, as stakeholders might direct
We cannot know the pressures and dates that our customers and managers are subject to. And we should not try to take responsibility for them. What we can do is to lay out the project as we understand it, with costs and recommendations, and let them adjust things to best meet their needs. They must manage: we can provide the information they need to do it.
The results of responding this way are almost always the same:
The customer whines a little about how long some things take. I respond by pointing to history to show how I came up with the estimate that it will take that long. I indicate what parts of the thing are time-consuming in case they want to scale back the feature. I never agree to do what I cannot dothat is, make it take less time than it will take.
The customer simplifies some things, drops some, and sometimes adds some. I make sure that I understand the changes; I make new estimates where they are now needed; I explain the consequences of their decisions; and I express willingness to do whatever they decide.
The most important result is the increased understanding between us of what is going on and what is needed. I recommend this practice to you as well; Im sure that it will help you.
Another practice that I think would be good, and that I recommend, is one that I do not reliably do: provide the information above on a regular basis to customers, managers, and other stakeholders. They will get value from the information and will have less need to bring pressure to bear on you. I wish I could learn to do that, but I get so involved in the work that I forget to communicate. You can do better, Im sure.
There is a name for this list of things to do, by the way. In Extreme Programming, it is called the Release Plan. Use itit will help you.