At my former firm I had a business partner who, whenever something wasn’t going right with the business, would say “This business model stinks!” This always put me on edge because he would say it with true frustration in his voice, loudly, and in front of our employees. But in the seven years I’ve been running a web development firm I’ve come to agree with him. However, I’ve also have identified some solutions that take the stinkiness out of it. However however, I’ve also found that implementing the solutions is harder than identifying them.
Running a web development firm stinks for two primary reasons; 1) most people don’t understand it, and 2) it’s custom work. Let’s talk about these in detail, shall we? Then we’ll discuss some solutions. Nice.
1. Running a web development firm with clients means doing custom work. For most people, hiring a web development firm is like when I go to get my car fixed. I could be getting ripped off and I wouldn’t even know it. But this is a relatively easy problem to solve for car owners. You simply call one or more other mechanics and ask them how much it will cost to replace the driver-side window on your Audi and they can tell you what it will be. Web development is quite a bit more complicated. It is not like getting a car fixed. It is like getting a car built from scratch.
I’ve noticed that a lot of clients think we’ve done the work we’re going to do for them before. The truth is that in seven years with hundreds of clients I’ve never worked on two projects that were identical. We are rarely able to use the same code twice. Every client has their own needs and wants and we’re always learning new ways to do things and so we generally end up doing all the work from scratch, every single time. Custom work means learning as you go, figuring things out, dealing with unknowns, and overcoming challenges. When, as a web development firm, you don’t know exactly what you’re getting into, that makes it hard to create an estimate of how long it will take and how much it will cost.
2. Most people do not understand the complex details of web development. Building a database-driven web application is complex work, and whereas with a car there’s only one way to get the job done right, with web apps there might be 20 different ways to do it. For that matter there might be 50 different ways of understanding what the client even wants you to do. So a client calls five web development firms, gives them the same requirements, and then they get five different proposals ranging in price from $5,000 to $50,000. What gives?
The answer is that web development is complex, and if you want to get pricing for the same work from two different companies, you’re going to need to get very detailed.
Imagine you walked into Ford and said “I want you to build me a car.” Unless you have multiple degrees in engineering, product design, and manufacturing and are able to produce a 500 page report with detailed diagrams chances are the car Ford builds will not be exactly what you wanted. This is because it is impractical for you to learn everything you need to know to tell Ford what they need to know to understand what it is you want. Web development is quite similar.
If a client does not have a thorough understanding of how the Internet and websites are supposed to work then it is improbable they can give a web development company all the details they need to get a job done right. Regardless of all the care that might be taken, there are going to be instances where a client says “I thought you were going to…” and the web development firm will say “Oh, I thought you wanted us to…” and it is virtually impossible to predict all the possible ways this scenario will introduce itself until you stumble onto the situation.
These two inherent problems lead to misunderstandings, delays, arguments, and sometimes project breakdown. The client thought it was clear that a certain feature was to be part of a website. The firm thought the client wanted the feature to do A, B, and C, but didn’t realize they also wanted it to do D and E, and D and E are going to take 30 more hours of development time.
Now that we’ve identified some problems, let’s talk about solutions. FYI, these are solutions that you as the manager of a web development firm have the power to implement. It would be useless for me to tell you what your clients can do differently since you can’t change them.
1. Create structured processes. Have an organized pathway that you explain to clients and then lead them along. For example Site Map > Prototype > Design > Develop > Test > Launch. Even if the process is simple, even if you don’t always follow it to a T, it helps to have something you stick to all the time.
Structure also means management. I have a full time project manager. There needs to be someone who has the big picture and sees everything that is going on. We also use a project management system called Basecamp. It forces us and the client to communicate through a web-based system that keeps communication centralized and searchable, acts as a file repository, and allows us to get work done faster, better, and cheaper than we could before when we were just using email and the phone.
2. Do repeat work. To beat the custom work problem stop doing so much custom work. Find ways to build the same website over and over again. For example, we’ve been working with a bank to build their new public website. To build their system we overhauled our content management system and customized it for a bank or credit union. Now we have a killer system we can market to other banks and credit unions, and we can implement the system with 5% of the work we did on the first one. That means we can get more competitive on price if we need to or we can make a lot more money.
You can do more repeat work and cut down total work while improving profit margins by focusing in a niche, either by industry (like banks) or by the type of product you sell (i.e. only implement event registration systems).
3. Educate your clients. This is a tough one. No matter what you end up educating your clients, but often there is so much to explain and it’s hard to give people a crash course in programming. When all a client cares about is when the project will be finished and they think you’re incompetent because it’s not done yet it’s hard to explain to them that you’ve run into challenges doing what they want, and you’ve already given them 40 hours of free work but it’s going to take more time yet. But still, you’ve got to try, right?
4. Screen your clients. Some clients you just don’t want to work with. Here are some things clients say that should be red flags:
1. “I know you’re going to treat us right because you want more work from us in the future.” This is code for “I’m trying to manipulate you into working for no profit so that I can feel good about saving a few thousand dollars.”
2. “I could do this myself but I just don’t have the time.” Code for “I think what you do is easy and therefore it shouldn’t cost much and I’m going to ask you to add all sorts of things to the project after we’ve already signed a contract because I know all those things are easy to do and don’t take any time.”
3. “We’re looking for a firm we can partner with…” Same as #1.
4. “We’d like to get an idea of what the website will look like before we make a decision.” Code for “We want you to do work for free because we know you’re desperate to get us as a client.”
Those are just a few examples, there are plenty more. While I hesitate to say that any client is a problem client, some are. Some clients talk you down on price, and then try to add all sorts of features to the project after you’re already under contract. Then they complain about it not being done when you said it would be done after they’ve made the project double in size. You don’t want those clients. Trust me, you lose money on them.
The ideal client is professional, reasonable, logical, and involved yet trusting. That isn’t to say that any client who’s frustrated or angry is a bad client. Maybe it’s really your fault. But I think the key word is “reasonable” and you can generally tell if a client is reasonable or not early on.
5. Charge lots of money. “He who charges lots of money shall rest easy, and shall cover a multitude of problems.” I think that’s in the Old Testament somewhere, towards the back. If you can charge a premium for what you do, a large premium, and you can charge it consistently, then you’ve got it made. There are agencies here in Utah that charge 10 times what MWI charges, and MWI charges ten times what some other firms charge. Well, maybe ten times what some freelancers charge, and certainly more than most firms.
But seriously, if you can charge a lot of money then you’ve got all your problems solved. You can afford to turn away clients you don’t want, you can afford the best employees, you can make sure you turn out the best work, and one thing leads to another, success breeds success, and so forth. But as I stated towards the beginning, it’s easier said than done.