Tech Debt: How to Balance Between the Velocity of Production and Code Quality?
Anna Khrupaby Anna Khrupa on 10/31/2019
Code quality and velocity of production are two crucial but sometimes conflicting factors for software development projects. It is not surprising that sooner or later each development team faces the issue “speed versus advancement”. No doubt that both code quality and delivery speed matter. Good code quality makes future development simpler, quicker, and more stable. At the same time, a high velocity of production makes the company more agile, and thus more interesting for the customers. But how can a software company find the right balance between short time-to-market and minimizing poor quality code?
What is Technical debt?
How can we define tech debt? Technical debt is the term used to describe code that was not written properly and can harm the ability to add new features in the future. We can think of tech debt as the work that should be done to improve the code in order to make it more efficient and clear. On the other hand, these improvements won’t necessarily bring additional value to the business.
Originally the term Technical debt was coined by an American programmer Ward Cunningham, the inventor of the first wiki. The idea was to think about tech debt as an analogy to financial debt. If there is a debt — there is an interest that should be paid. And in the case of tech debt, the interest is equal to the additional development work that it takes to add new features after sub-par code was used.
What can lead to technical debt? Tech debt may occur as a result of unreasonable requirements, misguided assumptions, poor communication, or unrealistic timelines. It is not uncommon that developers cut corners to meet the deadlines, but the question remains — should they always do that?
Speed vs Quality?
No one will argue that both code quality and velocity of production are important. For obvious reasons, different types of companies choose high-quality development at the expense of speed and vice versa. On one hand, we have a very natural desire of startups to move quickly, so they can release their product to the market as fast as possible. On the other hand, we have the logic of well-established companies whose profile is too high to produce low-quality products, so they usually lean towards the quality mode.
Moreover, the employees of the same company can have different and even opposite views on speed vs quality of development. Salespeople or product managers are usually considered to be advocates for speed as they see the success of the company in its ability to meet deadlines and generate income. So they usually don’t care about how to avoid technical debt. And for the developers, designers, and QA-engineers success means building a perfect product, so they would rather spend months on development and not think about velocity.
But is there a way to strike a balance between code quality and speed development? “Prioritization is the key. You can’t win everywhere. So, first of all, it’s important to find the most critical variable and concentrate on it. It depends on whether you plan to throw away your product after product/market fit is found and re-write it, or your strategy is to grow it gradually,“ says Alex Gostev, Project Portfolio Manager at QArea.
If the company doesn’t want to lose pace, the code quality should become its top priority from day one. “Code quality is multifaceted,” Gostev adds, “It starts with architecture. And with the right architecture, you’ll have significantly fewer issues in the future.“
It is also important to create a road map of tech debt projects and evaluate the risks so the company can plan accordingly. According to Dmitriy Barbashov, the Chief Technology Officer at QArea, a service-level agreement might help as well. “I would say that transparent SLA established and agreed with developers would be a good reference point for them,” he notes.
Test your code for technical debt and find ways to minimize risks!
What are you building? What kind of help can we provide? The more we know, the more accurate our estimate!
Thank you for getting in touch!
Thank you for taking the first step! We’ll get back to you within 2 business days!
It goes without saying that striving for perfection in development is not always the right choice. For example, if a startup is building its first prototype, quickly created MVP minimizes the risk of investing much effort into an idea that won’t work. But developers should be very careful when trying to deliver features rapidly or make some quick fixes. On one side, investing time in a solid foundation may help build new features in the future. On the other side, some hacky fixes or some cheapest and fastest solutions may accumulate and turn into too much technical debt.
Like in many aspects, smooth communication plays an important role in finding and proving the balance between code quality and speed. Open conversation between executives and developers is crucial. And if the company has found the right balance it is important that every employee understands it. Whenever the circumstances change or organization makes any moves towards speed or quality, everyone should stay on the same page.
Having one outside team deal with every aspect of quality assurance on your software project saves you time and money on creating an in-house QA department. We have dedicated testing engineers with years of experience, and here is what they can help you with.
Software is everywhere around us, and it’s essential for your testing team to be familiar with all the various types and platforms software can come with. In 21+ years, our QA team has tested every type of software there is, and here are some of their specialties.
There are dozens of different types of testing, but it takes a team of experts to know which ones are relevant to your software project and how to include them in the testing strategy the right way. These are just some of the testing types our QA engineers excel in.
The success of a software project depends, among other things, on whether it’s the right fit for the industry it’s in. And that is true not just for the development stage, but also for QA. Different industry have different software requirements, and our team knows all about them.
Our team is already hard at work trying to resolve this issue.
Please resubmit your information tomorrow.
We're terribly sorry.
Got it
Your information was successfully submitted
We are glad to have you with us! You’ll receive an email from us shortly. Meanwhile, you can check our super-informative blog to go through the latest updates in the world of software development.
Got it
Your information was successfully submitted
We are glad to have you with us! You’ll receive an email from us shortly. Meanwhile, you can check our super-informative blog to go through the latest updates in the world of software development.
Got it
We use cookies to ensure your best experience. By continuing to browse this site, you accept the use of cookies and "third-party" cookies. For more information or to refuse consent to some cookies, please see our Privacy Policy and Cookie Policy