This post is a chapter from my upcoming book The Complete Software Developer’s Career Guide. I’m writing the book live on this site week-by-week. If you enter your favorite email address here, I’ll send you the prior chapters and get you caught up, then send every new chapter as it comes out!
There are two basic types of employment in the software development industry. You can either be a contractor of some sort, or you can be a salaried employee. In my career, I’ve been both, and each has a distinct set of advantages and disadvantages.
In fact, in some companies, there is an entire culture built around the differences between contractors and employees.
When I worked at HP, first as a contractor, then as an employee, there was this notion of “blue badgers” and “orange badgers.”
Orange badgers were the contractors. They were typically paid less, had no benefits, treated like second class citizens, and even at times told they couldn’t use the HP walkways or participate in any onsite activities. Blue badgers were HP employees who had a blue badge that signified their elite social status. They were employees and entitled to all the benefits contractors didn’t get.
It was difficult to become a blue badger. Every contractor hoped to become one, but few did. However. that is just one company culture. I’ve also been places where the entire hierarchy was flipped around.
I worked on a government project where contractors were paid two to three times more than the government employees and were considered to be the “elites.” In that government environment, no one wanted to be an employee; instead, everyone wanted to be a contractor.
I remember when they offered government jobs to many of the contractors and most of us refused. Why would we take a huge pay cut for just a little more stability?
The decision between being a salary worker and a contractor isn’t just about money, and it is very situational.
In this chapter, I’ll help guide you through that decision as we talk about the types of contractors — there's more than one — and the considerations of each type of employment.
Types of Contracting
Let’s begin by talking about contracting.
I’m going to define contracting as any job that is not a salary job, although there are a few salaried consulting or contracting types of jobs where you are paid a salary while you are billed out to a client on an hourly basis. (Do not take those jobs; those are for suckers.)
Therefore, when I say contractor, I mean hourly worker of some sort.
Before we can dig into the details of being a contractor, we need to know the types of contracting.
The first type of contractor is what I call an agency contractor, known in the US as a W2 contractor.
This is the type of contractor who is working for an agency which bills them out to a client. They do not work for the client directly. With this kind of contracting, you’ll usually fill out some time sheet for how many hours you bill, and you’ll get paid an hourly rate as a contracted employee of the agency you are working for.
Some of these relationships can be extremely predatory.
What I mean by this is that it is not uncommon for an agency to hire software developers to work for one of their clients and then bill that client 200% to 400% more than what they actually pay the software developer.
I’ve worked on contractors before where I knew that some of the software developers were being paid $25 an hour while the agency was billing the client over $100 an hour for their work. Now, before you get all crazy and start a protest, understand that due to the nature of this type of employment, some markup is necessary and reasonable.
Since with this type of contracting you are technically an employee of the agency, that agency has some overhead associated with keeping you employed. In the US, agencies would be responsible for paying employment tax, possibly providing some benefits like vacation or sick days, handling payroll, and a few other expenses.
You should always expect some kind of markup. I always advise contractors to know their markup and to negotiate it.
My definition of an independent contractor is a contractor who primarily works for one client. They may even work for that client through an agency, but they operate as their own business.
In the US, we sometimes call this corp-to-corp billing. Essentially, as an independent contractor, you own a business or legal entity that you do business under and you have a contract with a client or agency for a particular job.
The biggest difference between this type of contracting and being an agency contractor is that you are not on the agency’s payroll. Instead, you are responsible for all of your own overhead. You are essentially self-employed in this case.
As a result, you should expect to be paid a higher hourly rate for an equivalent job, since you are responsible for paying your own self-employment tax, payroll, and any benefits.
Finally, we have the freelancer.
I define a freelancer as someone who is an independent contractor who works for multiple clients or takes on multiple small jobs instead of working primarily for a single client.
This kind of contracting involves really running your own business because you have to deal with the overhead of finding clients, setting up your own contracts, invoicing, and everything else associated with running a business.
I think of a freelancer as a contractor hired to work on a specific project or do a specific job, while I consider an independent contractor or agency contractor to be some sort of staff augmentation.
If you are looking to get the highest rate possible, freelancing is probably the most difficult option, but if you know how to market yourself, you can do pretty well.
Remember, though, that these are just my definitions and ways of explaining the differences between the types of contracting arrangements. There are, of course, other ways to classify contractors and all kinds of variations and hybrids of these types of employment, so don’t take this as gospel.
If you aren’t a contractor, you are probably in a salary position or you are unemployed. A salary job, in my definition, is any job in which you are not a contractor. Instead, you work directly for the company that is paying you, and they pay you on a non-hourly basis.
Of course, there are some direct employment jobs in the software development world where you are technically an employee and paid hourly — but those are fairly rare. Usually, if you are an employee, you are paid a salary.
A salaried job usually means that the hours you work do not determine the pay you receive. This can both be a good or a bad thing, depending on how many hours you end up working. (See the chapter on salaries and negotiation for more details on the economics of this.)
Let’s jump right into the discussion about contracting versus salary by first talking about that all too important resource: money. In most cases, you will be directly paid more money as a contractor for an equivalent job.
Don’t believe me? Okay, suppose you had a company that offered to pay you as either a salaried employee or a contractor. Perhaps the salary for the job was $80,000 a year.
It’s quite possible that as a contractor you might be offered a rate of $60 per hour. Now, if you do the math on that, $60 times 40 hours a week times 52 weeks in a year equals $124,800.
This seems like much more money than an $80,000 a year salary job, but — if you remember the chapter on salaries and negotiations — you know that there are other factors that make up the total compensation which can drastically alter the deal.
Breaking Down a Contracting Rate
Let’s take this simple case and work out some scenarios to see why you would be paid more as a contractor than as a salaried employee.
We’ll start by backing two weeks out of the 52 for vacation and another week for holidays. (Contractors, especially independent contractors, usually are not paid vacation.)
So, $124,800 – (3 * 40 * 60) = $117,600.
Now, we’ll subtract out health insurance. Let’s just value it at $1,000 a month, which is probably pretty typical of what a company pays for an employee’s health insurance.
So, $117,600 – $12,000 = $105,600.
Then, we’ll add up a few other benefits the company would usually pay, like 401k matching, bonuses, a gym membership, etc. We’ll be conservative and say this costs the company $300 a month.
So, $105,600 – $3,600 = $102,000.
Now, if you are an independent contractor, you have to pay your own self-employment tax. If you are an employee, then the company has to pay half of it, which is about 7.5%.
We can do this one of two ways. We can either take the $80,000 salary and figure out the company’s share of 7.5% — which they can pay to you directly as a contractor — or we can take your pay as a contractor and take out the 7.5% to see what you’ll net.
I’m going to take the second approach because I want to show you how to compare a salary to a contract job rather than how a company can afford to pay you more as a contractor. Make sense?
So, we have 7.5% of $117,600 = $8,820.
I used the $117,600 number because I am assuming you will probably take your own vacation and holidays, but if you were going to work 40 hours a week all 52 weeks, this would be different.
We now have $102,000 – $8,820 = $93,180.
Not as big of a difference now is there?
What looks like a $45,000 difference can easily be just $15,000.
From the employer’s perspective, hiring someone at $80,000 might cost the company $100,000 – $120,000 a year in total costs.
Why Contractors Get Paid More
I know many software developers who directly compare a salaried rate to a contract rate by simply multiplying the contract hourly rate by 40 hours a week and 52 weeks a year and then proclaim that they’d never be an employee because they get paid so much more as a contractor.
While it is generally true that contractors do get paid more, you can see that a large part of that extra pay is an illusion. Furthermore, oftentimes, companies will pay more for a contracted employee because of flexibility.
An employee is more of a fixed cost whereas a contractor can be easily removed when their services are no longer needed. It’s also worth mentioning here that freelancers typically will need an even higher hourly rate to get close to an equivalent salary because of a few additional factors.
Freelancers are going to have more overhead since they will be running a business with more clients, and there are costs associated with that. They’ll also have to spend time working that is not billable since the time to manage books, find new jobs to work on, and bid on jobs is all unbillable.
Also, they may also not be able to easily fill up 40 hours of work each week. Overall, I generally say that a freelancer’s bill rate needs to be 2x the equivalent hourly rate of a salaried position in order for it to be equivalent.
For instance, an $80,000 salary job might be equivalent to a freelancer billing out at:
$80,000 / 52 / 40 = $38 an hour
$38 x 2 = $76 an hour
Before you decide to become a freelancer, think about this.
(You can find a more detailed discussion in the careers section in my Soft Skills: The Software Developer’s Life Manual book.)
Utility Value of Benefits
Now, I know what you might be thinking: “I don’t need all those benefits, John; I just want cash!”
It is important to consider not just the face value of the benefits but the utility value.
For some people, being a contractor can be an extremely profitable position versus regular salaried work because they simply don’t care about or won’t use the benefits provided as a salaried employee.
If you take our example above, and you decide that you don’t care about vacation or holidays and want to be able to maximize income by working 40 hours a week, 52 weeks a year, you could add back in the $7,200 we took out for vacation time and holidays.
If you were willing — and allowed — to work overtime, you might estimate your average week to be 45 or 50 hours a week as a contractor, and that would again bring your overall compensation up. One of the contracts I worked on had a max time of 50 hours per week that was automatically allowed. Since I maxed that out every single week, contracting became much more profitable for me.
Also, perhaps your spouse works and has health coverage for you already—or you just don’t want to have health insurance. In that case, the health insurance benefits may be worthless to you.
Plus, at least in the US, if you structure your company correctly, and you are earning enough money for it to be worth doing, you may be able to reduce self-employment tax on a large amount of your income by being an employee of your own company and paying yourself a smaller salary than the total contracting fees you get.
Ultimately, what does this boil down to?
At least in monetary terms, choosing between contractor and employee is very situational. It is going to depend on what benefits you use, how many hours you will and can work and even if your spouse is employed or not.
At least now you should have a framework you can use to realistically evaluate the choice between being a salaried employee or contractor. Not quite as simple as dividing by 52 and then 40, is it?
I’ve already alluded to some of the differences in work environments with my story at the beginning of this chapter, but let’s dig a little deeper, shall we?
In most work environments, just like in all social and cultural systems, divisions and classes develop. Some companies have huge distinctions between contractors and employees, but in other
Some of the differences in the way people are treated have to do with labor laws which define what a contractor and what an employee is.
Some companies, in order to avoid lawsuits about having to provide benefits to contractors, will be very deliberate in making the distinction, and this doesn’t always create the best working environment—especially if you are a contractor.
At some companies, the hiring process for an employee is even more rigorous and selective. Add that to fewer employees as compared to contractors, and it can create even more of an elitist mentality. Generally, I’ve found the larger the company, the more so this is true — except in government, where strangely it is a bit reversed.
The reason why I am telling you this is that I don’t want you to be surprised if you feel like a bit of an outsider if you take a contracting job at a large company.
While there’s nothing wrong with being a contractor, it’s also important to be aware that you may not be included in the company culture.
A good consolation, though, is that you are likely to be paid more, and when everyone else is working overtime and not getting paid, you’ll feel pretty good putting that 50 hours on your timecard and getting paid for it.
Again, not all companies are like this. I’ve found in smaller companies there isn’t much of a difference between contractor or employee at all.
Here are a few other considerations besides money and work environment which may help you decide if you want to pursue some sort of contracting arrangement or salaried employment.
Do you like to be part of a group or organization — a tribe, if you will? If so, you should think about how being a contractor might make you feel “left out.”
If your long-term aspirations are to grow with a team and be part of a company that is achieving a mission in the world, being a contractor might make you feel a bit more like a hired mercenary.
I’ve had this experience myself. In fact, at one point in my career, I moved from a very lucrative contract position in a government program that was paying me $100 an hour to a salaried position, which was comparatively less, simply because I wanted to feel like I belonged to a team, and I was tired of just working for money.
Also, contracting positions usually don’t carry as much about what’s on your resume. In general, it is easier to get hired as a contractor, but there is a big difference between being a Microsoft employee and working as a contractor at Microsoft — at least in the eyes of hiring managers, where they’ll see being an employee much more favorable.
Doesn’t mean contracting jobs will necessarily hurt you, though. For instance, you can structure the wording on your resume to put emphasis on where you worked and what you did, not your method of employment.
Finally, upwards mobility may be difficult unless you are willing to switch contracts every one or two years. I know several contractors that have been working for HP for over 15 years who are still being paid close to what they were when they started.
Yes, they have been enjoying a somewhat cushy job, but if you are going to stay somewhere for 15 years, you should probably be an employee and climb the corporate ladder.
Most software developers have no idea about the difference between being a contractor or salaried employee, so congratulations, you are ahead of the game. Up next, we’ll be talking about another mysterious world to most software developers: recruiting.
You might be surprised how it actually works.