Speed vs Quality: Which Is Preferred in Software Development?
Topic: Best Practices
November 10, 2023
In September of this year, I was fortunate enough to visit the Seamless Saudi Arabia exhibition. After speaking with some attendees and exhibitors, I was able to identify several trends of the IT market in Saudi Arabia. One of them is that due to fierce competition, developers often exaggerate their capabilities or tell the customer what they want to hear. Sometimes, they promise that the project will be ready on time, even though they know that this is unlikely. Why do they do that? Because if they don't exaggerate their capabilities, another company will take the project for themselves. Many companies accept these rules of the game and play by them.
Local or World-Wide Trend?
After the exhibition, I started wondering whether this trend is unique to Saudi Arabia or the global IT market as a whole. Let me share with you the conclusions I have come to.
In my opinion, this trend is characteristic not only of the IT market and programmers, but also of any other field. But if we consider the IT market specifically, exaggeration or embellishment of developers' capabilities is a common thing when a company is trying to find a new project.
There are situations when a company, for example, has two developers who are not engaged in a project. However, a potential customer needs only one developer. Then the company resorts to a certain trick. It deliberately overestimates the technical capabilities of its specialist in order to convince the customer to hire them. In this case, the company's management hopes that since they have not one but two developers, they will be able to divide the duties between them without informing the customer.
Such companies mistakenly think that due to the number of developers, they will be able to close those tasks that require expert knowledge. But miracles do not happen. There is a good expression that accurately describes this situation: "9 women cannot deliver a baby in 1 month".
I firmly believe that expertise is developed over years and requires a lot of effort. It is experience that distinguishes a specialist from a novice developer. There are very talented people who find everything easy, but they simply lack experience. It is not for nothing that there is a belief that you can become an expert by spending 10,000 hours in an area. If you have enough persistence to do something for 10,000 hours, you can become an expert in it.
When developers exaggerate their capabilities or tell customers what they want to hear, a lot of negative consequences can arise. Let’s talk about some of them.
Missed Deadlines and Project Delays
Those developers who over-commit and promise unrealistic timelines are more likely to encounter delays and miss deadlines. How does it happen?
In the first stages, the delay with respect to the schedule is somewhere controlled, somewhere within acceptable limits, somewhere not so noticeable. Therefore, this problem is not acute in the beginning. But this problem has an accumulative character. And at some point there comes a climax where the problem with deadlines becomes very acute and obvious. There is a feeling that the developer is very far behind the deadlines and that it is impossible to catch up.
This can disrupt project schedules, affect other stakeholders' plans, and potentially result in financial losses for the customer. Missed deadlines erode trust and damage the developer's reputation.
Poor Quality Deliverables
The first problem immediately leads to the second one, related to the quality of the product. When developers fall behind schedule and start missing deadlines, the efficiency of their work decreases, as they have less time to complete each task.
In this case developers do not have time to independently review their work and consider situations and options that do not follow the classical/direct development path. They cannot think through and anticipate all possible variants. Accordingly, developers cannot transfer these variants into the code. And the code turns out to be incomplete.
Take, for example, an ordinary vending machine that sells Coca-Cola in a shopping mall in the USA. A certain specialist has contributed to its development. So the vending machine has software and a kind of backend. Let us assume that this developer also worked under time pressure. He or she has developed this vending machine, which at first glance works well in the USA. The customer inserts dollars into the machine, which accepts them and dispenses Coca-Cola. Everything works without any problems.
But one day, a foreigner wants to buy a Coca-Cola. Unfortunately, this man doesn't have dollars, but euros. He inserts his note into the machine, which actively accepts it. But the machine gives neither the drink nor the change. And at the same time, it does not inform the foreigner that something has gone wrong.
What happened? Most likely, the developer's limited time frame did not allow them to consider all possible scenarios and problems. The case with a foreigner is exactly the situation that the developer did not foresee and did not put into this device. Ideally, the vending machine should either not work with foreign banknotes and handle this error, or, on the contrary, fully work with them taking into account the current exchange rate.
Exaggerating capabilities or misrepresenting skills can also severely damage the developer's reputation. Word-of-mouth travels quickly within professional networks, and negative experiences can impact future opportunities for the developer. A tarnished reputation can limit career growth and make it challenging to secure new projects or employment.
What Is More Important: Deadlines or Quality?
I think each project manager answers this question in his or her own way. For some, speed is the priority, for others, product quality. Sometimes certain circumstances cause the customer to change their mind in the opposite direction.
In the project I am currently working on, there was such a turning point. When my colleagues and I had just started developing a social media monitoring system, the customer was concerned about deadlines more. He wanted to see and understand how the platform would look and work as soon as possible. But when the demo version had already passed and live clients and site visitors started arriving, the situation changed 180 degrees.
Now quality is more important to the customer. He wants the platform to work the way it is supposed to work, which is high quality and fast. Since live requests are coming in from real people, developers need to be able to process this huge stream of data in a high-quality way and generate statistics on it quickly and correctly.
In my opinion, sooner or later, any customer comes to the realization that quality is more important than deadlines. Quality leads the customer to success, and it keeps the business going. However, in this era of information technology, startups and artificial intelligence, this is a complex parameter. What if your competitors overtake you and realize a similar idea faster?
Recommendations for Entrepreneurs
I would advise entrepreneurs not to go to any extreme (quality or speed), they should always look for a compromise. If it's a startup and race is very important here, entrepreneurs can make a slight bias towards speed, but they shouldn’t forget about quality. And if it's not a startup, they can lean more towards quality. But ideally, they should always try to find the golden mean.
Let me give you a simple example from everyday life. Imagine that we want to watch our favorite TV series on some platform. When it loads instantly, we don't get nervous and immediately enjoy watching the video. But when we are looking at some spinning circle (spinner), we are completely unaware of what is happening or not happening. Why isn't the video opening? Why is it loading so slowly? The answer options could be endless.
Perhaps the developer made a mistake in the code or in delivering that code to the server. Perhaps it is not properly configured and optimized. Or there is some other mismatch between the processing power and the code, resulting in the site not performing as well as it could. Most likely, developers who worked on this site lacked the competence and qualifications to cope with the tasks at hand. Perhaps, they didn’t meet deadlines, and as a result, the quality suffered. Anyway, these are details, what matters is the fact that we and other users are unlikely to choose this platform to watch the series next time.
In the practice of the company I work for, we have met customers who suffered from overpromises of previous developers and needed our urgent help. When such customers come to us, we work with them in the following way:
We need a certain amount of time to assess the project, its complexity and weaknesses.
After this assessment, we can already explain to the customer what needs to be done.
Then the customer gives us access to their project.
We see if there is such a thing as tests in this project.
- If there are no tests, the quality of the project is bad. This indicates low skills of the previous developers.
- If there are tests, we look at their quality and at the code coverage by these tests. Each piece of code that is sent to production needs to be thoroughly tested in terms of quality and effectiveness.
- Afterward, we inform the customer about the status of their project, as they often lack knowledge about the quality of code being used.
We honestly describe to them what places are weak, what needs to be improved and how to do it. If there are no tests, we tell them straight away that we are working through tests only. Therefore, to start working on their project, we need to write tests and it will take some time. Working through tests is not visible to the customer, and they may have doubts why we are doing these tests and not working on their product. But at a great distance, it becomes clear that tests, on the contrary, speed up the development process and improve its quality.
I would like to emphasize that the main value of our company is the customer. Together with a customer, we want their project to be successful and in demand. To make it happen, we tell them what they need to do. Our company employs highly skilled developers with more than 10 years of experience who never leave customers alone with their business problems.
One of our long-term customers is the owner of a sports app that allows people to book a pitch and play football at any time. At first, he didn't think about the importance of quality and was focused on speed, as he wanted to implement his idea as soon as possible. When he came to us for help, we audited the code, which turned out to be of very low quality, and developed an action plan to revitalize his project and make it work.
Why did he choose our company? Because, unlike the previous development team, we are committed to exceptional quality and transparent relationships with our customers. We do not tell them what they want to hear, we tell them what is real.
Our team of developers has done everything possible to improve the quality of the app and optimize its performance so that it's used by real people. Now the app is at a very good level. What is the reason for this? Its quality! I'm sure the project owner has changed his mind about speed in favor of quality. Because when the quality development started, his company went uphill.
- In a highly competitive IT market, developers may feel the need to exaggerate their skills to stand out from other candidates. By presenting themselves as more proficient than they actually are, they hope to increase their chances of securing a project.
- When developers overestimate their capabilities, they may be assigned tasks or projects that do not match their actual skill level. This can lead to delays, substandard work, or even project failure. Customers or employers may have unrealistic expectations based on inflated requirements, leading to disappointment and loss of trust.
- There is no need to chase cheaper developers and shorter deadlines, sacrificing the quality of the product. Entrepreneurs should always remember that quality is what leads the customer to success and keeps the business going.