How to create an accurate estimate for your projects

Anna Debenham explains how to use time tracking to get fully paid for the work you do and prevent procrastination.

When I started freelancing and was still quite new to the industry, I had very little idea of how long it took to build a website. This made quoting for projects difficult, so I'd often pick a number that sounded reasonable for the size of the site.

Those first few months were hectically busy. I was juggling several projects at a time. I felt like I was putting a huge amount of effort in and getting very little out. I began keeping a note, hour by hour, of how much time I spent on each project. I was devastated when I did the sums and realised for the hours I was putting in and the overall amount I was charging, I was charging less than minimum wage.

So what went wrong? First of all, I was basing my quotes on the size of the site rather than how long it would take me to build it. Having little knowledge of how long it takes to build a site led to poor estimates, and I didn't appreciate that a small site with just five pages can sometimes take just as long to build as a site with 50 pages.

Also, I wasn't taking into account time spent researching, having meetings, talking to potential clients, writing blog posts, doing bookkeeping and replying to emails. That's all part of running a business. Design and development time depends on a lot of things, from the number of templates and the level of testing required, to the type of client and how long it takes to get approvals.

When you're starting out, estimating how long things are going to take and basing a quote on that is incredibly difficult because you're unlikely to have prior experience. That's why it's so important to record your time as you go. Even if you're not working for yourself, it's still valuable to keep tabs on what you're doing and how long it's taking you. Any job requires time estimates, and if you're not keeping track, it's harder to do accurately.

Why time tracking is useful

  • The client is billed more accurately because there are no guesses at how long something has taken.
  • Accounting for every hour subconsciously helps improve productivity.
  • Regularly submitting a timesheet offers plenty of warning if a project starts creeping over budget.
  • It can help work out average billable hours a week.
  • Tracking individual tasks keeps a record that can be referred to when budgeting for future projects.

Track each task

Each project will have multiple tasks, so define these and track them individually. Just make sure you're being honest to yourself about how long something has actually taken you, including how long you've spent procrastinating. Further down the line, that's going to help you judge how long something similar will take to complete.

When it comes to unbillable tasks, either your rate should take into account the things you can't bill for, or you should consider adding an extra 20 per cent for unbillable tasks onto your overall time estimate (or however much seems appropriate). Here is a template set of tasks that works for most of my projects:

Billable project tasks

  • Pre-design research (interviews and user research)
  • Site design (includes IA, wireframing and prototyping)
  • Site development
  • CMS integration
  • Browser/device testing (some projects require more rigorous testing than others)
  • Training (such as CMS training)
  • Consultancy
  • Project management (emails and phonecalls)
  • Meetings
  • Site maintenance

Unbillable project tasks

  • Admin: writing proposals, contracts and invoicing

These tasks will be different for you depending the type of work you do, and the tasks you do and don't charge clients for. You could split the tasks up further, or track the time spent on individual features.

Concentrate blocks certain sites and apps depending on what task you're doing

Estimating

Rather than giving clients a project estimate, I provide a breakdown of the number of days it will take me to complete the tasks and features they've asked for alongside my rate. It helps show what goes into building the site, and what they're getting for their money. If the figure I've given is too high, rather than reject a quote, they'll often say, "I guess we don't really need this feature." This means I can take features out to bring an estimate down rather than have to negotiate on my rate.

Invoicing and logging time

When I invoice a client, I list the tasks I worked on and how many days I spent on each one to show the client specifically what I've been doing in that time. Maybe add your Git commit messages for that period.

Don't just log client stuff. Log unbillable work related to running your business, such as bookkeeping, working on a side project, training, preparing a conference talk or writing a blog post. This keeps tabs on the true costs of running a business. I keep track of time spent writing and researching for talks so I can see how much it costs my business to do them in lost income. (I spend around 100 hours preparing a new talk, so it's quite expensive).

Beat the procrastination

If you find yourself procrastinating a lot, keep track of this time too. Seeing that number written down at the end of each day may work as a guilt-trip into making you more productive. Some apps like Concentrate will block certain sites and apps depending on what task you're doing. Others like BubbleTimer will show you how much time you're spending off-task. Seeing all that wasted time is a good way to kick you out of bad habits.

BubbleTimer shows you how much time you're spending off-task

Time-tracking tools

It took me a while to find a decent way to log my hours. Initially I wrote everything down in a notebook, but it felt disjointed and not very accurate. If I had to take a call or send some emails, it was hard to accurately remember how long I'd spent doing that. I use an accounting app, Freeagent, which has built-in timesheeting, as do a few other accounting apps like Harvest. It lets me split projects up by task and decide whether each one is billable or unbillable. This helps me see how much time I've worked on a project and how profitable it is. Once I've filled out a timesheet, I can create an invoice out of it.

There are great time tracking apps you can get that can integrate with accounting apps too, such as Eon, Punch, Slips and Clockwork. One of the things I like about using these apps is having a little timer showing me how long I'm spending on a task. It's really easy to pause the timer and switch between tasks, and it's also a constant reminder that I'm on the clock, which helps me stay focused.

Words: Anna Debenham Illustration: Ben Mounsey

Anna Debenham is a freelance frontend developer. She's the author of Front-end Style Guides, a Five Simple Steps pocket guide. This article originally appeared in net magazine issue 251.