How to freelance and make money as a Freelance Web Developer - A practical guide.

Manu Arora

Manu Arora / March 24, 2022

14 min read––– views



Freelancing could be the best way for you to make money as a web developer. The opportunities are countless and there are a lot of people ready to pay you money for the things that may sound trivial to you.

For example: You could develop a landing page for a restaurant with no time at all (If you’ve been doing web development for some time) and they will pay you accordingly. Depending upon the client, the money varies. Here, I’ll talk about how to get your first client that pays for your services and gets the momentum going.

Getting Started

First things first, you need to have the required skillset that you will use to solve the problems that your potential clients are facing. The basic and the OG tools that you need are:
  • HTML
  • CSS
  • JavaScript

With these three things in your toolbox, you can pretty much make any static front-end landing pages. But you should not be limited to just these three because the scope with these are limited.

Let’s say you learn React and Next.js on top of it, now you have the skills to build fully functional, dynamic full-stack applications (JAMStack) that can help you build more than just Landing Pages. I’ve been using Next.js for quite some time now and the benefits are immense. You can structure your application in such a way that:

  • It helps your website rank on Google because with Next.js you can build server side rendered applications.
  • Helps you build performance efficient websites - that eventually improves your page score and the website loads faster.
  • It comes with API routes to help you get up and running with back-end tasks. I built tailwindmasterkit.com with Next.js completely. TMK is a components and templates marketplace that is feature rich. Comes with a dashboard and a playground to test your components as well. So the use case is proven and it just works.

Portfolio projects


To attract clients, you need to have an arsenal of projects. The more, the better. It doesn’t matter if the projects are commercial/paid projects or just your hobby projects. YOU NEED PROJECTS.

For example, When I was learning web development, I built a huge set of projects. Some of them were taught in the courses that I took and some of them I built just for myself to solve some of the problems that I was facing.

The projects that you build should have some meaning to it. For example: Your client might not be interested in a Todo app that you built, but if you built a landing page for a fictional restaurants that has a working contact form and fancy animations, that might interest your potential client. This is called putting yourself in the best position.

Nobody wants beginners, everyone wants the perfect candidate that can do their job in the most efficient way possible. Be that guy - but position yourself first. Think from the clients perspective and eventually it will get clear in your mind what they exactly want.

Some of the project ideas that have worked for me over the time are:

  • Tailwind master kit - A components and templates library / marketplace.
  • A fictional tours and travels website (with good design and animation - I took a course and they had this project in the curriculum).
  • Box shadows - Tailwindcss box shadows that can be directly copy pasted. I scratched an itch here.
  • Freecodecamp projects - they are highly actionable and helped me grow as a developer.

To showcase your portfolio, you need a portfolio website. I highly recommend that you buy a domain and host your website for everyone to see. You don’t need an extremely fancy website with a lot of animations or everything stuffed in right there. JUST BE YOURSELF. This just works.

Your website can become your very own lead generation machine. I get almost 70-80% of my freelance work from my website. This is because I have a simple contact form there where people can directly contact me over WhatsApp (or send me an email if they prefer it that way).

Your website should be simple, elegant and easy to navigate. Assume your clients will just skim through your website for just 5 seconds (That too if they land on your website). You have 5 seconds to get their attention. The sole motive of your website should be to showcase your personality and highlight your projects.

I built a free portfolio template for you to use (If you use React) - That does exactly that - showcase your personality and work. Here’s the link to the blog that I wrote on the same.

Once you’re done editing the website, host it for FREE on vercel and link your domain. Now you have your online personal space to experiment and just be yourself.

That brings me to the next point: Blogs.

Blogging and sharing code

Blogging has single handedly helped me position myself as an expert in web development on the internet. When you have blogs on your website (or you write blogs for other websites like FreeCodeCamp or LogRocket), It has an impact on the client that this guy knows what he’s doing and can walk the talk.

Not only this, it helps you grow as a developer. Try writing a blog on your favourite technology and you’ll know all the gaps that are there in your knowledge and learning. It happens with me all the time.

