Accurate estimation is the basis of delivering projects within mutually agreed budget and timelines to prevent any pressure over the developers or client disappointments in the long run. We have spent more than ten years in estimation and software project development which has made us believe one thing for sure – Estimation of software projects is not just a science but an art, and apart from technical expertise, it requires foresight to view, analyze and correctly account for phenomena and things which remain invisible.
While estimating for numerous categories of projects, we have seen a multitude of project parameters that either change or appear in new formats, but there are also certain attributes which essentially remain constant across all projects. There are certain steps and patterns of behavior which remain constant across the estimation process, and you need to judiciously follow them for accurate estimation of software projects.
When you estimate time for the project, you need to account for all tasks which might not be necessarily part of project development but which allow for execution of the project smoothly. You have to account for time on activities which are not certain but would show up in later stages of development. You have to account time for scope variations – in case it occurs- and present it to the client in the most acceptable format for approval.
Before you account for these hidden attributes you have to do a granular analysis of all your project tasks and functionalities to arrive at precise estimates.
Granular breakdown of project – Every project is essentially composed of certain work categories which relate a specific functionality. By breaking down the system into smaller chunks, each relating to a particular work/functionality type, the estimation will be more precise.
Let us for ease represent each work type as an Implementation type. For example, logging into your account on a website – this login requires an authentication process to authenticate your user login details. This authentication process becomes an implementation type. The next question you might ask is – how do you understand what forms an implementation type? Well, the answer is simple. Any user activity which creates a trigger in a system forms an implementation type. Your basic task is to foresee all such triggers and estimate for them. Doing a granular breakdown of the system would lend greater detail and precision to the estimation process
If you are building a website with a few pages (in HTML/CSS), the breakdown would be based on the basis of number of pages, the pre-design research, design research (wireframing and protoyping), coding the site, content development and integration into the website, testing the website across various browsers/device types, internal training for the project, project management time and backend maintenance. You should list all tasks and activities and if possible, break them down further depending on functionality, and estimate time for each of them separately.
Granular breakdown of project will enable you see through the various categories of work which you have to do –to develop the required functionality. Estimation hours can be summed up in the end for each granular piece to arrive at final hours.
Account billable hours for project management – Estimation of a project is tricky from the point of view of what should be included and what needs to excluded. It is difficult for you as a project manager to explain and account PM hours to your client. Generally clients would negotiate on PM and QA hours but it is your responsibility to hold your grounds, explain and mark them as non-negotiable. It has been proven that allocating time for project management activities is crucial for preventing delay and improper execution of the project.
If you are doing a manual estimation of the project, you should keep a 15% buffer time to accommodate for project management activities. Using time tracking software becomes useful if accurate time estimation of project management activities needs to be accounted. If you have been using one, you will find it pretty easy to account for how much time ach project management activity took in the past project, and hence allot that same time to the present one, depending on project size and complexity. So overall, you need to account time and budget hours for researching, meetings (with team and clients), mailing, bookkeeping etc, should be included in time estimate. Apart from this it is advisable that you account for time for reviewing work, account for leaves/holidays that might crop up, time for project approval and client turnaround time, and time for error handling and error management.
Planning for contingency factors in your estimates – Adding project management time to your estimate of tasks is not the end point. You have to foresee the unknowns and do risk assessment. Here you need to do an adjustment and add additional hours to handle the increase in original estimates due to these unknowns. You need to allocate some additional time for making those adjustments. You might ask – how much to mark up? This invariably depends upon the project complexity and size. Your experience in handling past projects will help you arrive at a rough estimate to handle the unforeseen hours. Normally adding 15-20 % for fluctuations that are certain to occur will help you deal with uncertainty handling at later stages.
Provide an hourly range to handle minor scope creep – Before you arrive at the final number, a margin of error should be added to the final cost which accounts for changing scope/minor delays. Understand that estimation means a plan of time and cost of future activities. Unforeseen events can cause delay which needs to be accounted for. You can do this by providing a range instead of fixed number for your estimates. Providing a range after arriving at the final numbers helps you to automatically include the margin of error and set a realistic picture. You might ask – how do I decide the range?
Well, in most of the cases, a 10-15% range is appropriate, but depending on your past experience, the technicality and complexity of the project, and your foresight to see if there could be subtle changes in scope in future, or a delay due to third party integration of tools, you need to provide a buffer time estimate.
How To Reduce Time For The Unbilled Task –The Estimation Process Itself
Assuming and accounting for hidden elements helps to do accurate estimates to a great extent but the process itself is time taking. How can you provide quick estimates? That is where Quick FPA comes in. QuickFPA which enables producing the quick estimates in the shortest amount of time will help to provide a detailed analysis of the estimation activities, tasks and provide a scope document with all categories of time estimation in the most desired fashion.
The software helps create all categories of small and big tasks – create possible implementation types, choose implementation platforms, technology type, testing environments– and add hours to each of them. It has the capability to include all hidden attributes and allot time for them. Exceptionally unique, Quick FPA is an experience in itself and helps create the scope document which can be directly sent to your client for approval. You can list all your projects, clients and users in this software –with status of each project (Approved/unapproved) for enhanced project management. This helps you as a PM to handle and estimate for multiple projects together, bid for multiple projects and work efficiently –thus saving the non billable hours of carrying each estimation process uniquely.
For greater detail and a free demo, register on the website and receive an invite. For more resources on estimation, browse our blog!