Reading a post on How To Hire Outsourced Developers made me remember I’ve been meaning to write some of my thoughts on freelance developers, since I’ve been on both sides of it (I’ve worked as a freelance web developer and hired freelancers myself).
When I first started I wondered wether anyone would be interested in paying top dollar for my services. After all, I’ve never been that great a developer. I consider myself a jack of all trades but master of none. So I’m good at design, frontend and backend, but great at neither. This actually is what most clients need, and I would soon find that technical expertise is definitely not one of the most important qualities in a freelancer.
On Technical Ability
Let me say this upfront just so I don’t send the wrong message: yes, you need to be know what you’re doing. And yes, you need to be able to perform the job the client needs. So if someone needed, say, an iOS app, I would kindly tell them I’m not the right man for the job and redirect them to someone else. But most projects you’ll be hired to tackle are not very complicated from a technical standpoint. Most will be CRUD or simple apps, really. So it’s actually very easy to know up front wether you have the right skills for the job or not (or you can learn them fast enough). Also, as the client, testing for technical ability is usually kind of easy (assuming you or someone on your team has a technical background). The article I linked in the beginning showcases one good way to do it.
What Does Matter?
What I found, in my experience, that matters most in a freelancer, is everything else. Spoiler alert: there are probably thousands of freelancers out there who are just as good as you at programming, design, writer or whatever it is you do. So how do you differentiate yourself and actually become someone that clients refer to their peers? By focusing on what actually matters to clients (once it’s been proven that you have the minimum necessary skills to successfully complete the job):
- Be Realiable. Are you going to just disappear mid project without saying a word? Are you going to complete the assignment by the agreed upon deadline? This is absolutely critical, and you’d be shocked at how many freelancers completely fail in this aspect. I had a client once, a good client. They paid handsomely, in a timely manner, their projects were cool (yet simple) and they were good people. They also had a few projects in the pipeline that needed to be done. Needless to say I was very happy working for them. At some point I had to quit working for them for personal reasons. They said they had someone else to continue where I left off, that used to be a full time employee of theirs. We lived nearby so I met with him, explained the current status of the project I was doing for them, resolve all his doubts, etc. He seemed like a nice and capable guy. A few months later I was catching up with the client and they told me that after a couple of weeks, the guy just disappeared never to be heard from again. I know he wasn’t dead, because I still saw him online on GTalk every once in a while, so what would prompt this guy to drop an amazing gig in that totally unprofessional manner, is beyond me. And don’t get me started on the people you hire on oDesk and as soon as they get some money (if you pay weekly), they’re gone.
- Be Available. Of course, it’s important that you’re actually available to do the job. If you’re the best developer ever but you’re booked up for a whole year, you’re useless to me. But also the amount of time that you’re available is important. Some people are very good, but only freelance on their free time (say, nights and weekends). This will make the project advance more slowly, and I also know from experience how easy it is to overestimate the amount of free time you actually have, or how capable you are to fight the urge to just relax after your daily 9-to-5 job.
- Be Responsive. When a client sends you an email (or calls you), you reply quickly. Personally, I would even do this on the weekend. I know, I know, work life balance blah, blah, blah. Most people won’t be upset if you don’t reply on a Sunday to their emails (unless it’s critical or they’re douchebags), but if you do, they’ll be pleasantly surprised. Overdeliver, always. I can’t understand why people who are being paid thousands of dollars upfront to do some work (on their schedule and terms) will take a week or two to reply to the simplest of emails. Yes, this has happened to me, on several occasions.
- Ask Questions & Be Specific. You and the client should always be on the same page as to what is exactly being built. When a client sends you a spec for a project, don’t make assumptions. Ask questions. “By X do you mean this or that?”, “I understand by what you wrote on Y that the projects needs to […], am I correct?”. It may take more time to finish the spec but it will pay in spades later when you don’t build something that isn’t what they want and an argument ensues about the time you wasted, what the client really wanted, etc.
- Stick To The Specs. Then, once you finish the spec, stick to it! I remember this one time I hired a developer to write an app for me. I attached detailed screenshots of how it should like like and a complete and thorough list of functionalities. When he sent the first prototype, I couldn’t believe it. It didn’t look anything like the screenshots I sent him. “Oh, I thought since iOS 7 is coming out, I wanted it to look more like that”. Well that may have been a valuable insight to offer when we were defining the specs, but now you’re giving me something that I didn’t ask for nor want. Very few times will you be able to pull something like this and have the client be happy that you didn’t follow the specs to the letter. And if they’re not happy, it’s up to you to redo all the work for free. If you have any great idea like that, better ask the client first.
- Provide Good Value For Money. A few years ago I would’ve told you that this meant “being cheap” or “charging less”. Now I understand it differently. It means, that at the end of the day, the client must be absolutely 100% satisfied for paying your rate. If your rates are high, this will mean turning down clients who can’t afford you. Let me describe for you the only two outcomes that I’ve had when dealing with freelancers: in some cases, I’m very happy with what I’m paying for the job at first. This means that I’m paying either what I had originally set as the budget for the task, or less. I don’t recall a single instance where this ended well for me. Absolutely every time, it ends with the freelancer disappearing mid project or the quality of the work being bad. On the other hand, there are the cases where I had to raise my budget in order to hire the freelancer that I felt most comfortable with. I’m sure you’re thinking “now he’ll say that in this cases where he had to pay more, he always ended up happy with the results”. WRONG! In this cases, about 50% of the times the outcome is just as bad as before (granted, when the quality is bad it’s not AS bad) and only in the remaining half the times I actually have been happy with the results and glad I paid what I did. So to sum it up, what I’ve ended up realizing is that all good freelancers are expensive (unless you find someone who doesn’t properly value her services), but unfortunately not all expensive freelancers are good.
- Be Honest. It goes without saying, but you need to be honest. This means not lying to your client (about your abilities or anything important), fulfilling your part of any contracts you sign, not promising things you can’t deliver (“Get to #1 on Google!”), being upfront about what is included in the budget and what isn’t, respecting the client’s privacy, IP and trade secrets, etc.
- Provide Sound Advice. Keep in mind that your clients may not be experts on certain things (the Internet, the App Store or whatever) and could use some guidance. It’s your job to advice them on what is good practice or can potentially get them better results (remember that if they want some software done, it’s to make more money or save costs, they don’t care about anything else). If you think the project won’t give them the desired results at all (and can say this diplomacy), I believe it is your right to tell them so. Of course, once you make your case, it’s up to the client to decide, and you shouldn’t be upset if they insist against your better judgement (“One Flash intro coming right up!”).
- Have Connections. This isn’t critical, but valuable. Maybe at some point you’ll need to stop working for a client (despite being happy doing so), or maybe your client needs someone else and you don’t fit the bill (p.e. iOS or Android apps while you’re a web developer). For these cases, it’s very valuable to the client if you can put them in touch with other good, reliable freelancers that you can personally vouch for (and you get to help a friend out at the same time).
As you can see there’s a long list of traits you need to have to be a great freelancer, and most people don’t even think about them before they get into it (or while they’re doing it, otherwise they wouldn’t be so many crappy freelancers!). Obviously there are other things you need to be a successful freelancer, like networking or marketing in order to get leads and clients, but that’s outside the scope of this article.
How To Find A Good Freelancer?
Ah, the million dollar question! As I said before, you have to come to terms with the fact that you’re going to pay top dollar. You may get away with less if they live in a cheaper part of the world, but they will still be expensive in contrast to the rest of developers you find in that region. Once you accept this, I actually don’t think there’s a more reliable way than to do what the article I linked to in the beginning describes: select the few that seem good on paper and hire them to do a small test project, and then evaluate how they perform. Yes, it takes time and money, but over time I’ve realized there really isn’t any other way. Even this way isn’t bulletproof, but it’s the best I’ve heard of.
Some other day I’ll also write about what makes a good client. Crappy clients are also abundant and there are many things they could learn in order to have a better relationship with their freelancers, and get better results from them.