Blogs are the real mirrors that show you what you’re lacking and what you need to work on. You don’t have to write anything too advanced and/or too technical. It’s your website and your blog.

You could write pretty much anything or everything. I recently wrote a blog on Box Shadows and I realised I never truly understood box shadows. You could write anything from tech topics to your learning. Some of the topics that I like to write blogs on and that have helped me over the time are:

  • Explaining what I built recently. For example: I built manuarora.in/boxshadows - Here’s how I did it. (Include live preview and source code).
  • Tech topics that are emerging and can help you grow as a developer
  • General shitposting - because why not.
  • Picking a technology - learning on the go - and explaining how the basics work
GitHub is one of the major “This guy is an expert” indicator in this field. Not only it helps you version control your code and help you build better and bigger web apps and softwares, but it also helps you gather client’s attention if you have a beautiful looking commit history chart.

The greener the chart, the better. I’ve seen people hiring freelancers just by looking at their commit history chart. Whatever you code, share it with the world. If you’re lucky enough - people will come and criticise your code or help you build better software. Worst case scenario, you’ll have something to show to your clients.

Social Media is your best friend

I tweet about almost everything and anything. Whatever I learn or whatever I see on the internet, I either Tweet or share something on LinkedIn. Clients are all over the place and Social Media websites are one of them.

For clients - I primarily focus on Twitter and LinkedIn. Not only clients, there are a lot of other developers that are doing exactly the same thing (and have pulled off this Indie Hacking mindset) that can help you big time.

I’ve learnt a lot by interacting with these developers on Twitter and getting insights into the freelance world. The developer community is extremely supportive on Twitter.

You just need to create and account and start following some people in the developers community. From there on, you’ll most likely become comfortable with the platform and end up paving your own way through it.

Don’t like tweeting? Create a twitter bot that generates random tweets and does the job for you. :P One more project in the arsenal, right? ;)

LinkedIn, on the other hand, is more on the professional side. There are a lot of people looking for freelancers to help them get their jobs done.

The strategy is to be active and post consistently. No matter how small, but do it everyday. Write about your latest learning or follow hashtags like #100DaysOfCode.

Development is not difficult, Marketing is difficult. At least for me. Make sure you put enough time into this so that you can put yourself in the best position to win.

You need to get noticed before you can flaunt your Landing Page development skills. :p

Getting Clients

Addressing the elephant in the room. Getting clients. If you read so far, congratulations. Now you know what you need to have before getting started with it:
  • A portfolio website
  • Decent portfolio projects
  • A few blogs to support your back and position you as an expert
  • Social media presence
  • GitHub code repositories to show your code.

The first paying client will be the HARDEST. Accept it. It will take some time (if you’re not lucky) to get your first paying client.

This is because nobody wants to trust a freelancer with no ratings. You wouldn’t buy a t-shirt on Amazon if it has no ratings, right? Happens here too.

The first client is hard, but it is not impossible. Or rather it becomes easier if you have all the above mentioned points to support your back. You are your own hero.

Talking about various platforms and strategies. Here are some of the platforms that have worked for me.

  1. Upwork
  2. Codementor
  3. My own personal website
  4. Cold emailing
  5. Writing blogs for other companies

Upwork

Contrary to what all believe, Upwork can help you build your freelancing career/journey if you’re just starting out. I don’t know about others but it worked for me (and is still working).

Although I now prefer to work outside of Upwork because of the hefty cut it takes, But I still get a lot of requests on Upwork. I no longer have to bid on projects.

BUT my first client was the hardest here. It came after 1.5 months of consistent proposal sending and rejection cycle until I discovered what works. So what works on Upwork? Acting like a human.

Consider the below two snippets from Upwork.

One of them is the one I used earlier when I was getting no clients, the other one is what I use if at all I send proposals. Which one do you think is better?

First




Second

You don’t have to know MongoDB, Next.js, React, Angular, Svelte, GraphQL, express, Loopback, Node.js, FaunaDB, Postgres, Prisma, Cloudflare workers, Vercel deployments, D3.js, or nobodycares.min.js

