While I’ve been working as a software developer, in one form or another, for the past thirteen years, I know I’m still learning.
At the end of the project I’ve been referring to for the last couple of days, I looked back to see what I could learn.
Estimating. Originally I quoted 15 days to deliver the application being asked for. A week into the project I was advised the system being asked for was more complex than originally envisaged.
Estimating is an area I’ve had no training in. At college a lecturer once told us: when estimating, think of a number and times by three… I think there was a fair bit of wisdom in that statement…
I think 15 days was a fair assessment of how long the original project would have taken. With the clock ticking though, I felt pressure to give a quick response to how long the extra work would take. I underestimated it…
If a similar situation happens again, I should add the time it takes to carry out a new estimate to the length of the original project and make it clear that the original project will now be delayed by however long it takes me to analyse the new requirements.
I should recommend that the original project is completed as agreed (if a short term project.) Longer projects have more scope for flexibility and change. Short projects have very little opportunity for massive changes.
I should allow as much time as needed to work out both how much new work is required AND how much time will be required to undo previous work and integrate the new design.
While it is scary to propose an estimate that vastly increases the cost and time, it is better for everyone to be upfront and honest about this. The client can always decide to drop the new requirements. They may have delayed the original deadline and paid for analysis that is now no longer needed, but they would have had to pay someone to do that analysis and it might as well be me (or you if in a similar situation.)
Or they may decide to accept the revised estimate and in that case, as the developer, completing the project will be less stressful if sufficient time has been allocated.
Do you provide estimates for your work? How do you ensure your estimates work for both you and your clients?