I hate to write this post, but my recent conversation with my IT-illiterate friend prompted me to do this.
My friend wanted to build a CMS website, "to earn a nice part time income". Given that he trusted me quite a lot, he asked me for an estimation of the cost. He mentioned that he wanted a CMS solution, with some mix-match of static-dynamic content. Also, he wanted some distinct flavors in the theme.
Given that he is quite a detailed guy ( read: loves to fuss over minor detail) and quite fickle mind, I told him that probably USD 200 is a minimum. We are living in Malaysia, so that works out to RM 700.
He was startled.
"What? How come it costs so much? I thought the underlying CMS framework such as Drupal or Joomla is free and open source?! A Windows Vista Home Edition is only costing RM 400!"
My friend is by no means the only one who grossly misprices the true cost and value of software. There was a client who asked us to implement a spreadsheet component because "Excel has it" at zero price. Yes, you hear it right. Zero . The reason? Because "Excel has it and so it must not be so difficult to implement".
Now, for the benefits of those who are clueless, and for the benefits of my poor developers who are stunned by those arguments, let me enumerate here why software is so expensive:
- Software is expensive because there are huge overhead costs associated with software development. Computer equipments are expensive. And the fact that software developers need to stay on the cutting edge of the technology means that they need to always upgrade their hardware. Also, software methodologies and tools change very often, software developers need to invest a lot of time and money to just to keep up with the development so that they can provide better service to their clients next time.
For those of you who think that hardware cost is "just of small fraction of the total cost", let me tell you that hardware is not cheap in third world countries; a mere acer laptop is costing as much as a programmer's one month salary here in Malaysia.
- Software is expensive because there are a lot of research going into it. Some express puzzle at software developer apparent "low productivity" (20 lines of code per day). Assuming that you are charging USD 50 per hour, your rate is USD 20/line. This is awfully expensive to the business owners who measure productivity in terms of quantity produced. What they miss out is that programming productivity is all about writing less code to get your job done. A programmer could spend one billable month reinventing the wheel and produce a 10 million line-of-code ORM that is buggy, or spend one non-billable month to look for an open source implementation that is mature and well-developed, and endure the complain of low productivity. The way business owners complain about "research time" is encouraging the wrong type of behavior.
- Software is expensive because the product owners don't know what they want. Imagine if you go to an architect, asking him to provide a blue print, and after he comes out with that you ask him to change it according to your latest taste-- even though it is contrary to the original specification, and you repeat this process,.. No one would dare to do this, but everyone seems to have no problem asking the software developers to change their code at last minute and expect everything to work just fine and the product ships in time and worse of all, is not willing to pay extra.
- Software is expensive because it is customized only for you. The reason why Microsoft Office and Windows Vista is so cheap, is because the development cost is spread over million of users. The consequence of this is that there is no competitive advantage associated with the ordinary office or Windows Vista users. Your customized application, on the other hand, is designed especially for you, and you-- and no one else-- can enjoy the returns and benefits bring forth by the application.