Two Unexpected Fallouts From Bad Software Quality

Upholding software quality can be difficult. Just when you think you have it mastered, it can crumble in an instant. One company currently dealing with this is Apple. The Wall Street Journal recently examined Apple’s software quality woes:

“No one, it seems, not even Apple Inc., can escape the challenges that come with the scale and complexity of modern networks. Apple is selling 40 different devices this year—one-third more than it did five years ago—increasing the amount of code the engineering team must write to make sure each functions properly. With more high-end features…Apple’s engineering team is facing more challenging software [quality] problems.”

I learned a similar lesson when I was in grade school.

One summer, I started a small car washing business with little more than some soap, sponges and a bucket borrowed from my father. While I was starting this business as a means to buy some new toys (it began with an R/C car, escalated to planes, and eventually guitars), my father saw entrepreneurship as a means to teach two things: work ethic, and the value of a dollar.

What sticks in my mind still to this day however, was his constant insistence on quality. He knew that our neighbors could either hire me, or simply drive a mile down the road to the industrial car wash. If I didn’t differentiate my services, I wouldn’t have any business. Quality would be that differentiator.

When an organization allows poor development practices to take hold, software complexity and technical debt can cascade across entire software portfolios. For starters, software complexity has a direct negative effect on the productivity of the engineers working in that code base. If (hypothetically) you were to move a set of engineers from the least complex region of the codebase to the most complex region of the codebase, their productivity would decline (conservatively) by 50%.

This decline in productivity doubles the cost of the engineers working on this region of code! This is of course before you look at the increased levels of defects resulting from dealing with increased software complexity.

Looking at Dan Sturtevant’s MIT Dissertation, we see that high scores of cyclomatic complexity result in a 2.1x increase in defects found within the code base. Recalling that defects increase exponentially in cost depending on the environment (what is $100 to fix in development will be $10,000 or more to fix by the time it makes it to production) the costs can really begin to add up.

Software Quality’s Impact on Talent

As if this wasn’t enough reason to seriously consider the real costs of technical debt, it continues to escalate. Software engineers working in the most complex regions of code can be expected to have a turnover rate of ten times greater than engineers working on less complex code. Employee turnover costs differ per organization, but recruiting costs, relocation fees, vacation pay-outs etc. While those costs are easier to quantify at a given organization, what’s often not being considered is the decrease in productivity between new hires and experiences engineers. You have to weigh in potential training costs, as well as an uptick in bugs, and decrease in overall productivity when comparing an engineer with more experience in the organization to new hires.

While often we think of technical debt as the cost associated with refactoring code, that doesn’t take into consideration the full cost of lingering software complexity. We can see time and time again the negative effects of allowing software development to become a feature factory, in fact we’ve even written about it here. Much like my carwash business, it’s easy to see the impact of poor software quality on your top-line revenue, but you’d be remiss if you didn’t consider the hidden costs poor software quality has within your organization.

Andy is the Division Lead for Agile Analytics at CAST Highlight where he helps his clients leverage software intelligence to develop better software, faster. Andy cut his teeth as a DevOps consultant for IT Organizations across North America, specializing in identifying bottlenecks, driving relentless improvement, and quantifying investment returns from tool implementations and consulting services. Andy is an SPC 4.5 and holds degrees from the University of New Hampshire and Rutgers University. When Andy isn’t in the office, he can be found running in the Flatirons near his home in Boulder CO.