Technical debt, how in the end should also?

Almost all of the technical team, will experience more or less technical debt. While technology is a shortcut to achieve rapid gains in debt, but in order to fix technical problems in order to quickly return to those forced to whom, companies often need to spend a lot of money and manpower. So how to effectively avoid technical debt, allowing developers to devote more energy into work efficiently, thereby generating additional value, improve product competitiveness of it?

Technical debt has generated a lot of reasons, but more due to a rush to complete the original time-consuming work in a short time, causing part of the business logic is not a complete design, making the product effective in a short time, but long-term point of view, it is an unstable bomb, once triggered, the product, the enterprise may have resulted in irreparable loss. All in all, technical debt will bring a lot of trouble, and some are even "fatal" in.


What is technical debt?

Technical debt (English: Technical debt), also translated technical debt, also known as debt design (design debt), Code debt (code debt), is a metaphor programming and software engineering. Refers to developers to accelerate software development, it should be adopted at the best compromise in favor of a program to accelerate software development in the short term, in order to develop additional burden in the future to bring their own. This technical choice, as a debt, even though looks can get immediate benefits, but must be repaid in the future. Software engineers must pay for the extra time and effort to fix the problem due to the continued before the compromise and side effects caused by, or reconstruct, improve the architecture for the best implementation. - Excerpt from Wikipedia

A lot of people will be analogous to the technical debt financial debt, but debt and financial difference is that technical debt may not bear interest. For example when you need to quickly validate a product's features, products with certain technical debt may be a good choice; After verification without the characteristics of the time, which can be removed directly, etc., at this time may not be the assumption of debt interest. But most of the time, few such cases, even if only to verify that the product, not the recommended way to use technology to implement debt. Like this technical debt can be called deliberate technical debt, another more dangerous technique called debt inadvertent technical debt, inadvertent technical debt as though the text says the bomb hidden in the code.

Whether it is the kind of technical debt, in future iterations of the product, developers need to define the boundaries of debt, the debt can not allow technology to breed, or in an iterative process, the difficulties faced by more and more, and even forced to required to take on more technical debt. Basically, the more you assume the debt, the slower progress of the project, the follow-up phase of the project will be more difficult.

But the need is clear that technical debt can not be eliminated, you must be prepared to assume the technical debt at any time. Because some items in the scene, some solutions can be targeted to address specific issues, but the program may not be globally valid or optimal, so in other aspects of the system on the formation of a technical debt is inevitable and must bear problem. A good team of engineers should be able to minimize the impact of technical debt, debt and technology sound management team.

Mentioned above, the technical debt into technical debt intentional and unintentional technical debt, because the two forms of technical debt formation and bring the results are different. In some cases, deliberate compared to unintentional technical debt debt better technology, intends to make the team aware of the technical debt problem, which intends to carry out the optimization and improvement; and inadvertent technical debt may be lurking in the project very for a long time, it could cause serious problems, however, inadvertent technical debt in the project can not be avoided, only to manage the debt by strengthening the technical coding standards, such as in a team of engineers to understand the business in which it appears may weaken or .

In addition to technical debt can also be classified as reckless technologies debt and prudent debt technologies. Some cautious type of technical debt in the course of the project is desirable, but no matter what kind of technical debt, we need the courage to take everyone. Ideally, those who bear the debt should be cautious and deliberate technical debt, and those unintentional and reckless technical debt should be avoided at all costs.


Why should we care about technical debt?

How to influence the development of technical debt

During the development phase, developers will inevitably encounter technical debt, should face technical debt, and actively deal with the debt problems of technology. While processing technology development cycle of debt may make it longer, but in the long run, developers timely processing of technical debt is useful, on the one hand deal with technical debt is a process of accumulation of technical experience, on the other hand, after timely treatment can iterations may reduce technical debt generated so on. Every developer should try to avoid intentional or unintentional and those reckless technical debt.

How technology can affect customer debt

Although at first glance, there is no technical debt and customer contact, customers do not care about code quality products and so on, just in case the customer does not increase the cost of the product can be delivered on time. However, a bear unintentionally or reckless debt products in the technology development process, often need to spend more time, energy and resources, resulting in increased costs and benefits are reduced and so on.



How technical debt affect users

Even indirect, users will be affected by technical debt. They may not care about money or effort needed for software development, but they do care about it and reliable operation, and quickly add new features, both of which are likely to be affected by a large number of technical debt. The more users happy, happier customers, happier developers.


Best Practices technical debt


The biggest problem solving technical debt is that it can not really be quantified. This makes it difficult to track technology development team for the management of debt and to show customers why should devote more resources and time.

But here are some things you can do:

To date