You need to address their concern and let them know how YOU could help them achieve what THEY want.

Talk about THEM and just THEM. Show them how you could help them with your expertise. For example: If your potential client is looking for a lawyers website, show them that you’ve built a similar site(like an Accountant’s website) and that you can help them build their website as well.

This puts you in a better position than your competitors who are just blabbering out their modern and trendy tech stack.

Honestly, the client won’t care about how much years of experience you have. They need to feel confident in you and they must BELIEVE that you can help them launch their website.

I'm planning to write a whole blog on how to get clients on Upwork (Strategies that worked for me). Keep on visiting the blog's page and I’ll be sure to keep you updated.

Codementor:

Teach coding online. Dead simple. There are many developers out there who need help and who are just starting out.

They’re looking for mentorship and are ready to pay for it. Codementor is a website that gives you a platform where you can either take 1:1 session with the person who is looking for help, or you can also take freelancing projects there.

I love programming and coding in general. I love solving problems and hence I found out code mentor. It has an application process that might be a little difficult for some, but if you crack it - There’s a lot of potential earning mechanisms there.

Cold Emailing:

The OGs of getting clients. This strategy JUST WORKS if you do it correctly. I’m no expert when it comes to cold emailing but it’s just a numbers game and it takes a right approach. There are a lot of resources online that can help you get started with cold emailing, but I’ll talk the most basic one that worked for me and that works for a lot of freelancers out there. (I'm no expert - but this works for me.)
  1. Goto Google
  2. Search for any Niche (example: Gym trainers in California)
  3. You’ll get a list of all the websites that are there (or better, those people that are running ads)
  4. Open those websites and find improvements that can potentially increase their revenue.
  5. Get their email address from their website and reach out to them explaining how you could help them get a better website( if they’re spending on ADS, they’ll spend on website as well).
  6. Subject line: Quick Question. (This just works IDK why)
  7. Be Human. Don’t sound like a selling machine. Just be human. This is the most underrated skill in my opinion.
  8. Repeat until you get your first client from cold email. Once you get it - Celebrate it because it works.

Cold emailing is a numbers game in the end. The more emails you send, the more are the chances of you getting clients.

I already talked about Personal Website and Blogs. Won’t bore you to death here.

Mindset, Confidence and Patience

Developing is easy, building the achievers mindset is difficult. You need to believe that you can freelance and you’ll eventually end up doing it. Same is the case with learning any technology or speaking confidently.

I’ve seen so many developers that hesitate in speaking confidently. It comes with practice though, but know that if you’re getting a chance to interact with a client and you have an opportunity in front of you - You’re already getting what 95% of the developers out there are not getting.

Be grateful and cease the opportunity.

One client is all you need. Just one. After that it will get easier and easier and easier. You’ll go on building your portfolio and the subsequent clients will be easier.

If you deliver great quality work and you communicate effectively - you’ll end up working with the same client over and over again. But the first client is hard. Know this and accept this.

It will be hard to get your first client, but it won’t be impossible. You need to be patient and trust the process. Confidence beats imposter syndrome. Get your shit together.

Summary

To quickly summarise:

  • Build projects. Get in a habit of building projects and put it on your portfolio website.
  • Build in public if you want to get instant feedback from the developers community.
  • Get your social media game strong. Tweet and post consistently.
  • Deliver value through your projects. It should help someone in some way.
  • Act like a human on freelancing platforms. It will be tempting to blabber out your tech stack and technologies that you used to build a todo app but try to talk about THEM instead. It works.
  • Confidence and Patience are your best friends

I’ll be writing more on how to get more clients from Upwork because that was the first place where I got started with my freelance journey. Make sure you keep visiting my blogs section (which is pretty much dead because I mostly write tech content on FreeCodeCamp).

Go on now Kings, Make your first bucks and transfer some of the money to me. :p

Follow me on twitter: @mannupaaji if you are interested in memes, shitposting and random tech wisdom.
Want to hire me as a freelancer? Let's discuss.

Drop your message and let's discuss about your project.

Chat on WhatsApp

Drop in your email ID and I will get back to you.