Since we develop estimating software, you’d think it would be easy for us to estimate the time it takes to build our own products. Unfortunately, that is rarely the case.
For one thing, software features are less tangible than roofing or cabinets, so it’s hard to turn them into unit costs. Also, most of our work is new invention and done only once, so past history doesn’t help much. It’s kind of like being a kitchen and bath remodeler, but calculating the cost to build a boat. App development is also a design-build process, and we often proceed without firm specs. It’s as if the only blueprints for the boat are ‘don’t sink’ and ‘catch fish’.
Years ago, Turtle Creek Carpentry had the same problem for construction estimates. We started by calculating actual costs on all past jobs, so we could make ‘comparison estimates’ for similar projects. The same approach ought to help for Goldenseal Pro. We just looked at our labor data, and calculated the following (all values in programmer-months):
Goldenseal first prototypes: 6 p-m
Goldenseal 1.0 (Mac): 108 p-m
Goldenseal 1.0 (Windows): 12 p-m (subbed)
Goldenseal 1.01 to 4.96 feature & bug fix updates: 72 p-m
Goldenseal Multi-User: 6 p-m (partly subbed)
Goldenseal OS 9 to OS X (Mac): 3 p-m
Goldenseal PPC to Intel (Mac): 2 p-m
Goldenseal Multi-User for Intel (Mac): 1.5 p-m (subbed)
Goldenseal 4.96 already has about 18 programmer-years of work in it. It’s a fairly big app.
Based on the last three Mac updates, we seriously thought that going from Carbon to Cocoa (Mac) and from QuickTime to MFC (Windows) would only take a few months apiece. Many subcontractors agreed, but we all turned out to be too optimistic. This update is harder.
My personal ‘gut feeling’ estimate was that Goldenseal Pro would be ready by late 2017, but it seemed worth pausing for some calculations, to get a more accurate prediction. The best way to estimate more accurately is ‘divide and conquer’: split projects into smaller bits, and calculate those individually. It’s the basic approach behind Goldenseal estimates. The strategy works well even if the data is imperfect, because errors tend to average out. ‘Divide and conquer’ is also a common approach for sorting algorithms, house cleaning, conquering Gaul, etc.
We divided past Goldenseal programming into 23 categories, then divided those into Goldenseal 1.0, updates from 1.0 to 4.96, and work so far on Goldenseal Pro. It involved a lot of guessing, but probably no worse than our first construction estimating spreadsheet (which became MacNail 1.0).
The most important numbers are the time spent so far on Goldenseal Pro. There has been 13 months of non-GUI work: replacing obsolete code, converting from 32-bit to 64-bit, rewriting the database, etc. The GUI (graphic user interface) has taken 8.5 months so far, but a lot of that time was spent learning Objective-C, Cocoa and MFC. It probably has been only 5 or 6 months of actual programming.
We divided that work into categories, estimated % completion for each, then calculated time remaining. Excel currently predicts 11.08 months until a final release, then another 4.75 months for loose ends like networking, app store listing and Custom Layouts. It’s very guessy. The spreadsheet has predicted anywhere from 7 to 13 months, depending on the assumptions made.
Regardless of how long it takes, we are committed to finishing Goldenseal Pro. We owe it to our long-term users, which includes our own staff! Switching our own businesses to another system would be almost as much work as finishing Goldenseal Pro. The software includes 7 or 8 programmer-years of well-tested C++ business logic that doesn’t need updating, and it’s worth leveraging that investment.