It goes without saying, tools, frameworks and libraries should always up to date. Not everyone is aware of this, so here re-emphasize it anyway.

File

All content records need to be repaired or updated, this is the most important step to ensure that the actual repair and renewal.

If the technical debt exists, it is best to understand it and make sure the team or the future developer also understand. Documents reduces the effort required to locate and fix the problem, if the debt record is good, even visible, will help to get customers to recognize and provide additional resources at the operational level.

Code review

Another powerful tool is the periodic review of the code during the sprint. Code reviews can capture the risks that can cause problems, and find solutions. Code review does take some time, but in the context of the entire project is definitely worth it.

However, the code review has its drawbacks. Developers often too busy to dig other people's code, so they will only find obvious errors, fault-finding team could lead to internal tensions. Therefore, it can be a powerful tool to reduce technical debt, but caution should be applied.

automated test

Automated testing is a very powerful tool, but often overlooked. After the automated testing is ignored, may not detect hidden problems in the code, often resulting in release of the product need to invest time and manpower disproportionate to deal with, so that cost increases are not even controllable. During the development phase, it is necessary to implement test-driven development, well-written test cases, to clear many of the problems difficult to detect in the code and so on.

Agile Architecture

Agile architecture has many advantages, more open to change in the process of building software, it is basically occur on any project. However, it does require flexibility and maintainability of code, so developers will naturally agile methods to maintain good code, which helps prevent the accumulation of a large number of technical debt.

Effectively Replay

If a problem occurs, it should be the courage to face, when the problem is resolved, the need for effective recovery disk. But note that the recovery disk in order to improve efficiency, rather than to find someone to back pan. Replay of the reason for the focus should be placed to understand the problem and cause problems, so the team can take the necessary measures to prevent the same problem from happening again.


Best practices for managing technical debt

Even if you do all of these things, and try to avoid the accumulation of technical debt, the debt will still be some need to deal with. This is inevitable, and therefore should be performed best practices and processes to prevent technical debt out of control.

High interest rates (costly) technical debt priority

Not all technical debt are equal and should therefore be a priority issue within a specific time to solve the problem and to not solve. Present in the part of the code frequently used and changed in the "junk", it is much more serious than in the parts of the code is almost not used or changed in the "junk."

High interest debt tend to be those core part plays an important role in the project, usually around it for a lot of work and on this basis. If the technical portion of this debt is not resolved, it will hinder all the work, and may force the rest of the code back more technical debt. Therefore, if possible, should first give priority to these questions and follow-up makes everything much smoother.

Scouts rules

"To always keep the camp than when you found it cleaner" also applies to software development: "Code submitted by better than detection." Encourage team members to actively reduce technical debt; for example, when they found that in order to increase functionality or bug fixes code, motivate them to reconstruct this part of the code.

Of course, it is not without boundaries, or it may be time-consuming endless. But if you set aside a certain percentage of the time in each sprint, a dedicated technical debt to repair any developers found it possible to keep the product in a largely debt-free as possible.

Repayment of debt in the performance of valuable customers work

Fix technical debt is not a good idea throughout the sprint phase of the project. On the one hand, customers often do not like to postpone, for them, it looks like you seem to spend their time and money to fix your mistakes. On the other hand, it also shows that you have due to technical debt tired and a lot of work, so you may have to pay for the debt than necessary costs.

The best technical debt limit time spent in each sprint repaid in and use it to solve the problem of high priority or a sudden encounter. Customer satisfaction, technology and manageable debt levels.

ignore

It is also important to note that not all technical debt should be repaid. When the product of their useful life, if it is just a one-time or short-term use prototypes, technical debt is not the main problem. These instances are rare, but when they do you can save some time and effort.


in conclusion

Technical debt is accompanied by the emergence of the project and can not be avoided, but how to keep it under control, is the issue we should consider. Prevent and eliminate all need good developers technical debt, people are always in software development is the most important factor. As an ordinary farm yard, constantly upgrade themselves is necessary.


This article translated from:

  • TECHNICAL DEBT: EVERYTHING YOU NEED TO KNOW, AND HOW TO MANAGE IT (https://codingsans.com/blog/technical-debt)

作者: Gabor Green

Compile: TalkingData Robin

Other references:

  • Technical debt (https://zh.wikipedia.org/wiki/%E6%8A%80%E6%9C%AF%E8%B4%9F%E5%80%BA)
  • Four principles of governance of technical debt (https://insights.thoughtworks.cn/managing-technical-debt/)
  • Resolve technical debt (https://www.infoq.cn/article/2009/10/dissecting-technical-debt


Guess you like

Origin juejin.im/post/5d2ffa626fb9a07ef710aadf