My 15+ years of software development experience has taught me one thing: developing software on-time and on-budget is extremely difficult.
That’s why I’ve been evolving a development methodology and an associated fee-structure that essentially allows my clients to know exactly how much their project is going to cost very-early… typically 1/3 of the way through the project.
My methodology is based on the 80/20 rule:
80% of the work takes 20% of the time, and the remaining 20% of the work takes 80% of the time
I collect the client’s requirements and develop a fully functional prototype under the rate of $80/hr. This allows me to discover the risks to the project and resolve them early.
Here’s the revelation: the functional prototype represents 80% of the work done in 20% of the time. So I now project that the remainder of the work will take around 4 times the effort of the prototype.
I itemise all the remaining requirements and estimate their cost to match that projection.
The customer can then commission all, or a selection of, the listed requirements which I then execute for a fixed fee.
So far, time estimations have been accurate to around 10%. For software development, that’s accurate. It works. The client gets the security and benefit of knowing exactly what they are getting and how much it will cost. I get the benefit of feeling confident that there will be no surprises, and keeping my clients happy.
Last 2 projects
Project: Audio iPhone application
Features: Low latency audio on iPhone
Functional Prototype: 9hrs (charged hourly)
Projected Effort: 27hrs
Commissioned Effort: 16hrs (fixed fee)
Project: Cross-platform eLearning application
Features: Automated printing, emailing and document generation upon completion of questionnaire/tests.
Platform: Adobe AIR
Functional Prototype: 21.5hrs (charged hourly)
Projected Effort: 42hrs
Commissioned Effort: 42hrs (fixed fee)
For web-application development, you simply can’t go past Ruby on Rails. Currently, I’m most inspired by iOS development. For fast cross-platform desktop application development, Adobe AIR is a good choice.