Author: Nik Froehlich, Founder and CEO, Saritasa
Software is essential for businesses. Nearly every business uses some form of software to conduct its day-to-day activities. Some companies need mobile apps to serve their customers and remain competitive. Others need highly-customized workflow applications to improve operating efficiency. Still, others need website development or e-commerce. There is no escaping the fact that businesses need to utilize technology to remain competitive, efficient and successful.
So, the question arises: Is it better to utilize internal resources to build and maintain the business’s software or hire a technology consulting firm? (The term “technology consultant”, as used in this article, is synonymous with “software development company”).
In this article, we discuss the important factors that should be considered when making this very important decision. Those are:
- Risk Management
- Business Strategy
Which is more cost effective or gives a better ROI: Utilizing in-house resources or outsourcing software development, maintenance and support?
The cost benefits of outsourcing decreases as the number of resources (people) and time is needed to support the software. At a certain point, economies of scale will tip the equation in favor of investing in an internal software development department. What is the equation? Like any mathematical equation, there are numerous variables that need to be defined. The answer is based on the variables, which of course, will be different for every company and situation. Let’s examine the various variables.
The hourly rate charged by a software consultant will be all-inclusive of everything it takes to provide an hour of work by a skilled professional. That includes recruiting, turnover, vacation/benefits, management, quality control, infrastructure (equipment, space, overhead), and so on.
To determine and track the hourly cost of internal resources will require adding many individual costs together and spreading that cost over the number of persons involved with the software development team.
Salaries for skilled software engineers are high. The increasing demand keeps those salaries increasing, and software engineers are known for being very selective with their choice of an employer. In addition to payroll costs, there are significant costs related to recruitment, onboarding and turnover.
Software engineers need strong technical leadership. Think of a proficient violinist. When playing a symphony, they need not only a talented orchestra, but also a strong conductor. For engineers, it relates to a very senior-level Director/Manager with strong technical skills. Office space, desks, hardware, add to the costs. Redundancy is critical with technical engineers so that no one-person controls all the intellectual property. Utilization must be taken into account. Software development is a very cerebral task, so expecting anything more than 80% utilization will only result in low quality work and poor morale. Expect no more than 1,600 hours per year of actual work product.
Finally, and the most difficult to accurately forecast, is the overall efficiency for the hour of work by each engineer. No two engineers are the same, and some just output higher quality and more work than others. What takes one engineer 6 hours for a particular task could very easily take a different engineer 10 or more hours.
All these factors should be included in the calculation of costs when comparing hiring internally or using the services of a technology consulting firm.
Software applications, whether websites, web applications or mobile apps, have a wide range of complexity. Think of it as comparing the effort, skills and team size necessary to build and maintain a go-cart, versus a street car, versus a formula 1 car, versus a cruise ship, versus a rocketship.
A simple website or a standard ecommerce website can easily be developed and maintained by a single individual with the necessary skills. That is if they also have design skills.
Mobile apps can be simple as well, but it will require someone with skills with both Swift (for iPhone) and Kotlin (for Android).
Things start to become complex very quickly if the software requires a “backend” (server for processing requests and storing data), and a web application (for user interaction) and/or mobile apps. Each have different programming languages that require unique skills and experience. There will likely be integrations with other systems required “API’s” to be engineered and created (or integrated into the systems). Before even considering the System Administration (of the server infrastructure for backups, redundancies and scale), a team of at least five engineers plus UI/UX designer, a Project Manager and a Product Manager. This still doesn’t provide any redundancy in the event an engineers leaves the team.
The days of the “full stack” developer are waning if not already passed. Programming languages have become so complex (and powerful) that it is not possible for a single developer to be proficient in all the technologies – especially if one wants to take advantage of all the tools and power of the various technologies.
The complexity of the software that must be developed or maintained in a critical factor to consider when comparing hiring internally or using the services of a technology consulting firm.
There are many types of risks when operating a business, and managing those risks are critical for good business management. And the degree or amount of risk tolerable varies with each business. Some risks to consider when comparing hiring internally or using the services of a technology consulting firm:
Control of Intellectual Property: Clearly, if all the software development and maintenance is handled internally, the control of all intellectual property, data, software code, applications is with the company. When using the services of a technology consulting firm, others will have access to some of the companies property. This can be mitigate to various degrees depending on the sensitivity of the information through protocols established with the technology consulting firm (such as admin control of all access points, separating “real data” from the company and various other methods). Also, doing business with reputable firms can give further assurances of security (just like choosing the right accounting firm to handling financial data).
Sustainability: Complex or mission critical software requires constant and ongoing maintenance and support. When something goes wrong it could have big impacts on revenue or reputation with customers. So having an internal team available at all times is important. Unfortunately, turnover is high in the technology industry, averaging 57.3% per year. With five software jobs available for every developer, Gartner says the talent shortage is the greatest barrier to emerging technology adoption. Utilizing a technology consulting firm can mitigate this risk since a reputable firm will have engineer redundancy in place and should always have resources available.
Scalability: As your software requirements grow, so will the size of your development team. During an initial build, you’ll need a wide variety of resources (from design to multiple forms of development to QA and beyond). Once the application launches it will require fewer hours to maintain (assuming you aren’t immediately developing additional functionality). If the demands of the software grow, changes must be made to make it scale. Outsourcing allows you to rapidly scale up or down depending on your current needs. You can add developers if a release needs to be done faster, and then remove them when no longer needed. This is much more difficult to achieve with the same efficiency with an internal team, as it requires hiring and firing resources.
In any business, it is managements duty to continually evaluate the best allocations of money, time, effort and resources to maximize the return (or efficiency) of the company. This is as true of privately-held mid-size companies than it is for large public companies.
For some businesses, it makes more sense to lease office or warehouse space than to tie up large amounts of cash with the purchase of land and buildings. When leasing, often the responsibility for facility maintenance rests on the landlord so that the company does not have to hire and manage the people necessary to maintain their facilities.
Deciding to outsource the technical expertise instead of running an entire IT department is a similar consideration. Is the time, effort and costs associated with setting of and managing a technology department the best use of those resources? Is having an internal software development team part of the overall business strategy supporting the long-term business objectives? How does it play into an exit strategy (eg: will it increase or decrease the value of an exit or investment)?
A company that is primarily a technology business would likely benefit from having an in-house team of engineers if they wanted to sell the business. However, the overhead and costs of sustaining an in-house software department could be viewed as an unnecessary expense (driving profits down) for a manufacturing company.
The primary business strategy, goals and long-term plans is something to consider when comparing hiring internally or using the services of a technology consulting firm.
If software is a large part of the business (eg: the primary source of revenue for the business), it probably makes sense to focus on an internal software development department and invest in the talent, space, equipment, metrics and processes to maximize efficiency, quality and utilization. If software is a tool utilized by your business but not a revenue source, it may make more sense to outsource development and maintenance. This is especially true if the company does not already have talented technical team members – as its much more difficult to build a strong internal development team without the necessary technical leadership.
Whatever the decision, it doesn’t need to be permanent. After developing software, it may make sense to build an internal team for ongoing support and maintenance.
From our perspective, as a technology consulting firm, we believe the equation can begin tipping to a better ROI with internal teams when the monthly development requirements are 2,000 hours per month or greater. At that point, it makes sense to start evaluating internal versus outsourcing using the criteria in this article.
Needless to say, whether building an internal team or using an external consulting firm, hiring the right people/firm makes all the difference. Hire wisely!