This is the eighth post in a series called Y U No Tell me; Lessons learned from building a WordPress development business. For a list of all posts in the series, please start here. We're just over half way through the series. To make sure you catch 'em all, be sure to sign up to receive my posts directly to your inbox.
I'm going to let you in on a secret, everybody everywhere is terrible at estimating how long something is going to take. Call it blind optimism, but we all believe we can get things done quicker than we actually can.
Guess what. You can't.
When we're getting ready to go out to dinner, if I ask my wife how long it's going to be before she's ready and she tells me 15 minutes, I know I've still got time to binge watch another episode of Game of Thrones. Conversely, if she asks me how long it'll be before I'm done working for the day and I tell her “about an hour”, she knows she probably has time to paint the house. But I digress.
Assuming you charge by the hour, this can be a serious issue when you're trying to figure out how much to tell the client a project is going to cost. The problem gets compounded when you aren't the one doing the work. You estimate that it'll take YOU X amount of hours to do something, but how about if you're estimating the project and somebody else is going to be the one actually completing the work. Will it take them twice as long as you estimated? Will the project still be profitable?
You might even try bringing in the developer and ask them how long it's going to take to build. But now you need to be careful because they're going to be wrong, too. If you're lucky, over time you will see patterns in your staff's estimating. One guy is consistently 20% under, one guy is always 30% over, and yet another is all over the map. If you're able to figure out a pattern you can adjust accordingly. Until then, it will remain a painful process.
Just so we're clear, this isn't just a problem when it comes to billing. It's just as big of an issue when it comes to scheduling. If you expect a project to take roughly a week to finish, you might line up the next project to start a day or two after. If the first project takes an extra week or two to finish, you're that far behind on the next project before you've even started.
Easing the pain
One solution to the craziness of hourly estimates would be to do as my friend Chris Lema suggests and switch to value-based pricing. I would write more about it, but it's not something we do much of and Chris writes about it so much better than I ever could.
At 9seeds, what we have done to get better at estimating projects large and small is to break them down to the smallest parts possible. And it all starts with a spreadsheet.
On the spreadsheet we start by creating sections for each group of tasks that needs to be done. Typically that will look like: Site Design, Theme Development, Site Development, Testing & Project Management.
Instead of having a single line-item that reads “Theme Development: 24 hours”, we might break it down like this:
Home page template
Single page template
Post archive template
Single post template
Next to each line item we have a number of extra columns: Low estimate, High estimate and Notes being the most important. The first few lines might look something like:
|Home Page Template||6||8||2 custom widget areas, 4 meta values for entry by client|
|Single page template||2||4||Sidebar with 2 widget areas|
This method has several benefits. For starters, it's much easier to have somebody else come in after you and double-check your estimate. They can look at a single line item and have a good understanding of what needs to be done based on the scope document making it easier to tell if your estimate needs adjusting. Then, once you've landed the project, the line items in the estimate doc can easily be converted in to a list of tasks for your team to complete.
Does this mean we get it right every time? Of course not. At the end of the day, creating estimates is still one of my least favorite parts of the job. But all I can do is try to make the next one I do better than the previous one.
Do you have a method of estimating projects that works well for you? Share it in the comments below.