Today, even non-profits and small start-ups are finding that a digital presence is a necessity, and the required sophistication of this digital presence continues to accelerate. Unfortunately, the skills required to develop and maintain even a basic app, are in short supply — at least relative to the growing demand for them.
This is due not only to the increase in the number of firms requiring software developers, but also to the growing complexity of the apps themselves (multiple uses, platforms etc.). All of this is compounded by the rise in malware and other cybersecurity threats as more commerce moves online.
What are the numbers?
Even simple app take significant time to develop. The hours required to develop an app range from 70-140 hours for Apple devices and 90-170 hours for Android. For game app that jumps to more than 420 hours for Apple and more than 550 hours for Android.
According to 2015 data from the Bureau of Labor Statistics, the average wage for computer programmers in the U.S. was $84,360.
The top 25 percent earned an average of $103,570, and the bottom 25 percent $60,250. This does not account for stock options and other benefits that are typical at many current tech companies. The top hourly wage was in Washington state, with a figure of $57.23.
Competition also results in high turnover, with the average stay of a programmer being about 11 months. All this translates into an average cost of app deployment of $270,000. Only 14 percent cost $50,000 or less, while 18 percent cost between $500,000 and $1 million.
These costs have been the main driver of outsourcing app development. (Some companies turn to on-shore individuals, firms, platforms that develop the app or software for them. Gigster, for example, builds apps for firms using its own collection of project managers and software developers. These still cost upward of $30,000, so it’s not necessarily the cheapest option.) And the outsourcing costs are accelerating. For example, the price of Ukraine Java programmers has risen from $300 a month in 2001 to $4,000 today, as have Indian outsourced talent.
Regardless of costs, outsourcing is increasingly risky. It is harder to control for quality and monitor security risks — both the potential for malware and for commercial espionage — especially when the actual work may be farmed out to subcontractors.
Cultural misunderstanding can lead to significant schedule slippages and low-quality code, and if this results in termination of the contract, entrepreneurs are left without internal knowledge or real ownership of their product. Outsourcing development can also lead to a knowledge disconnect between the outsourced development team and the entrepreneur. This disconnect may make it more difficult for the entrepreneur to properly support the product and rapidly respond to customer feedback. The impact of this lack of agility could have a significant impact on an entrepreneur’s ability to compete in certain markets.
Boosting domestic supply is crucial, but in the short term proposed visa restrictions may worsen the situation. In the long term, more needs to be done to tailor university training to the marketplace, and supplement this with coding boot camps, certifications, apprenticeships and competitions.
In the meantime, what can smaller firms and start-ups do?
First, they should prioritize strategic planning about the evolution of their digital presence, comparing the costs and benefits of in-house versus outsourcing, perhaps even developing a hybrid model where conceptualization and architecture are run internally, while development and operations are outsourced. Early planning means a better programmer match, and potentially the ability to hire talent more willing to work for stock options and non-pecuniary /responsibilities.
Second, if considering outsourcing, manage all risks. Develop complete specifications and detailed outsourcing contracts that include the right to do regular audits, 24-hour access to work, and perhaps performance-based incentives such as bugs per 100 lines of code.
In general, outsourcing should only be considered with medium-sized companies, and for processes such as maintenance of legacy systems, data cleansing and release updates. Outsourcing should be ruled out for the early stages of development and/or projects that have short time frames and require feedback from users.
If outsourcing must be used for new development, consider internally employing a lead software engineer who will be responsible for design, architecture and the general software framework, and outsourcing only discrete software components with well-defined inputs and outputs.
In a way, this problematic environment can provide an asymmetric advantage. Since almost all firms will be facing it, careful budgeting and planning can be a way to outsmart competitors with less foresight.
Krista Tuomi is a professor in International Economic Policy at American University.