Back to Posts

A student's guide to freelancing

Posted in Freelancing, Web Development

This article is a follow-up to the freelancing session conducted by Abhijit Tomar and Harshit Manocha at IIT Bombay on 17th of September 2016. It is intended to be a primer for any student looking to work as a part time freelancer. Two paths will be covered- those of a developer and a designer. This post will cover the broad topics of:

Why freelancing?

You may want to get into freelancing for three reasons:

  • To learn

As a student, freelancing can be a great way to learn. It can provide an insight into how companies work. Working on live projects with actual goals and deadlines gives you a real-world experience that is not easily achieved in the safe, classroom setting.

  • To earn

Even if you are not short on cash, freelancing can be a way to earn some pocket money. The feeling of independence it provides is worth putting in the hours for.

  • Skill building

While working, you are simultaneously building your technical skills. This can open doors to bigger and better opportunities in future.

A student’s approach

As a student, the right approach is to optimise learning, rather than monetary returns. For instance, if you are an experienced frontend web developer, the logical move is to venture into backend developement - even if your immediate earning potential is higher in frontend. A similar ideology can be applied in the design side. If you are experienced in UI/UX design, try exploring things like branding or social media. By working on varying projects, you will gain a diverse, heterogeneous skillset that is more valuable.

Opportunities Overview

The following are the kind of opportunites currently seen in the market:

  • Web (frontend)

Every start-up or small business needs a website. And making those websites needs web developers.

  • Android & iOS

I’ve never seen a jobless Android developer. The current market demand for Android developers is too damn high. As long as Apple is in business, every company will also need an iOS app. Since iOS development requires an iDevice, the supply of iOS developers in the market is less, and are hence valued higher.

  • Backend (web and app)

To get work as a backend developer, you need frontend and Android dev friends who will recommend you :)

  • Blogging / Content Writing

I could give you 17 reasons why anyone can be a blogger these days. However, demand for serious bloggers and content writers also exists depending on your domain expertise.

  • Creative Design

I am using this as an umbrella term for the various creative services required by business. It may include UI/UX design, poster and logo design, video editing, branding etc. In this field, it is difficult to build a reputation. But once you’ve earned a name for yourself, it can be very lucrative.

Online freelancing

There are several websites that serve as platforms for freelancers to meet clients. For a small percentage of your earnings, these websites will get you clients, and implement some form of an escrow system to ensure that both parties are treated fairly.

This happens to be among the popular ones. Here, you need to compete against other freelancers to get your proposal selected. A series of rejections can get disheartening since your work on the bid goes to waste.

This may be a better option for someone looking to make a stable income. You make your profile and list your hourly rate. Start at low rates, rack up good reviews and earn your way to a larger hourly rate.

If you have reason to believe that your skills are better than the majority of professionals in your field, then this is the place for you. Toptal advertises itself to host the crème de la crème in the freelancing world. You can naturally expect to be paid higher than on other platforms (given you are able to clear the selection process). However, it is only for full-time freelancers. So, if you want to make a career in freelancing this is what you should be aiming for.

Avoiding common issues

There can be many issues (pesky clients) you may run into while working as a freelancer. Some of them are: dilbert-comic

  • Technically challenged clients

I have worked with clients, who even after several months had no idea what I really did (I work as a backend developer). You will often meet who will have difficulty wrapping their head around what you work on. Since they have zero knowledge of technical matters, it can be difficult for them to understand what is easy, difficult, or impossible to accomplish. It can also get difficult for you to justify how much you should be paid. Some view everything technical as the same black box and may have unreasonable demands (“Okay it’s almost done, but we just add a chat feature to this website? I’m sure it’s easy - every website has it these days.”). You will run into problems with this client due to not being able to communicate effectively (which may not be the fault of anyone in particular).

  • The future billionaire

He is convinced his app / website is going to hit it big. His favourite sentence is “We are going to be the Uber of X”. Delusional is the word to describe this person. He will not feel stupid dropping the line, “This is a billion dollar idea…” on the first meeting. Unless he has a past record of creating multi-million dollar business, this is the point where you fake an emergency and promise to get back next week (never).

  • Sleazy start-up guy

