The High Cost of Compromising Quality in Software Engineering
What does the phrase “You can only have two: Quality, Speed, or Cost” mean in the context of software engineering? Many argue that it’s impossible to achieve all three—delivering high-quality software quickly and at a low cost. However, for any reputable software development company, quality is never negotiable. No credible firm would risk its reputation by producing subpar applications. If a potential development partner suggests otherwise, it’s a clear sign to walk away.
Is the Iron Triangle of Project Management Effective or Even Correct
In business, difficult decisions are inevitable, as are managing tight schedules, delivering complex projects with broad scopes, and often collaborating with teams lacking critical expertise. In such scenarios, it becomes essential to apply the “Quality, Speed, or Cost—Choose Two” framework to guide decision-making effectively. This is the Iron Triangle of Project Management.
Speed: Timelines are always critical and often shortened due to challenges that pop up along the way. Whether it’s contractual deadlines, leadership expectations, or market launch strategies, time constraints are ever present.
Cost: Balancing the cost with the final product’s value is often a calculation of the ROI. Overspending without commensurate returns is futile.
Quality: This is a tricky one. It refers to both the backend and the quality of the software’s user experience, e.g., the coding quality and the software’s features. Considerations include response time and the ease of updating the software.
Let’s talk about the “options”. We have three parts – speed, cost, and quality. What happens if we focus on any one of them? If we run this experiment with software development, we realize one thing: Quality cannot be negotiated!
Quality is the Cornerstone of Great Software
Quality software is a fundamental cornerstone of practical software development and is not negotiable. Bad-quality software will become a challenge for the business to use and hamper any strategy to update it in the future. As with any project, especially software development, there is a direct connection between the three parts. And quality is essentially the cornerstone in this relationship? If you reduce quality, it affects speed, which, in turn, impacts the cost.
What if You Make Quality a Secondary Consideration?
If you ignore quality in the initial development phase, it might seem like the project is progressing faster, which is an illusion of speed. The development may appear to be moving faster than the timeline suggests. Initial reports may even look great. Client demos run smoothly. During this phase, your team will hit every milestone, and it seems like the project will be completed ahead of schedule.
The illusion of initial speed gains quickly leads to a cascade of challenges. Over time, mounting technical debt begins to surface as bug-ridden, inefficient code. The consequences become undeniable: increased time spent on debugging, heightened risk of critical failures, and significant disruptions to the project timeline.
Making Quality #1
Neglecting quality in software development can lead to devastating consequences. Consider the infamous 2017 data breach, where hackers stole sensitive information from over 143 million consumers, including names, Social Security numbers, birth dates, and even credit card details. This event highlighted the critical importance of accountability during the software development process. What happens if developers fail to take responsibility? Why does it matter? For companies handling sensitive data standards in today’s digital age—the risks extend far beyond financial loss, potentially impacting society.
Vulnerable software is a significant challenge in the 21st century, and many organizations recognize the weight of this responsibility. However, the Equifax breach demonstrated how failing to address vulnerabilities and delaying transparency can erode public trust. The agency’s decision to withhold information about the breach for an extended period not only fueled public outrage but also raised serious questions about its ethical standards. Companies must overcome the fear of admitting flaws and prioritize transparency and accountability to protect their users and reputation.
Ensuring Quality is a Priority
There cannot be good, solid software if we disregard quality. Some standards and processes ensure quality is #1. Consider the DORA approach; with six years of research, the DevOps Research and Assessment (DORA) team has identified four key metrics that indicate the performance of a software development team:
- Deployment Frequency- How often an organization successfully releases to production
- Lead Time for Changes- The amount of time it takes a commit to get into production
- Change Failure Rate- The percentage of deployments causing a failure in production
- Time to Restore Service- How long it takes an organization to recover from a failure in production
At a high level, Deployment Frequency and Lead Time for Changes measure velocity. In this case, Velocity describes how fast we can move in a certain business direction. Can ideas be experimented on in production? Can we iterate ideas fast? Change Failure Rate and Time to Restore Service measure stability. Stability describes how our product withstands adverse effects, such as outages, internal errors, and some transient system failures. Is our system self-healing, or does it require manual intervention?
The truth is clear: the fastest way to build something does not mean you ignore quality.
The message is clear: achieving strong DORA metrics is inherently tied to maintaining a high-quality codebase for your software products and services. High-performance, scalable software cannot exist if it is plagued by bugs or built on a poorly designed architecture.
Investing in robust coding practices and comprehensive testing is essential. These efforts ensure the development of maintainable, long-lasting software, which is critical for delivering a strong return on investment (ROI) and supporting long-term business success.
Insight From the Past
This is not new advice or standards. An insight that Martin Fowler had in the Tradable Quality Hypothesis article he wrote in 2011. “As soon as you frame internal quality as tradable, you’ve lost. People are so used to quality being tradable that even in the best circumstances, you’re going to have difficulty overcoming it.” The Design Stamina Hypothesis states that internal quality isn’t tradable because reducing internal quality slows us down.
Adopting a quality-first approach to software engineering should be the foundation of every custom software development company. Our mission is to deliver exceptional value through innovative software solutions that meet and surpass customer expectations. Upholding rigorous quality standards is not optional; it is essential to protect a software company’s most valuable asset: its reputation. In an industry where trust is paramount, our reputation is built on consistently delivering high-quality software that stands the test of time.
As software engineering managers and lead developers, embracing a quality-first mindset should be our guiding principle. Our responsibility extends beyond simply delivering software—we are tasked with creating meaningful value through exceptional solutions that exceed expectations. Ultimately, our reputation and the legacy of our work are defined by the quality we consistently deliver.