Independent consultants have to get used to being responsible for every part of their business, or they won't stay in business long. Those who are really cut out for the job cherish their independence and take pride in their ability to do it all on their own. Perhaps they also have trouble trusting others to do the job right — but that attitude can be taken to ridiculous extremes. Sometimes it makes more sense to let somebody else handle it.
As an extreme example, think about Internet access. We all use it, and we all rely on someone else to provide it: telephone, cable, or some other network company. Even if you have the technical expertise to build your own end-run around your ISP, it wouldn't make sense; you'd spend all your time insuring that your network was up, secure, and handling the load. So, instead of relieving yourself of the cost and frustration of working with the telephone company, you would have merely moved your costs and headaches around — onto your own shoulders.
That's why programmers don't write their own compilers any more. Even those who do write compilers rely on other compilers that were written by somebody else.
If you're running your own business, you shouldn't be preparing your own tax returns, unless you're a tax accountant. Sure, you might be able to figure it out. You might even do a better job than an accountant would, but you'd have to spend a lot of time working on it — time that you could have billed to clients or used to build your business. Someone who does tax returns all the time will charge you less than it would cost you to do it yourself (even if their fee makes you catch your breath) because when you're distracted with activities like that, you lose time, opportunity, and focus on your business.
The ideal geek hosts his or her own Web sites, but most of the real-life geeks I know use a hosting service instead. It makes sense to let someone else worry about the up time, connectivity, bandwidth, and security issues related to managing a server that faces the wide-open Web — so we can worry about other things. I manage all the software and the content on my sites (I'm a software developer, that's what I do), but it could even be prudent to farm out some of that work as well.
A couple of days ago, my internal server's main hard drive crashed (no RAID, so it was down). In years past, I would have essentially lost a day because I would go out and get a new drive and then spend the rest of the day installing the OS and setting everything up again. But this time I had some urgent work to do that didn't require that server; yet, I knew I would need to have it back up real soon. So, I called a friend of mine who specializes in hardware and offers emergency services. He found a suitable drive at a great price and installed it for me, while I continued my work. What he charged me was more than made up for by the billable time I would have lost if I hadn't used his services. And because he knows hardware better than I do, I know it was done right. I felt that I lost geek cred for not doing my own repair, but it was the right thing to do.
What about outsourcing your work product?
As I said, I'm very skeptical of others' ability to execute what I want when I know what I'm doing, so I rarely subcontract. The times when it does make sense are when the expertise required for the work doesn't match my own — on either side of equal. If it involves a technology with which I'm unfamiliar, it could be expeditious to bring in an expert in that field. Conversely, if the work is a simple task that only requires a lot of time, then a lower-cost alternative might be found in a junior colleague.
You have to be careful about outsourcing your work, though. First of all, a tax accountant may mess up your finances, but he won't damage your reputation — outsourced work can. Second, bringing in more people may add more costs than just their compensation. You have to be able to manage the interactions, clarify misunderstandings, and avoid stepping on each other's work. It works best when the portion being outsourced is clearly separated and specified. Third, you need to make sure your client agrees to the arrangement; otherwise, you could have trouble collecting if anything isn't perfect.
In all of these scenarios, the question of when to outsource can be answered by one of the following reasons:
- When it saves money. Assuming you have enough work to keep you busy, then if you can get someone else to do the task for less than your lost billable time, go for it. In that case, it isn't a question of "can I afford the luxury of having someone else do it?" but rather "can I afford the luxury of doing it myself?"
- When it contributes to quality. If the person you can bring in provides beneficial expertise, then you can afford to pay them even more than your time is worth, because of the time you'll save not enduring a failure and/or fixing it later. Sometimes, just having another head dedicated to the problem can improve quality. But don't add too many.
- When you don't have enough time. There's too much that needs to get done too soon, and the cost of waiting for part of it outweighs the cost of outsourcing. But again, be careful about assuming that two people can work faster than one — it doesn't always work out that way.
Chip Camden has been programming since 1978, and he's still not done. An independent consultant since 1991, Chip specializes in software development tools, languages, and migration to new technology. Besides writing for TechRepublic's IT Consultant blog, he also contributes to [Geeks Are Sexy] Technology News and his two personal blogs, Chip's Quips and Chip's Tips for Developers.