Hey! I can’t pay you right now, but you can be the CTO with X% equity in my startup. This may or may not be the future billionaire’s partner in crime. The first question you should ask yourself is, “Why did he so easily offer me 15% of his self-proclaimed billion dollar startup on the first meeting?” This can be for two reasons- either he knows the shares aren’t worth anything, or he believes they are and is gullible enough to give them to you on the first meeting. Dealing with such an insincere / slow person, you will only end up wasting your time. Avoid this person at all costs.

Staying grounded

From the above representations you may think no one could fall for such obvious mistakes. However in real life the prospects offered can sound convincing and tempting. Most clients you deal with will have some degree of the above listed attributes. In such a scenario, it is important to keep a professional relation. Stay an arm’s length and do not get involved into the start-up more than your job requires. If you do get involved, do remember that most (even genuinely good) ideas fail for random reasons in the real world. You have better odds hitting it large in the powerball. Even if you have a great team with a clear gameplan, you will only likely be mildly successful at best.

Getting the right client

As a student, the act of freelancing is essentially brought down to choosing the right client. Try to get a client with the following qualities:

  • Has skills

There is no better to enhance your skills than to work with a more skilled team. Getting such a client can be made easier if you leave out the goal of making profits. If your only takeaway in the project is money, your takeaway in the long term is zero.

  • Someone you can trust

I cannot stress how important this is. While working on real projects, there is a great deal that can go wrong. There are people out there who will screw you over at the first opportunity they get. Trust your instincts, if it doesn’t feel right it probably isn’t.

  • Someone you can learn from

Learning can be not just technical. Most of the learning you will derive as a freelancer will be implicit and non-technical. You need someone with strong ethics and fundamentals in the field he/she is working.

  • Someone with brand value

Working with a company / person who has already made it large in life can set you up for good things in future.

Before a deal

Write. Everything. Down. Making a website isn’t the same as knowing HTML/CSS. You need to write html/css/js code, get hosting, configure access controls, set up a webserver, set up software for production deployment, set up and configure the database, set up admin accounts and controls, get a domain name, configure dns, install an ssl certificate, install failsafe measures for the production server, ensure data backups at intervals, log activity, implement abuse prevention safeguards and test to ensure the website doesn’t contain vulnerabilities (non-exhaustive).

If it isn’t obvious yet, you need to be very clear about what you’re going to go and what you’re not. Do the following:

  • —> Define scope of work clearly to prevent being exploited. Eg- “I’ll give three iterations. Every change from there is going to cost more”.
  • —> Discuss the schedules and timeline. Run them through the client.
  • —> Describe the deliverables for formatting / compatibility.
  • —> If possible, show a demo deliverable from previous projects.
  • —> Lay out the payment schedule. Prefer to be paid weekly, or partly in advance.

Into a deal

  • —> Don’t hand over the work until complete payment has been made. Your service is worth nothing to the client once he already has it.
  • —> Be professional - use online tools for drafting proposals and invoices.
  • —> Communicate with the client. Most problems can be solved with just a small chat.
  • —> Notify progress and keep the client updated. Send out mail at least once a week.
  • —> Be honest. Is it going to take you a day more? Most clients will be accomodating if you’re honest with them from the start.
  • —> Undercommit and overdeliver. Don’t promise anything you can’t keep. The client would have been with two weeks, but you said one. Better to say two and surprise him.
  • —> Even if the client asks for something extra later, just do it (given it doesn’t take too much time).
  • —> Hand over work in proper format (git for developers, Dropbox / Google Drive for designers).
  • —> Own the project. Work on it like it’s your baby. If you can do anything to make it better - even if it’s not your job - do it (again, time matters).


  • —> Look into forming a binding contract with the client (even if you trust him).
  • —> Get a web presence (personal website / behance / dribble / facebook page).
  • —> Just because they’re paying doesn’t mean you’re a slave. Lay out contact hours.
  • —> Feel free to fire clients.
  • —> If you don’t know how to do it, say yes and learn later :)

Abhijit Tomar is an IIT Bombay alumnus currently working as a software developer at Microsoft. When he's not programming, he's usually out for a run.

Read Next

Intern Experience at Microsoft IDC, Bangalore