Thursday, January 15, 2009

The Price of Freelance Software Development in Malaysia

As a freelance software developer, there is always an eternal gap in the price I wish to charge my customer versus the price my customer is willing to pay. How do I set my price or fees? There are 2 ways to look at this: how much I want to earn and how much they are willing to pay.

How much I want to earn?

Fresh Graduate Level
Being a freelance software developer, of course I want to earn at least as much as an employed programmer (plus the perks of freedom) . Lets say I am a fresh graduate, so I would earn around RM 2K per month with 1 month bonus and 10% EPF, so my yearly income should be around ((12 + 1) x 2000) x 1.1 = RM 28,600. As a fresh graduate freelance programmer, I would like to earn at least 28,600 / 12 = RM 2383 per month. There are 22 working days in a month, so I must at least earn = 2382 / 22 = RM 108 per day. As a freelance programmer, it’s almost impossible for me to be occupied with a project everyday, so I might be occupied with project 70% of the time (I might be scouting for prospects, doing unpaid work, holidaying or lazing around 30% of the time). For me to earn as much as an employed fresh graduate freelance programmer, I should charge my customer 2382 / (22 x 0.7) = RM 155 per man day. In this case, I would be happy and my customer would be happy as well.

Senior Level
According to some statistic, programmer in Malaysia earns an average of RM 63,000 per year (assuming you had around 5 years of work experience). If I want to hit the average earning, I should charge (63,000 / 12) / (22 * 0.7) = RM 340 per man day. I could still be happy, and the customer might be willing to pay this price as well (thought might not be happy).

Management Level
As I get older and more experience (after working for 10 years), I would expect a better income of managerial level. I would want a salary of RM 8000 with 2 months bonus (10% EPF) and a whole lot of benefit (worth RM 5000 perhaps), thus my expected annual income should be (((12+2) x 8000) x 1.1) + 5000 = RM 128,200. At this point of time in my life, I would need to charge my customer (128200 / 12) / (22 * 0.7) = RM 694 per man day. Most of the SMBs (Small & Medium Business) will not be willing to pay for this price, thus both my customer and I shall not be happy.

How much my customer is willing to pay?

SMB
Most SMBs are willing to pay between RM 200 – 400 per man days based on my experience, and a software house might expect RM 300 per man day for part-time contractor. Some big corporations are quite stingy and thought of software development as a cheap affair (or thought that freelancer should be dirt cheap), thus only willing to fork out not more than RM 400 per man day most of the time, or scrap the project. Sometimes I might to get lucky and strike a deal to be a sub-contractor of a huge project, thus earning RM 600 – 1000 per man day (though I would need to deal with a lot of people politic and late payment).

Software Company Rate

The average market rate for Software Company should be around RM 600, which I personally think is really low; there should charge at least RM 1000 per man day in order to be sustainable, but such demand is not a plenty. Only multinational consulting companies or company with government link would be able to get projects worth millions, while others are scrapping between RM 50,000 – 30,000 per project which take up 3 months to 1 year to complete.

What should a veteran freelance software developer do?
I started to feel the pinch for the past years as I desire higher income and my customers are just not willing to pay my price. Thus I desperate need to change my business model.

Master of One Skill
I could specialize in certain areas of software development, let’s say ASP.NET and be a master guru of it. Others might take 10 days to finish a job, while I only need 5 days (so I actually charge 50% less than my desired rate, while still earning as much) due to my experience and availability of tools and existing code. For this to happen, I limit my customer base (.NET technology and web-based only) and I need a lot of customer in this segment to make up the volume.

Build a Product
This is easier said than done. For this to be successful, I need experience or exposure in the usage of such application, and with strong capabilities to market and sell this product. I might need only 2 freelance projects to survive per month, while I need to sell 50 copies of my product per month if it is RM 200 per piece. If I fail, I loose my investment of time and effort between 3-6 months. This is not a game of technical skill but a game of sales and marketing, and product market is more competitive than freelancing.

Future & Hype Technology
This requires big money (venture capital fund) to create something really great or flunk. Think in the line of Google, Yahoo, MySpace, Facebook, YouTube and etc. You either try to create a great piece of technology, or to create a social network which attracts millions of visitors. This is the hardest, with highest failure rate and greatest reward.

Conclusion
It seems like freelance software development and consultation might not be ideal for a veteran programmer expecting a higher than RM 100,000 annual income, unless he had a bunch of rich customers or network with big projects stakeholders.

It’s time to improvise and try something less conventional or conservative. Be it product development or future/hype technology development, I desperately need to think out of the box to ensure my continuous satisfaction and survival.

8 comments:

Noman Sadiq said...
This comment has been removed by the author.
Haris said...

Great writeup ... help both freelance and the employer.

Thanks!

Anonymous said...

Hi Desmond, a very good write up for the "The Price of Freelance Software Development in Malaysia". How about guideline to estimate the total man-days for a software development project? If I need to provide quotations to customers on the total number of man-days needed for a project, how can I accurately identify the number of days needed for the development and also estimation on whether to involve how many fresh graduates, or senior developers in a particular project, so as to come out with a budget for the project? Thank you very much

Desmond Lua said...

Personally I dislike mandays estimations, but sadly that's how the industry work. A junior might take 15 days while a senior might take 5 days.

The right questions is how many days do you think the client is willing to pay for it (based on his experience with others and past experience working with you), and how many days you need to charge in order to make a reasonable profit.

If you are non-technical, asked the programmer to estimated while you add extra buffer (programmer are always over optimistic, always add buffer).

Robert patel said...

I have come across better blog writers who are capable of holding the attention of their readers. You can check out some really awesome blogs at sell and buy brochures,custom graphic design. As I can clearly make out your amateurish content, you can brush up your writing skills with the help of good blogging tips at www.gricree.com. Hey…no personal feelings. Just wanted to help.

Reyansh Ojas said...

Very good calculation and analysis regarding the pay for freelance work from both ends. But, would you ascertain the calculations or data given by you is pertained only to Malaysia or else is it applicable to any kind of freelance work. I mean to get clarified that whether the pay differs from country to country or does it apply to any kind of freelance work on a whole. However, to get freelance projects online or freelance work online, visit Add Any Project, Best Freelancing Portal in India.

krishna sai said...

The blog was absolutely fantastic! Lot of information is helpful in some or the other way. Keep updating the blog, looking forward for more content...Great job, keep it up.
Web Design Company In Malaysia

ramakrishna pothuri said...

It’s a wonderfull blog. Lot of information is helpful in some or the other way.Thanks for share your blog.keep update.
Content Management System