In no sphere of life is the adage that you get what you pay for truer than in software development. Turns out that the adage is no respecter of persons (or brands). Even large corporations like the Boeing Company have to deal with the after‑effects of “cheap” software.
Following the crashes of Lion Air and Ethiopian Airlines’ 737 Max planes that killed 346 people, multiple investigations are ongoing to try to determine the causes of the crashes. The Max’s software, more than anything, else has been the prime suspect from day one, and there are suggestions that this suspicion may be accurate. Indications from the investigations increasingly point to poorly designed software. Then came revelations that Boeing outsourced the development of the Max’s software to $9/hour engineers from developing countries, ostensibly to reduce costs. Which raises the question: At what point is it safe to prioritize cost over quality?
To be clear, that question is not meant to cast aspersions on the skills and expertise of software developers from developing countries. It is not even meant to advocate for expensive software. Its goal is to revisit that common tension between quality and price that everyone involved in software development knows so well, whether as a client, as a developer or even as an end user. Ultimately, we should be able to establish what the focus really should be when it comes to software development.
Is there value in custom software for an organization?
In a world saturated with off‑the‑shelf software that may or may not suit your organization’s needs, custom software can be the key differentiator that sets your brand apart. It offers a high degree of tailoring that distinguishes your products and services in the marketplace and represents a unique competitive advantage that innovative companies recognize and value. While many organizations recognize this fact, they do not give as much consideration to what it involves beyond price.
Avoiding the price-quality tradeoff
The truth is, software development is complex. While the initial ask for a particular project may appear simple enough, the nature of software development is such that there are always several unknowns that will only arise after the project is initiated. That simple ask may be turn out to be so much harder to implement than any of the parties initially envisaged.
The developer must therefore factor in multiple considerations, some of which – at least on the face of it – can be contradictory. This is especially true when it comes to cost and quality of the end product. While it is immediately obvious in some cases that what the client wants cannot be delivered at the price they wish to pay, this is not always the case. What should the developer and the client then do?
They must prioritize clarity. Every design and build process should be premised on what the client wants, rather than on what the developer thinks they want or should want. It is therefore important to understand the client’s needs, who the end users are and the problem the software is designed to solve. Based on this sound knowledge, the developer can offer accurate costing.
This is where a good Software Requirements Specification (SRS) becomes critical. The SRS will help both parties flesh out important considerations like quality attributes, external interfaces, required performance levels and design constraints among others. When the client provides a good SRS, the amount of time and effort required to achieve desired software goals is minimized and cost is reduced. This is just one piece of the puzzle, however, there are other considerations, particularly for the organization.
How to get it right
Faced with the pressure to maximize profits, some organizations make price their number one priority. They may do this by choosing to use developers from developing countries who charge very little, as with the Boeing case referred to above. Or they may pick the cheapest quote for the job. They could also try to cut corners with the specs. Regardless of the cost cutting measure, research shows that when an organization makes price the number one priority in software development, the result is rarely good.
That’s because whenever developers are forced to satisfy an untenable price point, the tendency is to sacrifice sound software development practices, which leads to poor quality software. So it really is true that you get what you pay for when it comes to software development.
Does this then mean that an organization must break the bank in order to get good quality software? Not necessarily. There are certain steps an organization can take that will ensure it gets good quality software while managing the cost.
- It is important to drop the-cheaper-the-better attitude. If you are quoted a price that seems too good to be true, it most likely is. Upfront costs are significantly higher for quality software.
- Requirements and design should be clearly communicated. If a developer does not clearly understand what is being built, its purpose, and how it will integrate with your current ecosystem, costs are likely to increase as it may take several rounds of back and forth to get it right. Therefore, ensure you are clear right off the bat about your requirements and design.
- Prioritize key features – It is important to understand the key features that will offer the most ROI to your organization and value to end users. By prioritizing these features, you can implement them earlier, which will make your software immediately relevant and reduces cost.
- Selecting the right development team for your project is key, so choose your team well. Good software developers have in‑depth knowledge of the latest technologies, are responsive, quick to problem solve, and most importantly, are better and faster at coding, and their code is more accurate. This is critical to cost saving because if the code is not done correctly, you will have to deal with bugs in your code, and the more bugs you have to deal with, the more money you have to spend.
- Use reusable code, which saves time and money, resulting in up to a 30% decrease in development costs. By focusing on creating software that works for your entire organization rather than the needs of a single department, you can achieve significant cost savings.
- Research the average cost for developing the software you want and be prepared spend what is required to get the quality you need. Remember, you get what you pay for.
There is no doubt that in software development, as in most aspects of business, there is often a tradeoff between price and quality. An organization can be tempted to simply go for the lowest price they can find or forgo custom software in favor of off‑the‑shelf software. However, either of these options do not necessarily mean paying less. Going for the lowest priced developer can end in disaster as the poor-quality code they present you could cost you several times the initial cost to correct. Similarly, custom software often can be the more cost‑effective solution when compared with commercial off the shelf software, which need to be purchased, modified and maintained.
Choosing the right developers and technology will play a crucial role in determining whether your technology investment offers you a worthwhile return or it becomes a drain on your bottom line.