Skip to main content

How to Start Your Career as a Freelancer?

I started my career as freelancer since beginning of 2012 as freelance programmer at High-Performance Computing Labs, Universiti Teknologi PETRONAS, Malaysia. Being a freelancer for 2 years, I am not thinking myself as a freelance master. Thus, this article is not a "how-to-be lecturing", but it's a kind of a reflection. This article is based on my experience and discussions with some friends whom working as freelancer.

First thing first, freelancer is a skill-based position. You don't have to get any degree from any university (even in some case it will give a value-added). As freelancer, even if you are still 5 years in age, as long as you have skill or set of skills needed, then you are ready to go.

Because freelancer is a skill-based position, showing your skill is paramount. You are very lucky that you are now living in the world where most of the platforms you need as freelancer are provided for free. Here are some examples of free platforms you can use to show your skills:
  • Any type of coding: github, gitlab
  • Photography and image editing:, or simply show the photos in your Facebook, Twitter, or Instagram.
  • Design: GraphicRiver
  • Programming and algorithm skills: your blog or any programming forums (mathworks, stackexchange, etc).

So, to highlight, the first step needed is to show up your work(s). Let people see your works, let them admire your works and let their own words say good things about you and your works.

After showing your work, you need to work with people using a trusted platform. There are bunch of trusted platforms out there that connect you and prospective clients. One of them (the one I use since April 2014) is oDesk. ODesk is a great platform that facilitate great working collaboration between clients and freelancers. Other than oDesk, you can use like Elance,, etc. Each of them have different rule of works. You have to learn carefully how the platform provides interaction between you and your client(s).

Finally, I was thinking that by being a freelancer, we may have more "free time". In fact, it is not. Being a freelancer, it totally means that we have to manage our working time ourselves. If you work at any office, the office will make you come to office at 8am and leave the office at 4pm, from Monday to Friday. However, depend on you and your agreement with your client, being a freelancer will make you do one of these working style:
  1. Adapt your working time with client's working time. If you have small time difference, this will not be that difficult. It will be very difficult if you have big time difference.
  2. Manage your working time yourself. If you can communicate well with your client, most of the time, your client will understand as long as you fill up their requirement and reach the total hours agreed. For example, you may start your work as early as 4am and work for 3 hours. Then you send your children to schools and start working again at 9am until 1pm (so now it's already 7 hours). You pick up your children and send them to bed for a nap (or you also have nap if you want to). And work again for one hour after 3pm (so now your working time is 8 hours already. Same with those working at any office). This is just an example. You may manage your time differently.

Hope you enjoy being a freelancer like me. Believe me, it's a very great experience, especially if you are freelancer working with people around the world. You may get a good clients, but once you may get a not-too-good clients as well. Just enjoy the game (and enjoy the money as well). Hehehe...


admindikti said…
especially this time of years. gas price was raised, staying home job is one of the advantages. :p

Popular posts from this blog

If and For in Wolfram Mathematica (with examples)

IF Condition in Wolfram Mathematica The syntax is as follows xxxxxxxxxx If [ condition , what to do if true , what to do if false ] Some examples Example 1. Simple command x x = - 3 ; If [ x < 0 , - x , x ] 3 Example 2. If condition in a function abs [ x_ ] := If [ x < 0 , - x , x ] abs /@ { - 3 , 2 , 0 , - 2 } { 3 , 2 , 0 , 2 }   For in Wolfram Mathematica The syntax is as follows For [ start , test , inc , what to do ] Some examples Example 1. Simple Loop xxxxxxxxxx For [ i = 0 , i < 4 , i ++, Print [ i ]] 0 1 2 3 Example 2. Another simple loop For [ i = 10 , i > 0 , i --, Print [ i ]] 10 9 8 7 6 5 4 3 2 1 Example 3. Print list a = { 10 , 3 , 9 , 2 } For [ i = 1 , i < 5 , i ++, Print [ a [[ i ]]]] 10 3 9 2  

Find JIRA issues mentioned in Confluence Page

I have been walking through a lot of pages in internet but have not found any answer except one. However, the answer is not complete, so I will share my experience here. This feature is very useful, especially to summarize the issues found during certain tests, where the tests are reported in a confluence page. I found that there are so many questions about this, but Atlassian seems does not want to bother with this request. I found one way to do this by the following tricks Take one JIRA issue that related to the target confluence page (in this case, say it is GET-895) Find the global ID of a JIRA issue: It will show the JSON like this: [{"id":28293,"self":"","globalId":"appId=662e1ccf-94da-3121-96ae-053d90587b29&pageId=105485659","application":{

Mininet/Containernet Problem: Exception: Error creating interface pair (s2-eth5,s3-eth1): RTNETLINK answers: File exists

If you did not shut down the previous running mininet/containernet network (e.g. if you lose your connection to remote server), you will got the following error when you try to rerun your mininet network Traceback (most recent call last): File "./", line 31, in <module> net.addLink(d2, s1) File "build/bdist.linux-x86_64/egg/mininet/", line 403, in addLink File "build/bdist.linux-x86_64/egg/mininet/", line 430, in __init__ File "build/bdist.linux-x86_64/egg/mininet/", line 474, in makeIntfPair File "build/bdist.linux-x86_64/egg/mininet/", line 202, in makeIntfPair Exception: Error creating interface pair (d2-eth0,s1-eth2): RTNETLINK answers: File exists In order to solve the problem, you need to clean up the previous running topology by using the following command sudo mn -c It will clean up all your cache. It will be something like this $ sudo mn -c *** Re