This is a guest post by Mansoor Adenwala. Mansoor is a blogger, corporate trainer, process advisor, and generally a solution-finder in the world of ICT. He currently works for Business Beam Pvt. Ltd in the capacity of Managing Advisor and is based in Islamabad, Pakistan.
Osama wrote about how he discovered there were 1173 freelancers on oDesk, which set off a pretty lively discussion on freelancing in Pakistan. I thought Iâ€™d add my two cents to the discussion, and maybe encourage some new people to join up the freelancing world.
Iâ€™ve been associated with Rentacoder.com for the last 5 years and done around 9 projects in this time. Though Iâ€™ve stopped earning through these means, its still a healthy backup to fall on incase there are ever hard times. I became a member of rentacoder in my university days, when lulls in study time were threatening to rust my coding skills. Also back then, I wanted to make some extra money and since my parents wouldnâ€™t let me work in case my studies were affected, RAC it was. For the next year, I completed around 6 projects and had earned somewhere around $1200 (after paying all the requisite charges of the site and western union etc). Not bad as an extra pocket money. I also learned a couple of new things about both, myself and the coding world which shaped my career later on in life.
When you are freelancing, you really donâ€™t know what you are getting yourself into. Initial thoughts are, its just another project, Iâ€™ll be able to do it without any problem. But its not. The first thing you learn is that earning money is not an easy task (the universal truth of adulthood). When you are doing university projects, the scope is largely defined by you. You can add features, remove features or even change them completely off your own and no one will complain much (except maybe a tough professor, but then who cares right?). When you freelance, you learn for the first time, requirements are important and its not as much fun when others are changing it!
Read onwards for more important lessons learnt
I remember this one project for live support system I did for an Indian company. The initial bid included a requirements document, for which I was supposed to code and deliver a standalone system. I won it and started working. A month down the road, they wanted it to be integrated with their original system. Still a month later, I was not only supposed to deliver it, but install and test it as well. That too, remotely! During these first six months that I worked on it, requirements kept changing, as the contact person kept changing, forcing me to rewrite large sections of the code. Eventually, after much delays, the system was finally ready as per their document and ready to be delivered. A senior person at their company came to test it and asks me â€˜where is XXX feature?â€™. I replied â€˜it wasnâ€™t part of the original requirements hence not thereâ€™ to which they said â€˜but thatâ€™s a standard feature! We want it!â€™. That ended my relationship with that company. I took the project in arbitration, won and claimed my money, but it didnâ€™t leave a good taste in my mouth.The point here is, there are many challenges you learn freelancing that you wont when working in a software dev shop, especially those relating to handling a customer. In this case, scope creep took a 3 month project to 15 months, because at the time I wasnâ€™t equipped to handle changes. However, my last project came in on-time because I had clearly communicated what I could deliver and when and set the scope and expectations as precisely as I could (I had even managed to get 5x times the original bid amount from the buyer because they realized later that changes were necessary and I charged them for each and every one of them). So as a freelancer, you learn how to manage requirements and your customer.
You also learn, on a fast track basis, how to estimate a project! Since you are the one whose reputation will be on the line here. While formal estimation was still way beyond my reach at those times, I ended up making a simplistic model, based on my experiences with past projects. For web design projects, I asked for 3 days per simple script, and 5-15 days for a complex one, which included time to code, test, bug fix, deliver UAT and sign off. So it became number of scripts x time for each script acc. to complexity. This worked very well for me but may not necessarily work for others. Another PM skill is task management or in formal terms â€˜creating a work breakdown structureâ€™. This is what youâ€™ll deliver to the client to show them exactly how will you complete your project. Whether its followed or not is another story, for another day.
Yet another important skill learned through freelancing is expectations management! Your client will ask for a rock and expect the moon. If you want to succeed, youâ€™ll learn to make them understand the difference and why, even though theyâ€™re asking for a rock, they actually want a mountain but not the moon (and if your suave enough, increase the bid amount to charge them for maybe a mountain range in the process). If iâ€™m sounding confusing here, then you may want to read up on expectation management.
But the most important lesson which I learned as a freelancer, was knowing myself and my capabilities better. To give a little background, I was a pretty decent coder back in the day, and for years thought that my future career would be in front of a computer, writing innovative code to change the world because thatâ€™s what software engineers do. After doing four projects, I realized almost all software development is very different from what you do at university, is essentially all the same and gets less challenging with each successive project. This just wasnâ€™t my cup of tea. I also learned that bidding on a project, engaging the prospective client in discussion, negotiating what I could and could not deliver, and winning the bid was, for me at least, more satisfying that coding and delivering the final product. Sure, coding is fun when your doing something innovative and creative but not as much as getting the project. Iâ€™m writing about this here to let you guys know, freelancing can bring out latent but amazing abilities in you and allow you to understand yourself better.
Iâ€™ll stop here, since this is a blog post, but believe me when I say, I havenâ€™t even scratched the surface of how those years helped me out. Give it a try, you never know what new skills you might discover in the process. Because as they say, necessity is the mother of invention, and only when there is an immediate need for a certain skill, will you be able to learn it.