In the freelance programming world you’ll often hear terms like “freelancer”, “contractor”, “consultant” and even “freelance consultant”. I’d like to help put some clarity around a) what these terms mean to different people and b) what the real work is that most freelance programmers are doing.
First let me say that there’s basically no consensus as to what “freelancer” or “consultant” mean. People have abused these terms (especially “consultant”) to the point where they have no real meaning.
I want to share my personal definitions of these terms. I consider a freelancer and a consultant to exist at opposite ends of a Freelancer-Consultant Spectrum, or more precisely what I’d call an Employee-Consultant Spectrum.
I don’t necessarily see any particular self-employed programmer as being either a freelancer or consultant. There exists a large gray area in between the two.
At one end of the spectrum you have an employee: order-taker, implementer. At the other end you have a consultant: trusted expert. Probably about 95% programmers who call themselves “consultants” are really just contractors.
A contractor has much in common with an employee:
- Work at client’s office
- Attend client’s meetings
- Work right alongside client’s other programmers
- Seen as basically interchangeable with W2 employees
- Get paid about the same as client’s employees (but hourly 1099 instead of W2 salary)
I see Freelancer/Contractor as being just one small notch from Employee. Here’s how I’d compare Employee, Freelancer/Contractor with Consultant.
|Perceived value provided||Bandwidth (more features/bugs addressed)||Bandwidth (more features/bugs addressed)||Counsel (save/make money for business)|
|Pay||Market rate||Market rate||Proportionate to value delivered|
|Labor intensity||Large quantity of difficult work||Large quantity of difficult work||Small quantity of easy work|
|Presence||Onsite or remote, ~40 hours||Onsite or remote, ~40 hours||Infinitely flexible|
Notice how the Employee and Freelancer/Contractor columns match 1:1. That’s because a contractor is, for all intents and purposes, an employee. And when you hear all these stories about freelance programmers and imagine their kick-ass lifestyle, 95% of these people are really just glorified employees.
There are of course exceptions. Not all contractors are seen as peons. At the same time, not all employees are seen as peons, either.
I mention all this because when I first started freelancing I had some vague idea of what freelancing was like for other programmers and what freelancing would be like for me. Slowly, over the years, it was revealed to me that almost nobody has a great lifestyle as a freelancer. The people who really have it figured out are few and far between.
The way to move away from the Employee end of the spectrum toward the Consultant end of the spectrum is very difficult, especially for programmers (as opposed to e.g. marketers). The successful model I’ve seen is when a programmer becomes known as an expert in one narrow area of technology. Here are some examples:
- Todd Mott, Angular
- Reuven Lerner, Python
- Corey Quinn, AWS billing
- Mike Julian, monitoring
As far as I understand, these guys make my by selling services other than programming. Instead, they transfer know-how from their brains to yours. The way they get clients is that they have books, courses, podcasts, blog posts, etc. that attract prospective clients to them. They don’t troll craigslist for contract job postings.
I don’t have all this stuff figured out yet but I wanted to help share step zero of getting from freelancer to consultant: realizing that most programmer consultants really aren’t, and knowing what the very few who became successful consultants are and what they did.