I have always found estimating a project to be a challenge. Back in my early days as an independent developer I quickly learned that I had a tendency to under-estimate the time a project would take. My error would more often than not be in accounting for the time it takes to “polish” the application. My approach to that then was to produce my best estimate and then apply some factor to it, somewhat depending upon my “attitude” at the time, but always beginning with a factor of 2. If I thought a project would take 40 hours I could pretty much depend upon it taking a minimum of 80, so I’d double my estimate!
Then there’s the cost of estimating. What is the best approach to take with that? If time is money, then time spent on an estimate is worth something – who should pay for it? Landscaper friends of mine were talking about the cost of estimating in their business when I was with them last week – we agreed that when a project appeared to be more than just a few hours of work, charging for the estimate is more than appropriate, it’s a must. I have worked on estimates that I have spent 20 – 40 hours (and more) on, not all of which that I was paid for, and NONE of which I received anywhere near a desired minimum hourly rate! The goods news for me has been that those “big” estimates for which I was paid have historically produced long-term, profitable work.
Legacy application rewrites I believe are especially difficult to estimate since over the 15 – 20 year span in which the legacy application has been in use there have been (most probably) many significant processing “bolt-ons”, each of which will require special handling. These added features I find would be treated completely different using today’s development standards and tools, therefore necessitating basically redesign as if producing the application for the first time. (Let’s face it, you really are!).
This topic of cost estimating has been very close to me at this time since over the last month I have had the opportunity to estimate potential projects involving rewrites of existing legacy applications into “fresh” graphical applications. Working with other associates of the Northeast Dataflex Consortium I have had the opportunity to approach these estimates with some new ideas and outlooks. In a future post I plan on creating a list of considerations that hopefully will help all independent developers with their cost estimating methods.