This article was inspired by a request from Robert Sweeney, CEO at Facet, to describe what life as a contractor is like for me.
Who should read this?
Full-time developers who are currently employees, yet are curious about what contracting would be like.
What has the transition from employee to contractor been like?
Looking back, I guess I’ve always been a contractor in one form or another. A friend and I started software and website contracts in high school1 in 1993 and continued that throughout university. My career has alternated between full-time employment (usually with a side contract) and full-time contracting. Maybe I should take a break at some point :)
My experience is perhaps a little odd in that I’ve never gone through a period of multiple short-term (<1 year) contracts. I think many people believe that a contractor or consultant hops from project to project every few months but that’s not necessarily the case.
How do you find work?
The majority of my contracts have come indirectly via friends and colleagues.
The only exceptions to that were early in my career (2001) with some work on Rent-A-Coder (in the hundred dollar range) and on Elance (in the thousand dollar range). Bidding for those contracts was brutal since you were competing with firms in Eastern Europe and Asia who could easily underbid to win.2
At the same time, one Elance contract turned into a fifteen-year relationship, which more than made up for original effective hourly rate. I wouldn’t gamble on that again though…
This all sounds fairly straightforward…
Of course! Everyone should become a contractor if they want to :) The main issue I’ve experienced (and unfortunately more than once) is getting paid.
- Finding a contract is relatively easy.
- Signing one is slightly more work (especially to get reasonable terms).
- Actually getting paid can be a very different story and there is very little recourse when you don’t.
In general, employees can feel relatively secure they will get their regular paycheque. Contractors have to deal with a variety of terms. Here are just a few:
- Full payment on completion - run screaming from these
- Monthly billing, Net 30, 60, even 903 - not bad
- Some percentage up-front, and the rest split between milestones and completion - robably the fairest for everyone involved
Early on, I got burned quite badly by accepting a four-month sub-contract for four full-time developers with payment due when the actual client accepted the work. Assuming that a signed contract meant something, I personally paid the other three devs bi-weekly. At the end, through a series of unfortunate events and bold-faced lies, I ended up getting zero dollars for the contract and had to sell our house to make up for all the debt incurred (around $40K CAD in 2003.)
That was by far the worst experience. I’ve had Net 30 monthly contracts where the final month never gets paid, or travel expenses that somehow got rejected after-the-fact, and part of being a contractor is accepting that the business world is tough.
But surely having a contract counts for something?
From what I can tell, at least in North America, it doesn’t mean much. Even if you go through the hassle of taking someone to court (which is expensive) and you win (at least in Canada you will get your court fees back), there is still no way to force someone to pay. You can send a collection agency after them, but that’s only a minor hassle for someone who is obviously of low moral fibre. Really your only option is to make your peace with the situation and try your best to avoid similar ones in the future.
So is it worth it?
Overall, it’s been worth it for me. For others, there are so many factors to consider it really depends on your circumstances.
I’ve really enjoyed working on a different project every one to three years: there is always a new language, framework, environment or business to learn about which is awesome. Constantly learning is one of my joys.
Gaining experience in different fields also provides the opportunity to see where businesses are similar and how certain problems (e.g. invoicing) don’t need to be solved anew each time. You can definitely translate ideas from one project to another.
Finally, each new company means meeting an entirely new set of people and hopefully meeting at least a few that you admire and can learn from. It also means a chance to improve your network which I believe is the best way to find other work.
I feel it necessary to add a word of caution about growing your network: it’s only useful if you make meaningful relationships and the people you associate with are good. Not only good at what they do, but genuinely are good people.
For example, if you side with a rogue VP who steals half the developers and the company’s code to create their own startup, it may well come back to haunt you in the end. The internet has a longer memory than you might think. It always pays to follow the golden rule.
What if you are new to the field and/or don’t have a network?
Create your own network. No one is going to hand you one on a silver platter :)
- Talk to friends and family, especially those in business or who know others in business. The same applies to any group you’re involved with (sports, social, religious, etc.)
- Attend your local Chamber of Commerce meetings and events. This allows you to listen to people in business with problems and opens the door for discussing solutions.
- Find people you admire and see if they will agree to be a mentor. Mentors are very helpful for expanding networks. (Tim Ferriss talks about this a lot.)
- Participate (and give technical help) in online communities: not necessarily open-source projects, but forums where businesses are trying to solve problems.
Apart from a network, how else can people find contracts?
- Hiring full-time employees is an expensive and time-consuming task. Look for ways that you can offer your service as a contractor that would benefit a hiring manager.
- Contact companies that hire remotely. They are usually set up to entertain contract work.
- Sign on with a good consulting firm4 and then pick the contracts that best suit you.
You mentioned “many factors to consider” in becoming a contractor. What are the main ones?
Personal: If you have a partner, do they support the idea? If they are concerned about “job security”, I can offer a few discussion points.
Situational: Outside of technical knowledge, will you be restricted from certain types of contracts? For example, if there’s a baby on the way, could you take a contract that requires travel?
Financial: Could you survive not being paid for some or all of a contract? For how long?
Stress tolerance: Outside of financial issues, would you be ok not working for some period of time?
Business knowledge: Do you have a basic understanding of accounting and taxes? Do you know what valid business expenses are? If not, this is the easiest one to solve as there are many online resources or in-person seminars to attend. Your local Chamber of Commerce is a great starting point.
What are those discussion points around “job security”?
- There is no job security in full-time jobs and there hasn’t been for a while. The market crashes and wipes out jobs in many industries. Governments downsize and many civil servants have to look for work. Even large companies like Microsoft will do a “purge” at seemingly random times.
- Being an employee could be compared to putting all your eggs in one basket.
- Contracting provides flexibility and, with the right mindset, a pipeline for other work. It allows you to be proactive (i.e. planning your next move in advance) rather than reactive (e.g. scrambling to find something post layoff.)
- Contracts are often much easier/faster to start vs. applying to a permanent job since there is far less lead time involved on both sides. This also means it’s easier to find something new quickly if a contract unexpectedly ends.
- Contracts in different industries allow for learning, making you more employable (even if you return to being an employee.)
Is there any difference between contracting and consulting?
For me, “contracting” is generally “being hired to deliver software.” Consulting may include development, but often it has more organization-level responsibilities attached. The latter should allow you to effect change but requires dealing with politics. The former is more akin to what your full-time job was, but with better pay. :)
Consulting is also more likely to expose you to people who want you to fail. As a developer (or a contractor), you are most likely responsible for a deliverable you have complete5 control over and the work can speak for itself. As a consultant, you may be “forced” onto a group of people who haven’t been able to deliver what they promised and their boss is unhappy with them. It’s in their best interest for you to fail so they can say “See, it’s not our fault! Even highly-paid consultants can’t make this work.” It can be an interesting world out there for sure.
Any other advice to potential contractors?
Spend time determining how much you are worth and never6 sell yourself short. There are many articles on calculating your hourly rate using your current full-time salary as a starting point so I won’t repeat that particular formula here.
However, I would suggest using that previous hourly figure as your absolute minimum: markets and industries dictate a lot as well. One site that’s been covering this topic for a long time is Double Your Freelancing Rate and I’m sure there are others. Take some time and consider your acceptable range before applying for any contract.
Thanks to my wife, Lisa, for this interview format and taking a ton of notes during the process :) I look forward to reading what other developers in the Facet network share about “freelancing from the trenches” in the upcoming months!
- And, no, we weren’t in a big city either. Summerside, PEI had a population of about 14,000. [return]
- In 2017, Upwork (formerly Elance) created US- and UK- only filters to combat this issue. [return]
- A Microsoft contract via an intermediary was 2%/10 Net 60. Naturally, they always took their extra two percent. Grumble. [return]
- Like Facet, of course :) [return]
- You know what I mean. [return]
- Yes, there are always exceptions to every rule. [return]