Miraculously, I've been surviving on contract work for ten years, now (all but one were game projects). I wrote these tips on the contracting lifestyle at the five-year mark, so some details are out of date, e.g. instead of Java mail lists, I'm on twitter and the Unity forum, and I don't get CMP spam, anymore (except for the occasional survey)
"Every contractor working on the Death Star knew what he was getting into" - Clerks
Know What You're Getting Into
Back in the early nineties, I had dinner in Boston with an operating systems engineer who worked on a contract six months a year and spent the other half of the year at his cabin in Maine. I thought that sounded like a pretty good lifestyle, and these days I can tell people are similarly intrigued when they ask me about my consulting business. It sounds appealing - be your own boss, make your own hours, pick your own projects, and get paid more than you made as a salary. But don't be misled by the fancy-sounding title "consultant". Sometimes it means just working on a contract basis, and sometimes it's a euphemism for being in-between jobs.
In fact, as a consultant, I earn less on average than I did from a salary, there are long gaps between paying projects (when I first began telling people I was an independent consultant, I felt like I was lying), and some years I qualify for the low-income discount from the utility companies. But I have time for my own projects between contracts, I find the nitty-gritty of running my own business interesting and educational, and (perhaps this is my imagination) I receive more courteous and professional treatment as a contractor and consultant than I did as an employee.
So if this lifestyle still sounds appealing, read on...
Consulting can be very unsteady work, so you shouldn't rely on it as a living if you don't have a good cash reserve. In general, I've heard that you should have six months of living expenses saved up in case of unemployment. For a consultant, I think you should have at least a year's reserve.
If you had employer-sponsored health insurance, be sure to continue that coverage under COBRA until it expires or you have found other insurance. Under federal law, you're entitled to health insurance as long as you've taken full advantage of COBRA, but if you neglect to sign up or you discontinue the coverage early, you could be out of luck - insurers are not then required to grant you a new policy. Companies with real HR departments usually know what they're doing, but some small companies play fast and loose with the rules, so don't can't assume they'll do the right thing.
I've been in a couple of startups that didn't seem aware of their health care obligations - one completely ignored my queries about signing up for COBRA, and after the decision period expired I received a letter from the insurer stating that I was no longer eligible. At the other, the owner expressed surprise when I pointed out that California extends COBRA rules to small companies via CalCOBRA, and then gave me a waiver to sign ignoring the allowable decision period.
It's unfortunate that the U.S. health care system relies on employers to provide affordable health insurance, but given that, it's important for you to understand the laws that are there for your protection and to take advantage of them.
Always get paid. With money. You may get offered equity, royalties or the reward of an experience, but take those in account only after discussing cash compensation.
If the client is certain about making money off the project, he should put his money where his mouth is and pay you now. And if the prospects are more dubious, he should definitely pay you. Either way, there's no reason you should take the risk.
In some cases, a client will try to renegotiate terms after the fact. In the worst cases, like an old apartment roommate of mine who just assumed I would cover his rent, I've had a few clients who expected me to continue working on their projects even when they stopped paying me.
A game publisher that hired me to evaluate builds from one of their developers terminated the contract, then a month later sent me a new build to evaluate. When I asked if this meant they wanted to restart the contract, the reply was: "Oh, we thought you could just look at it." But at least they paid. When I informed another client that our contract period was up, they said, "now this is the transition period", expecting me to supply free support while they dithered around with the contract renewal. The worst transgressor in my experience was a game developer who hired me to help finish the "first-playable" build of a game and told me that that it would absolutely be delivered in five weeks or "there wouldn't be a company anymore." After six weeks, when I asked if they wanted me to continue, the reply was "it's entirely up to you." Apparently there was an implicit "but we won't pay", since the invoice I submitted a few weeks later was met with the classic denial-blame-bargaining phases of weaseling out of a bill. Ironically, that developer had a history of threatening and suing any publishers who tried the same trick on them.
You shouldn't have to do this, but be crystal clear that you expect to be paid. Avoid deadbeats. Check your network - few companies have pristine reputations, but some are repeat offenders, to the point where they effectively have bad credit and contractors won't deal with them. Don't take "...because of our financial situation..." for an excuse. (I did on one occasion just so I wouldn't have to listen to any more whining, but righteousness is expensive) If they can't pay their debts, they should declare bankruptcy. Any client that wants to be treated as a charity should reincorporate as one.
Wait 'til the Check Clears
As a teenager in Iowa, a bus driver noticed I'd tried to get on with a few cents short of full fare and gave me a succinct lecture: "if you don't have enough, just tell me." I wish he could set some of my clients straight. In my experience, most clients do pay up, but when they're having trouble coming up with the money, they don't tell me what's really going on.
For eight months I had no problem submitting invoices to a particular client until one day the accounts guy who'd processed of all my previous invoices asked "Do you have authorization for this?". The next time I tried to submit an invoice, that guy was gone and another person directed me to drop the invoice off in a nearby office - an empty office. It was no surprise when I inquired about it six weeks later that they had no record of it. But that was better than the company whose office flunky took my invoice and then went to Taiwan for a long vacation. Or the company who told me they couldn't complete the check because "the girl who does that is manning the switchboard right now". I mean, really.
When you start getting "the dog ate my homework" excuse, it's time to wrap it up. And don't spend any of that money until the check clears.
Don't Sell Yourself Short
As a rule, a contract rate should be higher than a salaried rate. Prospective clients that act surprised at that are either disingenuous or not too bright. Remember, the client isn't providing you employee benefits such as health insurance and training, paying your employment tax, or paying you severance when the contract is terminated (unless you have negotiated it). You have to cover your own insurance costs, pay a fifteen percent self-employment tax in addition to regular income tax, keep yourself up-to-date and marketable, oftentimes provide your own equipment and facilities, and cover your living expenses in the periods between contracts.
Availability of contracts is largely a matter of timing. When business is good, that means you'll have to turn down some projects while you're occupied with others. Taking a low-paying contract may mean you'll passing up a higher-paying contract in the meantime - you're paying an "opportunity cost".
During just one year, I missed out on at least three potential contracts because I was busy on others. In one case, I passed on a one-month full-rate job that would have paid twice more in total than the lower-rate two-month project that had my attention at the time. There were some other considerations on the lower-paying project that hopefully made it worthwhile, but it's hard not to feel regret when you've traded off that much income.
Longer-term contracts don't necessarily justify lower rates. A contractor friend of mine told me when I started out that companies can terminate a contract at any time, and you just have to factor that into your price. And indeed I've found that to be true - most clients will have no compunction about terminating a contract if the funding falls through, or if they think they can get someone cheaper to do it.
One client pouted that it wouldn't make sense for her if I didn't stay on project for the duration, expected to be another year or so. The entire project was cancelled a few weeks later, and I didn't even get paid for all of that. I have to say, that didn't make sense for me.
It's unfortunate that some clients will stoop to haggling like car salesmen ("I'm writing down a number....").
I had one client who not only bargained down my rate ("that's more than I make!", he exclaimed), but also wanted payments tied to milestones, ostensibly as as formality. And every couple of weeks, they had just one more favor to ask, until, by the second contract renewal, they were cramming as many listed but unspecified deliverables as they could into the schedule on a weekly basis without even making payments for each deliverable, and trying to sneak in unpaid "transition" periods of work between contract renewals.
If a client acts cheap before the contract even starts, it's just going to get worse. Phrases to watch out for: "We're on a budget", "This should be easy", and, my favorite: "I would do it myself, but I don't have time." Avoid these projects - it's not worth the aggravation.
Make Your Reputation
Every project you get is a potential link to your next one. One executive-level consultant told me he used to try marketing himself aggressively, handing out business cards at networking parties, etc, but all of his work came out of his existing network. This has been true in my case, too - all of my contract work (and many of my salaried jobs) have come through referrals.
So it is important to maintain and enhance your reputation on each project. This includes getting quality work done, and managing expectations.
I've heard complaints from clients about having to throw away work performed by previous contractors just because no one could understand their code. And I've heard of contractors who will actually offer one rate to do a quick and dirty job, and a higher rate to do clean code with good documentation. That shouldn't be a choice - do the job right and be honest about how much it will cost and how long it will take, even if it's not what the client wants to hear.
Besides good work, you also want a reputation for billing fairly and not trying to milk each project. I've seen contractors bill the maximum allowable hours no matter how much they actually work, and contractors who try to extract every little perk and expense reimbursement, down to free sodas and per diems. This makes contract negotatiation harder for everyone. Forget the small stuff - it's the big payment that counts, and if you have a reputation for billing fairly, it's easier to maintain a higher rate.
And most of all, don't make the person who referred you regret the decision.
If employment is like a marriage (or at least a steady relationship), then contract work is like prostitution. And I don't mean that in a bad way.
The most important thing in the contract relationship is that you get paid. As a mercenary, you can offer friendly suggestions about how your clients run their businesses, but it's their business.
Put the "Contract" in "Contractor"
My least favorite part of contract work is the contract itself. The conventional wisdom is "Get it in writing". If someone is going to cheat you, they're not going to let a piece of paper stop them, but it doesn't hurt to have something that you can fall back on in the event of legal recourse, and even for "handshake" agreements, people can have different memories of even the basic terms, so you want to get that written down in some form.
Typically, the client will present you with a contract put together by the client's attorneys, who are solely representing the client's interests. It's up to you to protect your interests. So don't get bullied into accepting any terms that make you uncomfortable.
Statements you should ignore:
"This contract is intended to protect your interests." Bah! The company's attorneys are bound to represent their clients' interests, and that does not include you. Go ahead and ask the company's lawyers if they are representing your interests.
"No one has complained about this before." That's probably not true, and if it is, it means they didn't read it carefully or bother to have their own lawyer look at it.
"I have to protect my company's interests." So what? You have to protect yours. Lifelong servitude and your first-born child would be in your client's interests, but that doesn't make it reasonable.
Sometimes it's hard to get a clause removed just by asking, so one tactic I've taken is to make sure the clause goes both ways. After all, the contract is between two business entities, so it should be fairly symmetric.
When faced with a non-poaching clause that stated if I "encouraged" any of their employees or contractors to leave the company within a year of the contract's duration, the penalty would be $100,000 or a year's salary of the employee, I asked that the clause apply both ways (hey, I could use $100k!). The clause was conspicuously absent in the next draft of the contract.
Just because the contract was put together by an attorney doesn't mean that it's worth the paper it's printed on. As with doctors and automobile mechanics, it's easy to assume lawyers know what they're talking about. But sometimes they do, and sometimes they don't.
An in-house counsel for VC-funded startup assured me that the indemnification clause in my contract had nothing to do with financial liability. When I insisted that "indemnify" meant "to pay", she looked it up in her pocket dictionary and had to agree. But I guess she hadn't authored that clause - I later found a word-for-word copy of the contract on a sample-contract web site.
Another piece of conventional wisdom is to have your own attorney look at your contract. But attorneys are expensive. In general, I don't bother with an attorney if the contract looks straightforward, especially if the contract is small. If there's anything that is not clear to you, you should definitely have an attorney look it over (or walk away if the contract pay is too small to warrant the contract hassle and legal fees). But as before, keep in mind that not all attorneys are created equal:
If you get an attorney, find one who is capable and knowledgable in your industry. And pass the name on to me!
In between projects, you may be inclined to panic. If you do, you're probably not cut out for this business. Downtime is an opportunity to catch up on things that may be neglected while you're busy on paying work.
You can keep yourself up to date by attending technical presentations, conferences and trade shows. It's an opportunity to see the latest products and technologies, and perhaps investigate new areas in which you can work.
I like to go out of town for an industry show after wrapping up a big project - usually the more stressful the project, the farther I like to travel. It's a nice opportunity to unwind, get away from the computer for a few days, and see what I've been missing the last several months. I usually look for shows with free expo passes rather than pay for a full conference registration (not for any good reason besides being cheap). Watch out for spam, though. I've been unsubscribing from CMP missives for years, now.
You can participate in technical discussion groups. It's an opportunity to toss around ideas, identify people you might want to work with (particularly in local area groups), and help out people who might help you someday.
I've kept up with the many interesting developments in Java and Java-based projects by following the local (Orange County and Los Angeles) Java User Group mail lists. I don't particularly like sitting in meetings, so I eschew the regularly-scheduled presentations, but the discussions are often illuminating, and they keep me informed of the latest promising tools. I even brought in one group member as a co-contractor on a project.
You can contribute to open source projects. It's an opportunity to communicate with some excellent developers around the world, research open source tools that you may find useful, and give back to the community.
During my first time off, I made some fixes to JFOR, an XSL/FO-to-RTF converter, so I could use it to generate Word-readable versions of my resume from an XML Format. Since then, I've decided recruiters and HR people should know how to read and cut-and-paste from PDF, so I don't use JFOR, anymore, but I'm gratified to see once in a while an acknowledgment of my contributions from the JFOR list.
With all of these activities, the idea is to improve your capabilities and marketability, expand your network and establish some street cred, and enjoy yourself in the meantime!