Software Development: Fixed Cost or Opportunity Cost?
Last updated: December 01, 2022 Read in fullscreen view
- 02 Nov 2021 What is Terms of Reference (ToR)?
- 18 Oct 2021 Key Elements to Ramping Up a Large Team
- 01 Oct 2020 Fail fast, learn faster with Agile methodology
- 14 Oct 2021 Advantages and Disadvantages of Time and Material Contract (T&M)
- 03 Apr 2022 Microsoft Solutions Framework (MSF)
Opportunity Cost
Opportunity cost is the cost that you are giving up or forgoing when you are choosing one option over the other. Here, the opportunity cost would be the cost that we might let go of if you choose to undertake the operations in-house over outsourcing development. It could also be the benefit that you otherwise would have received but eventually gave up by in-housing rather than outsourcing.
Investopedia Definition: “The cost of an alternative that must be forgone in order to pursue a certain action. Put another way, the benefits you could have received by taking an alternative action.”
So, let’s know how much is not outsourcing your IT services costing your business:
- You are not able to focus on your core competencies.
- You have to compromise with low-tech skills for your operations.
- You are keeping your in-house team burdened with multiple tasks and stressing them.
- You are just getting work done but not creating any value for it.
- You are not utilizing your existing in-house resources to the best of your capabilities.
If we examine the simple hardware/software division a little further, this may not be such an unrealistic scenario after all. In this case, the company has decided that their core competency is in software design, and that they will be able to differentiate themselves through the innovative software they create on top of commodity hardware. Here, the company has recognized that by intelligently allocating their limited resources, they will accelerate time to market, and greatly improve their chance for success.
A more realistic scenario is a company that decides to keep some hardware and software development in-house, and outsource or contract the rest. Again, this partitioning usually emphasizes the internal strengths the company has, and leaves the highly specialized aspects to outside experts, such as designing radio-frequency modules, or implementing very low-level software components.
In doing this analysis, the company would also need to compare the cost of developing a component in‑house versus buying it ready-made. Assuming the component under consideration would provide limited differentiation if developed in-house, but still needs to be robust, there is often the temptation to keep the development internal to guarantee quality. Many companies falter here because they view their resources as fixed cost.
While a full-time employee may indeed be a fixed cost from an accounting standpoint, they are not a zero cost employee. There is the opportunity cost of having them work on a component that provides limited differentiation in the market. And, more importantly, the long term time and effort to support specialized components.
There are studies which assert that the typical designer throughput is 20 to 30 line of code per day. Not per hour, but per day. Clearly, this is an area of intense and heated debate, especially among the designers themselves. However, when you add up the time needed to properly design, review, document, and test each line of code, that value becomes quite accurate. Especially when evaluating highly specialized software components.
Now, let’s consider a specialized component that requires 10,000 lines of code. And, let’s assume the textbook studies are conservative by an order of magnitude, and that software engineers are capable of 300 lines of designed, reviewed, documented, and tested lines of code per day. This means six to seven weeks of designer time (again, assuming the studies are off by a factor of ten). At an average pay rate of $80,000 per year, this means approximately $10,000 to develop this one component, not considering the overhead of support staff, IT infrastructure, etc.
Worse still are the long-term maintenance costs of developing a component in-house that does not add differentiation to your end product, or requires significant long-term support effort due to its complexity or specialization. The original developer may need to be pulled off a future project to debug or update the component, resulting in unplanned delay. And, not only does this delay impact the current project, it defocuses and demotivates the developer. They may have welcomed the challenge of the initial task, but being asked to support it many months or years later is a less enjoyable.
Overall, the challenge of deciding what components to develop internally, and which are best left to specialized external vendors, is a complex one. Many companies, especially large ones, view their designers are being a fixed cost. And while they are, from a pure dollars and cents perspective, the bigger cost is the opportunity cost, and the impact on time to market. Large companies need to consider smaller, more agile companies. And, similarly, small companies need to allocate their limited budgets to areas that differentiate and highlight their strengths.
Anthony Pighin