How Expensive is it to Develop Software?
A friend wanted to take on a social project. All the funders were highly educated elites, who requested for transparency in the project. Since it is now the Information Age, he felt that IT tools would help facilitate communication and improve efficiency. He asked me to create an app which could do all that he had envisioned. But I had to stop him there and tell him something that he hadn’t realized - developing software is expensive!
But how expensive is it really? We can do a rough estimation. Custom software development, taking into account one month of labor, costs 20,000 yuan, an average of 1,000 yuan per person day. The amount of code is in accordance with the Software Estimation empirical data, provided with the software complexity of change during the entire project delivery, with an average daily output of each programmer ranging between 2 to 200 lines. If this is the cost of average daily output of 100 lines of code, then writing each line of code costs 10 yuan.
Writing the software is only the first step. Software needs to run in an environment. We need to deploy server-side software on a reliable server, and there must be a reliable network connection. Client-side software (such as an app) has to be installed on the user's computer or mobile phone. We need to upgrade, maintain, manage and troubleshoot software. We need people who have mastered the skills to manage it. According to data from Enterprise Management Associates, 60 to 70 percent of the IT budget is spent on operations and maintenance. So, we can roughly estimate that including operating and maintenance costs, the cost of a line of code will reach 30 yuan.
So how many lines of code does an app need? Of course, it changes with complexity, but here are two examples as a reference. RapidFTR is an Android application for family tracing and reunification at the time of disasters such as wars, earthquakes, tsunamis etc. International aid teams can use this application to find children who are separated from their families. This software contains about 34,000 lines of code. Another Android application has been built to manage logistics in primary health care points. Health workers in rural and urban areas can use this tool to manage inventory of drugs. This application contains more than 46,000 lines of software code. In other words, even with a simple objective, the cost of developing a mobile application can exceed one million yuan.
The above estimation only covers the software development, operation and maintenance costs. We don't take into account the adjustment of organization structure, on the basis of IT, to optimize workflow, the creation of high-quality content and the use of communication to promote this piece of software that involves human and financial costs. These costs are difficult to estimate. Needless to say, mobile internet itself is prone to change and innovation, and making mistakes and learning by trial and error is commonplace. Clearly, as you can see, developing new software is an expensive task.
Given that it is so expensive, does that mean organizations which are not well funded, especially public organizations, cannot enjoy the power of technology? Not really. In fact, a large number of software tools already exist, that are very mature, have gone through numerous user tests and can easily complete the task for very cheap or even free. For example, do you want to create a website? Use Ghost or WordPress. Do you want to point-to-point spread? Wechat and QQ are pretty good tools. To gather views and opinions, Golden Data is useful. Do you need periodical mail? Consider MailChimp. For Customer Relationship Management (CRM), even a well-designed Excel spreadsheet can do well.
Therefore, when an organization wants to use IT to enhance its capacity, you need to understand the design capacity. First, understand your target audience, the whole user experience, the difficulties and challenges, and then select the appropriate tools. When you bring the problem down to a set of specific design challenges, often you will find ready-made tools to solve it. If you still feel there isn’t a tool which meets your requirements, you can look at developing new software.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.