For many years we worked on fixed price projects, almost exclusively. There were on-going monthly support contracts with many clients but when starting on new projects we would always estimate up front, agree to a fixed price on the entire piece of work and bill accordingly.
This would mean a deposit of 50%, and 50% on when the project was finished, regardless of how long the project took. Projects would sometimes span 4-6 months with no cash flow until the app was released. This can work well with a large cash injection at the start of the work, but can easily be derailed for a multitude of reasons.
And unfortunately for those of us on the developer side, many of those reasons are completely out of our hands. Reasons projects have been delayed have been many and varied including:
– Waiting on a clients graphic designer to supply mockups or graphic assets.
– Waiting for other team members on the client side to discuss and return feedback within an appropriate amount of time.
– Hardware required for app integration has problems during manufacturing and isn’t completed on time.
– Change of requirements part way through a project, pushing out already agreed development schedule.
So while it’s not always out of our control there are a good many reasons that projects can slip and it’s never fun. Especially where cash flow is concerned.
And as good as we are at estimating a projects’ duration and cost from our decades of development experience it can often be a bit of a black art. With a fixed cost this can lead to either costly overruns or mismatched schedules and developers sitting around with not enough to do.
And it’s not just bad mojo for developers. With clients expecting a project completed by an agreed date, any deviation from this can lead to frustration and resentment, even if the cost remains the same.
So what’s the solution?
Well for the past six months all of our projects have been roughly estimated as a price range (E.g. €12,500 – €14,000) and we charge for our development time on an hourly basis.
This is then billed on a 2 weekly basis (14th + 28th of each month) keeping our cash flow moving smoothly, and the client always up to date financially.
Our estimates are still pretty spot on but it just gives us the extra security that if there is any delay on the project for whatever reason we are all in a good place.
The client has working code delivered every 2 weeks, they know exactly what’s been developed, and we aren’t left waiting on funds to arrive when a project is finally completed.
Since we’ve implemented this change we’ve noticed a marked improvement in both client satisfaction and project delivery schedules.
When a client knows exactly what stage his app development is at, how much is left and how much of the budget remains they’re generally pretty happy.
And from a developer point of view, knowing exactly where the project schedule is at at any given time and only working in two week chunks leads to a certain peace of mind. No mad rush, or stressful late night coding sessions.
Responsibility for a projects schedule is then evenly shared between client and developer, as it should be.