Have you ever heard of the movie Alien vs. Hunter?* If your answer is no, I’m hardly surprised – according to IMDb, it’s one of the worst movies ever made, holding a rating of 1,5 out of 10 stars. Rotten Tomatoes is even less forgiving, “awarding” the anti-classic a staggering 11%.
And although watching B(C?)–movies may be a lot of fun (who didn’t enjoy The Room!), low-quality products and services are often a pain. From the business perspective, they’re usually destined to fail.
So why do so many companies develop poor software and expect it to succeed?
In this blog entry, we’re going to explore the philosophy of Software Craftsmanship. Is quality really that important for digital solutions? Which industries are especially vulnerable and can lose a lot from poorly developed technology? Read on to find out!
*Not to be mistaken with Alien vs. Predator
The Impact of Poor Software Quality
Many companies decide to go with cheap software to save money. But, citing Admiral Ackbar – it’s a trap! Because, paradoxically, cheap software is actually… expensive.
Yes, you read that right. According to BitBar’s estimation, the total cost of poor-quality software in 2018 reached around 2.84 trillion dollars in the US alone. This was generated by the so-called Cost of Quality (COQ) which consists of all the extra expenses – beyond production costs – and includes repair costs, prevention, corrections and appraisal.
But COQ is not the only problem related to poor technology. In their article about software quality, Building Better Software lists a number of additional consequences – some of them maybe even more problematic than higher costs.
When it comes to customer-facing solutions, a lack of quality usually results in revenue losses, creating a direct financial disadvantage. Moreover, poor software also leads to reputation damages, since nobody wants to deal with websites, apps or services that are unreliable or filled with bugs. These problems also apply to internal software; obviously, employees won’t be over the moon with a disappointing solution that drains more time than it saves, which can result in a loss of productivity.
But the consequences can be even graver – low-quality solutions also generate security risks.
In 2011, Mt. Gox, the largest exchange of cryptocurrencies at that time, was hacked, losing more than 850 000 bitcoins (worth $450 million). And although Mt. Gox was able to recover 200 000 bitcoins later on, the company admitted that it was their software’s weaknesses that led to the hack. Mt. Gox never recovered from this fiasco and filed for bankruptcy a few years later.
To ensure high quality, testing is also crucial. A well-known industry fact is that repairing a defect in the early stages of a project costs approximately six hundred and forty times less than fixing the same issue after release. To highlight the importance of this issue, we’re going to tell you another quick story from Building Better Software.
In 2008, London’s Heathrow Airport launched its 5th terminal. Prior to the inauguration, the staff diligently tested the new luggage handling systems. These systems were designed to handle massive volumes every day, so tests were performed with 12 000 pieces of luggage. The system worked perfectly every time. Yet, on the grand opening day, the entire system… shut off. During the next 10 days, over 500 flights had to be cancelled and tens of thousands of pieces of luggage didn’t travel with their owners.
As it turned out, the staff didn’t account for human intervention. On the day of the opening, one of the passengers forgot something important in their bag and removed their luggage from the system, which… crashed it.
As you can see, poor software can have dire consequences and, although often cheap, can ultimately become very costly. Moreover, some damage may be impossible to repair – like reputation.
How to Make Your Software Successful
Luckily, low-quality software is avoidable. Failing digital solutions don’t appear out of the blue; they’re a result of well-known mistakes. The outcome of a software development project can be predicted and controlled – but only if its causes are understood and addressed.
- 1. Lack of domain knowledge. Most developers are not experts in the business domain served by their applications. This is especially true for telco, mHealth or retail. To solve this problem, you should either hire team members experienced in given industries or work with software partners that have relevant experience.
- 2. Lack of technology knowledge. In today’s IT reality, developers are usually proficient in several programming languages and technologies. Unfortunately, multi-tier business applications are a complex agglomeration of multiple elements like UI, business logic or data management. Since only a handful of developers knows all the above, incorrect assumptions about how other technologies work create the most defects. The best way to overcome this issue is to conduct peer reviews and perform static and dynamic code analyses.
- 3. Unrealistic schedules. We’ve all seen it at some point, especially at start-ups (or the gaming industry). The few successful outcomes were a result of heroics that can rarely be repeated in the future and always came at the cost of huge employee sacrifices (in the gaming industry it’s called b̶u̶s̶i̶n̶e̶s̶s̶ ̶a̶s̶ ̶u̶s̶u̶a̶l crunch). CD Project Red’s latest Cyberpunk 2077 fail perfectly depicts this problem; the game was released unfinished – being nearly unplayable on PS4 – and as a result, scored only 3/10 on Metacritic user reviews. Sony even removed the game from PlayStation Store, offering full refunds. After launch, the company’s stock immediately dropped around 30%. The best way to avoid such problems is to never set unrealistic schedules in the first place. Alternatively, if you have absolutely no choice and the survival of your company depends on it, you can try to enforce strong project management practices. And pray, if you’re the religious type.
- 4. Badly engineered software. This problem can be simply described as “bad” code. Datamation summarizes that two-thirds or more of most software development activity involves changing or enhancing existing code. Poorly written code quickly becomes a liability; modifying it (and all code needs to be modified at some point) leads to numerous mistakes and unanticipated negative side effects, causing expensive reworks and delayed releases. As they say, prevention is better than a cure – if you want to avoid this issue, work only with skilled professionals. But if it already happened, the best way to mitigate this cause is to refactor critical portions of the code guided by information from architectural and static code analyses.
- 5. Poor acquisition practices. Although outsourcing is a very convenient way to get custom software – especially through Managed Delivery – using extended teams (also called remote teams or distributed teams) requires good management practices and choosing the right partners. If you work with inexperienced freelancers or start-up software houses, you need a strong quality assurance gate for the delivered software. Ideally, work only with well-established tech partners.
So, overcoming all the above challenges and problems should, in theory, end with well-written, decently working software. But how does one achieve that?
That’s exactly where the concept of Software Craftsmanship comes in.
What is Software Craftsmanship?
Software Craftsmanship can be understood in a number of different ways, but it has one underlying goal – quality.
In 2009, aspiring Software Craftsmen published a manifesto to raise the bar of software development. The main ideas were:
- Not only working software, but also well-crafted software.
- Not only responding to change but also steadily adding value.
- Not only individuals and interactions but also a community of professionals.
- Not only customer collaboration, but also productive partnerships.
From my perspective, this list is just a foothold. You can also define Software Craftsmanship as developing unique, one–of–a–kind software solutions that are perfectly tailored to specific business needs. Or, for example, an attention to detail empowered by high professional skills.
But I’m Not an Airport or Cryptocurrency Exchange! Surely, High-Quality isn’t That Important to My Business!
I remember using a local taxi company’s mobile app in the past. It was the most user–unfriendly and ugliest digital solution I have ever seen, yet, I relied on it repeatedly. I just needed a quick cab; I didn’t really care about its flaws, as long as it could get the job done. The app didn’t have any of my personal or financial data, it was just booking a ride.
But now imagine that Uber would rely on such a solution. Do you think they would ever succeed?
The above story is just an exception. For most of the businesses, developing cheap digital solutions won’t end well – especially if these solutions are the fundament of the business model.
This is especially true for certain industries like retail (eCommerce in particular) – a crash stops revenue, bad UX scares customers away – mHealth – if patients won’t trust the solution, they will never submit their personal data – or finance – a low-quality solution is vulnerable to cyberattacks.
Another very interesting case is the previously mentioned gaming sector. New games and features are often developed in a rush. Failure seems to be written into the f2p business model. Just take a look at a random mobile game’s social media wall – probably a few percent of the content (or even more!) will be related to game issues. Having worked at some major mobile game developers in the past, I’ve witnessed countless flagship crashes. They often resulted in serious revenue losses. Sometimes in the size of… hundreds of thousands of dollars! Yet, many game developers are often hesitant to work with super-senior employees and external partners, trying to keep all of their development and maintenance in-house.
In my eyes, sacrificing quality for some temporary savings is just not a smart idea.
Invest in Your Success
And that’s the story! Yes, it’s true that quality doesn’t come for free. For some companies, going overbudget may be tricky. But remember: for businesses that rely heavily (or solely) on digital solutions, software is the fundament.
And fundaments need to be strong, otherwise everything standing on them will come crashing down.