Archive for January, 2014

What Makes A Good Freelancer?

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):

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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!”).
  9. 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.

Thoughts On Pricing For Developers

Like most developers, I have a problem when it comes to pricing my products and services. I feel like people will think I’m ripping them off or that the price isn’t justified given the value it provides. Basically, I always feel I’m overcharging. Even when it’s clear people would pay for my product (sometimes I even wonder wether I should charge at all!), I have a hard time coming up with a price tag.

The other day I had a powerful realization on this topic. I realized that I pay for a lot of products, yet how much I pay is rarely correlated to the value they provide to me. My train of thought usually is:

  1. Will this tool make my life easier, save me time, bring me happiness, save me money or generate revenue; in any significant way? In other words: is it worth my time and money?
  2. If the answer is no, I close the site. If the answer is maybe, I probably close the site as well (sometimes I bookmark it and never remember it again), unless the potential gain is big enough to warrant dropping the company an email in order to resolve my doubts.
  3. If the answer is yes, then I look at the pricing.
  4. Is it something reasonable given the potential gain I can get from this? This is where most developers tend to underestimate their product. Usually, if the person looking at your product has already decided they want it, has the money (in a B2B environment this is almost always the case) and you have a reasonable price, you’ll make the sale. And “reasonable” is probably more than you thought.

Let me list all the services I pay for, and their cost, before I reach my final conclusion. They’re listed from most critical to least, for me:

So that’s what I pay for every month (or year). Some have completely free or cheaper alternatives, but I just like these a little bit more (or they sold me better). Now, here’s the thing: except on very notable cases (SendGrid) I pay the absolute minimum allowed per service given my usage of them. But as you can see, price is not correlated with value. If all those services announced that they’re doubling their prices from now on (without grandfathering existing customers), I’d be annoyed but would gladly pay. I sincerely believe that if most of your users wouldn’t be happy paying double what they’re currently paying, that means you’re not providing enough value. That doesn’t mean you should raise prices to your existing customers. Unless totally necessary, that’s rude and some will cancel just on principle. As an example from the list, Ink/FilePicker just recently changed their pricing scheme and I went from paying zero to $99/mo. Damn. But still happy to pay for an awesome service that solves a big pain for me. I’m sure not everyone converted to $99/mo. after the change, but I’m sure a lot of them did, and that means a lot of recurring revenue added.

How much extra revenue would all those companies have made during their lifetime if all their prices have been $10 more since the beginning? I think a lot. How many people wouldn’t have decided to pay for it because of the extra $10? I think very few.

When you have a B2B product, all prices should be a no brainer for your customers. And almost any price that you could come up with, will be, assuming your product delivers value. When I saw NathanBerry’s ConvertKit‘s pricing I was surprised. I thought “Where’s the cheap plan?”. $50 is the cheapest plan, and it’s quite limited if you ask me. But the truth is, I wouldn’t get value from this tool right now. I wouldn’t even if it was priced at $25. So I’m not his target audience. If you know what you’re doing, have drip marketing campaigns, email courses and sell something of value, ConvertKit is a steal.

I’ve come to realize that most B2B products’ prices usually have two reactions: either you think it’s too expensive because you’re not the target audience, or you think it’s a bargain because you are. Sure there will be starving startups or freelancers who might want a $100 / mo. product and will think it’s too expensive. But your target audience doesn’t just need to have the pain you’re solving. It also needs to have money to pay for it. You better focus on those potential customers. Plus, if they really have the pain you’re solving, eventually their revenue will grow and they’ll be able to afford your product (or will close shop in which case they didn’t matter all along).