Giving time estimates for programming projects can be a very tricky process. Many times when a project comes in late, it can be traced back to a bad time estimate given up front. For small projects where a task is quickly explained to you, and you are then asked to give a ball-park figure, you might not have time to take into consideration all of the aspects that have to be handled. Although you do know the bigger details involved and can make a reasonable guess. The problem comes in when there are three or four other small items you didn’t think about, and these end up having to be handled in the same time frame.
Another problem can be in the testing. A lot of developers do not realize the amount of time they have to spend testing their programs. Depending upon the project, a developer may need to spend as much time testing a program as they spent writing it. Testing as many scenarios as possible can be very time consuming, but it makes a big difference in your end product.
Generally, on a small task or project I’m doing, I will determine how long I believe it will take me and then multiply that by 2 or 2-½. The 2 or 2-½ depends upon how much testing will be required and how familiar I am with the system. Over the years, experience has convinced me that I’m only about half as quick as I think I am. In order to determine a good ratio for yourself, estimate jobs with how long you think they will take, and then note actual times. You can compare estimates to actual time. Then you will have a good number to adjust your future estimates by.
On larger projects consisting of multiple tasks or developers, it is important to break the project down into individual tasks and attack them separately. You should try and define every possible task, describe it fully, and then determine how long it will take. It can take hours or days to create good estimates on some projects. However, the process of creating an accurate estimate can also produce detailed task lists and program specifications that can be used when the project begins. A good time estimate allows for creating deadlines that are reachable. It also makes for a project that doesn’t have you working nights and weekends under intense pressure to get the job completed on time.
(Source: Skynet Solutions)
By DJ Burrup