I have a confession to make. Like many other software developers, my time estimates are seem to vary from real time. Yes, giving accurate time estimates are a difficult task, especially ones that are over long extended periods of time. Add on top of that time seems like an illusion at times, and you have a perfect storm for inaccuracy. However one of the hallmarks of a good senior developer are good time estimates. So what to do?
Well you have to fix that problem like any else. First lets do some research on the problem:
- Joel on Software – Evidence Based Scheduling: http://www.
joelonsoftware.com/items/2007/ 10/26.html - Becoming Better at Time Estimates: http://www.
stevepavlina.com/blog/2008/05/ how-to-make-accurate-time- estimates/ - The Planning Fallacy: http://www.sengupta.
net/musings/2012/06/planning- fallacy-and-the-planning-game/ - Programmer Time Translation Table: http://coding.abel.nu/
2012/06/programmer-time- translation-table/
From the looks of it, the problem consists of breaking down a project or a problem into reasonable amounts. Then one can build time estimates on the design, implementation, integration and testing of the components. Sounds easy, yes? Not quite, but that is a skill that can be developed. How? Well track the components needed to perform a certain task, measure the time it takes to finish the task and finally do analysis on the results. Sure you can do this by hand, with nothing more than a pen, paper and stopwatch. However this is far too tedious and onerus when developing. Humanity invented and built computers for tasks just like this. Again after a bit of searching online I found the following tools:
- TimeKeeper – http://www.softwaremonkey.org/Program/TimeKeeper
- jTrack – http://www.bulgaria-web-developers.com/projects/javascript/jtrack/
- Project Hamster – http://projecthamster.wordpress.com/about/
- Rachota – http://rachota.sourceforge.net/en/index.html
- Task Couch – http://www.taskcoach.org/index.html
Over the next couple of days and weeks, I will play with each tool and try to figure out which works for me. Finally I will write about which worked out the best for me overall.