An estimate is the cornerstone of your ability to deliver a project on time. Without a decent estimate you’re just making it all up as you go along. You would not build a house on sand or without a solid foundation; you would not pour your own money into a new development (be it software or a new house) if you did not think that developers had used the most modern techniques and practices to lay the foundation on which all things will be built. However, people (I use the term “people” as opposed to naming the obvious job titles like Project Manager or The Business as there are many culprits in the whole cycle or process that allow this kind of activity to go unhindered, including the developers themselves) are more than happy to go to work on a baseless, unfounded, unjustified, unsubstantiated, groundless estimate!
But this point you must be asking yourself why is this? The answer is simple: it’s hard to do it properly. Mr Steve McConnell has produced an excellent work on estimation called “Software Estimation: Demystifying the Black Art” and here he deliberately says this book is not about the science of software estimation but on the art of software estimation. Even if you never read this book there are two things (only two things, come on you can do it) you should take away and apply today to start moving out of the sand:
- Don’t Guess, Count
- Use Previous Data, Your Data
Don’t Guess, Count
Your gut will be wrong, it might be close some of the time, but ultimately it will be wrong. Experience is a very valuable tool and thing to leverage, but not with an estimate. You can get tee-shirt size estimates for projects (small, medium, large etc) from your gut, but to take that any further is putting you back in the sand. Don’t be fooled by the pseudo accurate numbers like 3.2 weeks or 45.37 man days, it’s still a guess. Find something to count, estimate one and then apply it to the others - this is surprising accurate over time (this is where you can leverage your experience) and is better than just a gut feel; but nothing replaces real data, previous data, your data - something nobody else has.
Use Previous Data, Your Data
People keep throwing away their valuable previous history - refusing to learn from their own hard work, information that they have already paid for. They keep paying the “learning” cost, the “setup” cost over and over, keeping the whole process of software estimation a mystery from themselves. It’s like they’re deliberately making it hard to know the answer to the estimation question, like there is some perverse pleasure in not knowing the answer. But the truth of the matter is that it’s easier to say you don’t know, it’s too hard, just make it up or use your gut instinct (“I’ve been doing this [enter you number here] years, I know what I’m doing - a 20% variance in either direction is a good result”. So you’d be happy with only an 80% chance of your house staying up would you?)
There are industry level datasets that you could employ if you have no previous data available, but there is no software on the planet that already knows how your team/company will behave during a development or project; but you do - you’ve done it before, but where’s the data? Why can’t you leverage it? Simple: you don’t track it and you must. Write down all your starting estimates and adjustments along the way; then the actual figures once the project completes, even if the project ends with non completion of the original goal, that in most cases would be considered a success too (maybe another post another day as to why failure to complete a project is a success) then analyze it and use it for the next project and the next and the next and so on.
Start laying the foundations today; mix some concrete into that sand to make a decent foundation.
Tweet This Post