February 9th, 2007 1 Comment »
Estimating software development time is hard. There are so many variables, unknowns, “unknown unknowns”, and the specification always changes. Besides that, developers tend to be optimistic by nature.
Here’s a handy little way to come up with a quick, yet accurate estimate:
- Come up with your best, overall estimate that you feel is realistic using your favorite technique, or pure “gut feeling” if you are a very experienced developer and you know the problem domain well.
- Ok, you have your absolutely realistic number now, right?
- It’s not realistic. I guarantee you there are aspects you haven’t thought of. Double the number. This is your best case scenario estimate. This is how long it will take assuming everything goes well and there are no snags or major changes along the way.
- Now double it again. This is your most likely estimate. This is how long the project will probably take, when all is said and done.
- Now double it a final time. This is your worst case scenario. If things go really badly, or you run into several major issues, it could take as long as this.
So to sum up:
- E = Your best original time estimate
- 2(E) = Best case scenario time in reality
- 4(E) = Most likely time in reality
- 8(E) = Worst case scenario time in reality
Related posts:
September 19th, 2006 Comments Off
Do intense research and planning and come up with a plan that is so good, it simply cannot fail.
- Put 110% of your effort and ability into carrying out the planned actions.
- Fail miserably.
- Evaluate, learn, re-tool and re-focus.
- Fail slightly less miserably the next time.
- Go to step 4 and keep repeating until you succeed!
Related posts:
March 22nd, 2006 2 Comments »
I’ve always been a big fan of using software for organizing my time efficiently. With as many projects as I have going on right now, it’s essential to be on top of things like milestones, meetings and due dates. To manage all of this, I primarily use four different applications:
- GMail – a web-based email service with an amazing interface
- Yahoo Calendar – a web-based scheduling, appointment and reminder system
- ToDoList – a PC-based program that lets you keep track of hierarchical lists of projects and tasks
- Phatsoft TMR – a PC-based program that lets you set reminders that pop up periodically to remind you of time-sensitive tasks
As well as this system works, there are several problems:
- Without net access, I can’t update my calendar
- Without net access, I can’t manage my email, or compose and queue up new emails
- Since ToDoList and Phatsoft TMR are two separate programs, there is no automatic way to set pop-up reminders for tasks listed in ToDoList
I’d really love to see a solution that was a PC-based desktop application synchronized with an Internet hosted application. The hosted application would have its own web interface that you could access anywhere. Meanwhile, the desktop application would cache and queue up modifications when it couldn’t connect to the server.
The closest thing that I’ve found to something like this is Microsoft Outlook coupled with Microsoft Exchange server. It is about 75% of the solution, except for three major drawbacks:
- It doesn’t support hierarchical projects and tasks, only a flat list
- It is very expensive (when you consider the cost of purchasing and running Exchange server)
- It is unreliable (uptime and data integrity issues plague Outlook and Exchange)
Perhaps someone out there knows of a better solution…
Related posts: