Simple Estimate Blog

How to Estimate Agency and Software Development Projects

Published on February 1, 2022

Creating a project estimate is often a necessary evil. It’s one of the things that is incredibly important to you and your company but is nearly impossible to do perfectly. We cannot read the future, and projects have a lot of unknowns. So your project estimates cannot be perfect, but they can make wise predictions about the project given the information you currently have available and knowing your past experiences with similar projects.

Why to Estimate

We live in a world of clients and budgets and timelines and proposals and most of the time someone on the client-side or internally is asking “how long will this take?” and “how much is this going to cost?”. Regardless of who is asking those questions, there should be an understanding between everyone that these are estimates and predictions and that things can change along the way.

The goal is to try to make the unknown a little more known, and estimating is a process that helps do that. It forces you to ask questions, make clarifications, split tasks into smaller pieces and look back at your previous experiences to make good judgements.

Sometimes an estimate is merely a good idea, something to gain clarity for a future project. Sometimes these numbers are required for a project proposal or for an up-front invoice depending on how your agency is structured.

Gathering Client Needs and Project Scope

The first step in estimating a project is to have a solid grasp on what the goals of the project are. What are you making, or what are you accomplishing? Ideally your client has already done a good amount of work in laying out their vision for the project, and your team has already started to add some ideas on how that vision could be executed. If you are still feeling like things are too vague, then you probably need to circle back with your client or your team to bring more clarity to the project. Try to nail down exactly what you are accomplishing and what the deliverables are. This article talks about that aspect a bit more.

Breaking Down Tasks

You may have a high level idea of what you need to accomplish, but you need to start breaking those down into smaller steps. Instead of “Make a Website”, start to outline what exactly those sub tasks are to accomplish that goal. A website project might start looking something like this:

  • Research and Vision setting
  • Functionality Requirements
  • Sitemap
  • Wireframes
  • User Personas
  • Design Mockups
  • Copywriting and Content Gathering
  • Development Hand Off
  • Alpha
  • Beta
  • Launch Website

These steps at least start to break the idea of “Make a Website” into sub steps. They are probably still too generic for your project! What unique steps does your project require? What unique steps does your team require?

Now that you have broken the project down into steps, do it again! Continue breaking down each step into smaller steps until you can’t do it any more. For example “Functionality Requirements” is actually made up of steps like:

  • Functionality Requirements
    • Initial Client Functionality Meeting
    • Team Regroup
    • Technology Research and Recommendations
    • Document Writing
    • Document Revisions

As you start to add hours to these tasks it will become more obvious to you where things can be broken down even more. Some teams even have a rule that a task cannot be estimated at more than X hours (Maybe 20?). This forces you and your team to take big tasks and split them into more manageable chunks. The goal here is to get tasks down into estimable chunks.

When you “estimate” that “Functionality Requirements” will take “20 hours” you just pulled a number out of your head with no real evidence from the real world. This approach will cause trouble down the road! But when you look at the list above and decide that “Document Revisions” could take 6-8 hours with 3 people, this is probably a more accurate number collected from your past experiences with revising documents like this.

Use Your Past Experience

Now that you have split your tasks into smaller, manageable chunks, it is time to put numbers to them. Hopefully, you are tracking your hours on previous projects so that you can look back at real time spent and use that data to come up with a realistic number for your future task. This is not easy. Each project is unique and will have its own set of exceptions. In addition, as people enter their time it may not be structured in a way that is helpful to you.

If you don’t have past numbers, then you are going to be reliant on your past experiences. This won’t be as accurate because our minds play tricks on us. You may remember one part of the project going well and another being dreadful. It’s very possible the dreadful part did take longer, but how much longer? To what degree?

Be careful not to overestimate you or your team’s ability to do certain tasks. We often have idealistic views of our own capabilities, or rose colored glasses about the last project. Yes, you may have made a similar project before, but that doesn’t always mean it will go faster this time. Sometimes there is just a process and time that a task will take and it cannot be sped up with additional knowledge. Oftentimes you will find that previous experience may make the quality higher, but not necessarily faster. Bad assumptions are the killers of project estimates. Become an expert at questioning yourself and determining what might go wrong.

Be aware of red flags like new technologies or new integrations. These sorts of unknowns are often the culprit when it comes to projects ballooning in scope and going over budget. What steps could be taken to be more familiar with these unknowns? Could you find an expert who already knows them and run your project plan past them? Could you give your developer 1-2 hours to start reading the documentation and getting a feel for what might be an issue?

Estimate In Ranges

An estimate is a guess, and it should be treated as such. Giving someone a single number may exude too much confidence in your estimate. Even though you have told them as such, they may still treat a single number as an invoice– a sure thing. It can help to think in ranges. The most common approach is to come up with a high and a low number for each task. Some tasks may be more known and the range will be small: 1-2 hours. Other tasks may have more variation: 20-30 hours. Thinking in ranges allows you to admit that you may be wrong.

3 Point estimation is a method that adds another number to your range. Instead of only a high and a low number, it adds a middle number. The low would be considered the “optimistic” estimate, the middle is the “most likely” estimate, and the high is the “pessimistic” estimate. Using the NASA developed PERT formula it can weight the middle number more highly and help to make your estimates more accurate.

Ask lots of questions

You are not the expert of every portion of the project, so it should be obvious that you cannot accurately estimate tasks that you don’t do. You are not a lone wolf. Part of the estimating process is going to the experts and getting their ideas on how long things will take. You are the guide that helps these subject matter experts break down their tasks into more manageable parts. You are the question asker, the clarifier. Make sure to have your whole team participate in scoping and estimating a project. It is valuable to have them start to think through their process from the very beginning of the project.

Give Yourself Wiggle Room

You cannot know everything that will happen in the course of a project, and so you need to leave room for unknowns. There are different approaches to this. Some project managers simply add a markup at the end of a project. Maybe its 20% or 40%,or maybe even 100% (double!) of the price of the project. This gives you some margin to deal with the unexpected.

Project Estimation Software

While a handy spreadsheet can work fine for some project estimation, it can be helpful to use project estimating software. It can help in a number of different ways:

  1. Bring consistency to the estimating process. With a spreadsheet you can get into bad habits and bring all sorts of unnecessary complexities into your estimate. Good software will guide your process and give you a structure to work within.
  2. Bring accuracy to the estimating process: With a spreadsheet it is easy to miss a calculation or mess up a formula.
  3. Bring collaboration to the estimating process: With online tools its easy to work together on an estimate without having to swap files or email things back and forth.

Our software is called Simple Estimate. It allows you to create estimates quickly and easily in a structured process that can be used for every new project. It automatically remembers each employees hourly rate that they bill for and speeds up the process of entering time estimates. You can easily share an estimate via PDF, excel, or an online web share. Give it a try!

Get Feedback and Revise

Once you have your first draft of your estimate done, it is time to get feedback. You may want to consider multiple rounds of feedback. First circle back with those individuals who will be doing the work and get their 2nd opinion on the estimates. Ask them if they are still comfortable with the numbers they gave you originally. Consider sleeping on the estimate for a day or two, giving yourself more time to think is valuable to the process and will allow you to reconsider a few bad assumptions you may have made. After that, you’ll need to identify who the stakeholders of the project are and show them the estimate. Try to anticipate questions that they will ask before showing it to them.

Project estimates are tricky for new project managers and those that have been making them for years. You can refine your process and give yourself more confidence in the decisions you will make but they will rarely become easier. Be clear with yourself and your team that this is an estimate and that things may change along the way. That is normal and to be expected. Best of luck!

Simple Estimate Software

Consistency In Your Estimation Chaos

Simple Estimate is a tool designed for agencies and dev shops to make sense out of the estimating process.

A New Kind of Simple Estimating Software

Try Simple Estimate Out Today for a 14 Day Trial

Start Your Free Trial