I have worked with a lot of freelancers in my 2 startups and made a ton of mistakes so thought of writing lessons I learned here so that I don’t repeat those mistakes the next time. Here we go:
Always define and record timelines/deadlines
A goal without a plan is just a dream. ~ Antoine de Saint-Exupéry
I am a big advocate of deadlines. Without timelines:
- it's very easy to lose track of time.
- you won't know that you are late.
- you won't be able to hold the freelancer accountable
- you won't be able to hold yourself accountable
- you will delay taking tough calls
- you will always take longer. Parkinson's law: Work expands to fill the time available for its completion.
The product delivery schedule should be split at the max weekly. Anything more than a week is too long and should be broken into a smaller timeline.
Never overwrite your initial schedule when timelines change. Write a new one or append it to the original. Timelines will change and if you keep overwriting you'll never notice how late you are.
Have a daily status call with the freelancer
Once you have assigned the work to the freelancer, it’s instinctive to trust that the work will be done and now you can focus on your other priorities. Your startup has lots of other things to do so once you start to focus on other tasks it’s very easy to lose track of the time with the freelancer. you'll not realize where did the week(s) go. A daily status call of 10-15 minutes helps keep the freelancer and yourself focused.
Many freelancers would flinch on a daily call citing reasons like:
- It would waste time
- There will not be much progress in a single day so it’s a waste of time.
- Citing the reason that he works on an odd schedule so keeping a daily call is tough. etc. etc.
There can be 100s of reasons for not having a daily call with the freelancer but only 1 reason to have the call: You’ll be on the top of the work and if anything is slipping in the schedule you would get to know of it very fast.
Once I spent 40 days with a freelancer and he didn’t deliver anything. Nothing at all. He kept assuring me that the work is going on but he doesn't have anything to show as of now. It’s very easy to fool a person (me in this case) if you talk to the freelancer 8 times in those 40 days but if we have a daily status call it will be tough. You’ll get to know the sincerity of a person soon and would be able to take a call faster on whether to proceed with the person.
If you've defined and recorded a delivery timeline, you yourself might feel that daily call is a waste of time. But it's not. No one likes daily status update calls (aka standup calls in agile scrum) but they are really important when you are working with new people until the trust is earned to eliminate the need for daily status calls.
You are staking everything. What’s at stake for the freelancer?
You engaged a freelancer today and he can:
- move to the next project tomorrow if he gets a better-paying client.
- just dally with your project if he doesn’t feel like or can't deliver.
- deliver shitty code or shitty design if he is not interested in pursuing.
You are staking your precious resources (time, money, and energy) by engaging with the freelancer but what is he staking? Nothing. He can just abort at a whim. So deal with the freelancer only when there is something at stake for him as well. When you've skin in the game, you perform better.
Engage freelancers on a freelancing platform so that they know that their rating is at stake. However, remember that a freelancer deals with clients every day so he knows tricks of the trade on how to get (extort, if required) a good rating from the client.
Hiring a freelancer via referrals is also a good option but remember that it’s not a sure-shot option. If the freelancer worked well with/for someone it doesn’t mean that he will work well with you as well.
Hire slow and fire fast
Even after working with freelancers for many years, I can't judge them. (That’s the reason for this post, by the way. Kind of notes to the self). There is no magic potion/checklist to find a great freelancer. You need to do your best in vetting a freelancer but if it’s not working out with him then fire him and move on. Fire fast, really really fast.
The most important thing for a startup is time and if you are losing time then you are losing everything. Anything that costs you time is very expensive. So when it’s not working with a freelancer just fire him and move on to the next one.
Firing is tough. We always tend to give the benefit of doubt to the other person but sacrifice everything and everyone on the altar of timelines and the highest uncompromised quality.
When you are paying money then you need not and should not compromise. It’s good to take care of others’ feelings but not at the expense of your failure. Losing time is the direct and fastest road to failure.
I always delay taking hard decisions. Deadlines force you to decide. Without deadlines, you’ll just keep delaying.
When someone misses the deadline for the 2nd consecutive time, you should just fire him immediately and save time for everyone.
When you've made up your mind to fire a freelancer, don't try to find the next freelancer while the first one is still working. When one freelancer is already working (even if running late and sub-par quality), you'll take longer to find the next freelancer. But when you've already fired the first one, you are forced to find someone faster.
Cheap freelancer vs. expensive freelancer
When you guesstimate that a piece of work might take 1000 bucks and if someone agrees to do that in 33% of the cost then we tend to become lenient with them. We feel that:
- even if they take twice the time you’re still in profit. You are not. You are losing time. And mostly it will never be twice the time. It’ll be 10x the time.
- even if the quality is not great, the deal is profitable as you are getting it done really cheap. Shitty code even at 33% cost is of no use. The next developer will either just discard the code or will take 5x time in fixing the code. If not, technical debt can also sink your ship in various ways like slower iterations, longer bug-fixing time, sub-par UX of your app, etc. Never compromise on quality. When times are tough (and adversities all around), it's very very easy to just compromise. Expect the highest standards from yourself and your colleagues.
The moment you feel that someone is doing something for you for cheap or at a reasonable rate or as a favor to you (like your friend helping you out) then you start to be lenient with them as you want to return their favor of being cheap/helpful.
When someone is doing you a favor by helping you out it’s impossible to demand great quality from them because asking for quality means more work. More work means asking for more favor. You’ll hesitate in asking for more favors in addition to the current favor plus the other person will feel that you are expecting too much. This "small favor" will lead to an unhealthy relationship and a bad product.
When hiring and vetting a freelancer, money should be a secondary criterion. The primary criteria should be sticking to the agreed timelines plus the quality of the output.
A few other notes
- You’ll stick with someone longer if you don’t have any other options. You’ll hold your hopes despite all the odds and all the blatant facts. Your subconscious will dupe you into believing that this person might work. You’ve found this freelancer after a long search and you don’t want to start that eternal hunt again. So you believe hence you get duped more easily.
("The more you want something to be true, the more likely you are to believe a story that overestimates the odds of it being true." ~ Morgan Housel).
Always keep more freelancers in the pipeline because you’ll need that pipeline sooner than you expect. - If you are a non-tech founder you may have to hire a freelancer to build your product because you couldn’t find a tech co-founder or couldn't hire a software engineer. Remind yourself daily that you can’t build a startup with freelancers. You need to hire your team ASAP.
- Hire a freelancer with good written and oral communication skills. A lot of communication is required while building anything so anything below good communication means a compromise. Compromising on the communication skills will lead to 100s of small and big compromises in the future.
- I didn’t take hard actions because I guess I always delay taking hard actions. I am afraid that the other party may feel bad or may leave. I need to shed this fear of other people feeling bad or leaving. If someone will feel bad because of their procrastination (or bad quality of work) or if someone will leave then the sooner they leave, the better it is for me. Be very demanding of people who work with you. Set clear deadlines and if they skip tell them categorically that they have missed a deadline. Don’t mince words just because they might feel bad. You need to give honest feedback irrespective of how the other person will feel. Set very high standards and keep very high expectations.
- Freelancers can help you at times in your journey but they can’t help you build a successful startup. They will never feel the rush to execute NOW, the way you feel. They never share your excitement, your pain, your vision, or your urgency. Your startup will never be their priority 1 and when priorities don't match, paths diverge sooner or later. Get your A-team as soon as possible. I know that’s another problem to tackle but life is all about solving one problem after the other. All the best.
PS: Am sorry if this post seems harsh towards freelancers. It's just that I've had some experiences (and all the mistakes might be on my part) that I don't want to repeat.
--
Related thoughts:
Thoughts on my first startup, Lenro
Thoughts on my second startup, Hackr.io