Most probable you've encountered the dilemma which is "do it proper way" or "do it quick and dirty way". If you decide latter you have debt. You borrow quality in order to buy time. If you choose former you don't have debt but need more time to implement in future. This causes delay to roll out your project. It's double-edged sword.
Having debt doesn't mean pernicious. In business, if you need to grow, you should take on loan with acceptable interest . It's the same in software development. Some people called Technical Mortgage in order to explain Technical Debt easily. If you want to have house, you accept mortgage which is really wise idea to buy your house if interest is reasonable. Otherwise you have to wait until you save enough money to have a new house. But it could take years. So, Technical Debt can be used for leverage.
The problem here, you should know how to deal with your debt and its interest which is the sort of extra effort you have to do more in future development. If you cannot manage your debt, your loan with interest will be more and more. It means, you have to work for maintenance to make your product stable. Soon or later, you will be bankrupt.
You need to know take this control and prevent from being out of control. If you can deal with the consequences you can choose to have Technical Debt.
From the point of other view, Technical Debt term helps us conceptualize the common software development concept. The term is perfect explanation for not only technical staffs but also non-technical stakeholders. For instance, when you don't have enough time to finalize your project, you need to inform your client that the project will be delayed. So you can give two options to your client, "proper way" or "quick and dirty way". Of course, you client always tend to say "quick and proper way". At this point, you can describe the situation by telling Technical Debt. It's meaningful for people in business. They can comprehend the situation better.
In order to solve Technical Debt situation, you can classify your Technical Debt. Martin Fowler describes Technical Debt as a quadrant.
For more information about the quadrant above you can read TechnicalDebtQuadrant article written by Martin Fowler.
On the other hand, according to Steve McConnell, here is the summary of kinds of the Technical Debt :
Non Debt
Feature backlog, deferred features, cut features, etc. Not all incomplete work is debt. These aren't debt, because they don't require interest payments.
Debt
I. Debt incurred unintentionally due to low quality work
II. Debt incurred intentionally
II.A. Short-term debt, usually incurred reactively, for tactical reasons
II.A.1. Individually identifiable shortcuts (like a car loan)
II.A.2. Numerous tiny shortcuts (like credit card debt)
II.B. Long-term debt, usually incurred proactively, for strategic reasons
For more information you can read the whole article about Technical Debt written by Steve McConnell.
In order to cope with Technical Debt, you should take into account following advices :
- When you have Technical Debt, you should schedule discharge time.
- Avoid unnecessary and excessive Technical Debt.
- Do not try to pay back by having new Technical Debt
- Technical Debt is not the problem with not also developer but also people in business. Every staff assigned to the project should be responsible for paying back Technical Debt.
- Classify your Technical Debts by using methods mentioned above.
- Fix the issues (pay off your Technical Debt) which are scheduled to be solved before starting a new iteration





0 comments:
Post a Comment