It’s a valid question – how good do your programming skills need to be (and how much does that matter) in the world of freelancing?
The Question:
Do you need to be a really good programmer to make a living freelancing?
How advanced does a programmer need to be in order to make a living as a freelancer taking jobs from freelancing sites like Odesk or Elance? What kind of technical skills need to accomplish beforehand?
The Answer:
When it comes to raw coding ability, everyone will argue as to what “really good” means, so I’ll say this: you should be at least at the “Consciously Incompetence” stage on the Four Stages Of Programming Competence scale. It is here that you have some fundamentals down, but your eyes and your mind are open to what you don’t know. In this stage, you are actively working toward improvement and understand the necessary elements of doing so. This, I think, is the absolute minimum price of entry into programming for money.
Side note: yes, we all know a programmer who is “Unconsciously Incompetent” and manages to make a good living anyway, but nobody should aspire to be that guy, so we won’t address him here.
In every programming career, you will be aided by having soft skills. You will be aided by the ability to communicate clearly with/get along with/foster trust with/form bonds with people. You will be aided by the ability to understand the bigger-picture business implications of your work; understanding not just the how but the why of your development endeavors will make you more valuable in any career scenario. You will be aided by the ability to sell people on your ideas about the best course of action, the ability to persuade them that you are the best choice to take on a particular module of work, the ability to really listen to what they’re asking for. These skills are helpful to a programming career whether you’re dealing with co-workers or clients, and I encourage you to develop them.
Now, how much these skills will help your career depends upon what kind of freelancing you’re doing. I have experienced three broad modes of freelancing as a programmer-by-training:
Staff Augmentation. A staff augmentation scenario is one in which you’re being deployed to staff a project; I’m guessing that this is a good portion of the work you find on oDesk/Upwork or eLance.
If you’re purely a plug-in resource, another code-generating asset on a team of code-generating assets, then the higher your raw coding ability, the better. In a staff augmentation scenario, you want to be a “force multiplier”. If you’re not familiar with that term, Wikipedia defines it thus:
A force multiplier refers to a factor that dramatically increases (hence “multiplies”) the effectiveness of an item or group.
In short, if staff augmentation work is how you’re going to make a living freelancing, you want to be a strong enough programmer that the project gains more than 1-average-programmers-worth of value by hiring you. Ideally, you’ll bring a high enough level of technical competence that the more junior programmers on the team can rely on you as a mentoring resource, and the more senior programmers on the team – assuming you’re not one of them – feel confident that they don’t have to babysit you.
Bottom line: In a staff augmentation scenario, the higher-horsepower programmer you are, the better (but you’ll still need soft skills).
Project Contracting. If you’re soliciting and taking on whole projects by yourself (or with the aid of a small team), your soft skills are arguably more important than your programming skills. I’m guessing that this is some portion of the work you’ll find posted on oDesk/Upwork and eLance.
With this type of work, the question is not so much “how good of a programmer are you?” but “can you grow beyond a purely technical skill-set?”, because now you have to solicit work, sell work, manage projects (even if it’s just you), set client expectations, and offer support. Clients – especially the types of client you’ll find on the aforementioned project-posting sites – will often be inexperienced with technical projects and have expectations that are out of line with reality. Your job is to develop the right skills to not just deliver the work, but to frame how the work will be done, and what is or is not standard or realistic in any given scenario.
Being a strong programmer is still beneficial, especially if you’re a solo contractor who will be doing all the work yourself. In fact, even if you outsource all the project work to other programmers, being a strong programmer will allow you to vouch for the quality of the code being produced for your client, and directly address issues with your programmers in their language. This is an often-overlooked benefit of “staying technical” even as you spend more time project-managing.
Bottom line: it’s still best to be a strong programmer, but in this work scenario other skills begin to rival – if not outstrip – technical skills as being of primary importance.
Consulting. As a consultant, your primary role is to give advice and provide value via your experience and your perspective, more so than by producing any technical output such as code or database objects. I’m guessing that you’re not going to find much of this on freelance project-posting sites.
Consulting can be an odd world to make a living freelancing in at first, but can also be incredibly validating and lucrative. Consulting clients are, in effect, paying you to tell them what you think they should do. It’s possible to be rusty at writing code, but still be able to serve effectively as a consultant based on your extensive experience with programming concepts & fundamentals, in addition to your knowledge of the practical applications of what the client is trying to do.
As a consultant, my opinion is that you should stay technical, and that you will benefit by doing so, but it’s also true that in this role, your people skills, project management skills, and sales skills will be more important than ever before, arguably more so than as a Project Contractor.
Where to find (and close!) deals for work? The question as posed relates to freelance project-posting sites such as oDesk/Upwork and eLance, and it is possible to find work in these places, although I don’t recommend making them a primary source of leads. As with any vector for bringing in leads, if you plan to make a living freelancing, you’ll need to be able to communicate well, demonstrate the potential for value to the prospects who contact you, and frame preliminary conversations not in terms of programming output, but in terms of business problem-solving.
Being able to do this will set you apart from the rest of the pack right off the bat. You’ll still be locked into a system where price is put forth as the primary differentiator, which is a shame, but all else being equal, the better you are at quickly building rapport with your leads and demonstrating that you understand the problem they’re trying to solve, the more successful you’ll be at closing deals for work.
This is true regardless of your level of technical competence, but watch out – people who are really good at closing deals, but really bad at delivering acceptable work product end up with a rotten reputation, and the stink of a bad reputation can sink even a talented programmer who is eager to make a living freelancing.
Here’s to your success as a freelancer!
* * * * * * * * * * * * * * * *
Once you’re at the point where you have good, steady client work coming in, you may find that the soft skills mentioned in the answer above are more important then ever. To help develop these skills, I offer Conquering Client Conflict, a free 10-day e-mail course that helps freelancers and consultants to make more money & get more respect by resolving common conflict scenarios. Are these types of problems common in your business? If so, sign up for Conquering Client Conflict today and start improving the quality and profitability of your freelancing business. Good luck!