I was torn somewhere between a wry smile and an attack of nostalgia. The nostalgia? Because it took me back to my days as a project manager searching for better ways of estimating. Chronic underestimating by the engineers and continual shortening of timescales by management led to constant disappointments as projects overran. Surely there had to be some tools out there that would provide reliable estimates, “independent” from the usual politics?
One of the models I found was COCOMO (now COCOMO II) . Great, now all I had to do was a bit of counting, hit the button and out would pop my estimate. Only of course it didn’t quite work like that. The mechanical estimates weren’t any better. Chatting about this at a conference, a researcher in the field of software estimating said to me “oh sure, a blind average of all your previous projects is more reliable as a predictor of your next project than any of these tools”. And she was right. Generally, when we do the same thing twice it takes about the same time both times. Even though we try to persuade ourselves that writing the report will surely be quicker this time…
So my first rule of estimating is not: how long should it take but how long did it take the last ‘n’ times we did it? Looking forward by looking backward. Take the unadjusted average time for that task and use it again for your estimate for next time. Looks too long? Are you sure that the next time really will be easier? Why? Have you allowed for the unexpected being different this time?
And the wry smile? Well, a current project is typical. It has its plan and if we want to “do usability” we’ve got to figure out how to infiltrate usability activities into what else is going on; for example, testing the prototype. No question on this project of a couple of weeks for planning, running a test and writing a report. We were told “you’ll get the prototype on day x, and we want to know if it’s OK by the end of the same day”. So we had to:
- accept that the development team would demonstrate the prototype to us, rather than getting raw user reactions to it sight unseen. We added realism demonstration by getting them to use real tasks during it;
- test with the people we could get, users’ managers, rather than the users we wanted. We got them to try doing real work on the system rather than trying to recall how their staff worked;
- create a list of issues before writing the report. Actually, this made it easier and quicker to write the report because we’d already thought the issues through.
Which brings me to my second rule of estimating: work inside out from the time available to deciding on the tasks. Can you add a bit of a usability perspective to something that will happen anyway? Can you pick a usability activity that will get you the information you need in the time you have? Better to get any input than miss the chance of having usability activities on the project because we’re being too purist about the methods we’re using.
This article first appeared in ‘Caroline’s Corner’, in the February 2003 edition of Usability News.