Saturday 27 September 2014

Debts are not bad every time!

Hi Friends, technical debt during sprints is a less discussed but very important topic. Let us discuss this today.


What is a technical debt?

Technical debt refers to the incomplete work in the software systems. It also refers to the shortcuts we knowingly take.

Ward Cunningham (Cunningham 1992) was the first to explain about the concept of technical debt).

Generally there are three types of debts- naive debt, unavoidable debt, and deliberate debt.

Example of Naive debt:
  • Incompetent design: This refers to a design that no longer makes sense due to various changes in business.
  • Known defects: The known problems in the software that we haven’t yet removed considering these will not impact in immediate future.
  • Insufficient testing: This refers to the known areas where more testing could have been done.

Example of Unavoidable debt:
  • A third-party component we used in our product and the interfaces to that component evolved over time. 
Example of Deliberate debt:
  • Such type of debt is taken to achieve an important short-term goal for example launching a time-sensitive product into the market. 
I remember a few months back my team took a deliberate technical debt by launching a product with USD as the only currency supported. This was because of the business decision of launching the product ahead of the competitors and we were aware that the focus market was of USA. Later we repaid it by providing the multi currency support. 

Today’s technical debt becomes a future work hence it requires a balanced technical and business discussion. Technical debt should be kept low enough to avoid future problems in product development. Also technical debt must be paid off time to time.
A good strategy is to utilize the time we get during sprints when there is some time left in which no next story can be fitted.

When it is not necessary to repay the technical debt?

To repay the technical is not necessay every time. Here are a few situations when technical debt not needs to be repaid.

When the product is nearing to end of life and to repay the debt is not a wise decision.
A product developed for a short life span.

How to repay technical debt?
  • During the development activity, whenever a development team member finds a technical debt in the form of any problem, the team member should clean up the problem. 
  • Technical debts which are more important should be repaid first. 
  • Technical debts should be repaid incrementally time to instead of large late payments.
Technical debt is very important to understand and needs attention & timely repayment. If it is not repaid in time then it may become burden later and impacts on team's velocity.
We will discuss more on technical debt in later posts.
Kenneth S. Rubin (Essential Scrum) has explained about technical debt in a fantastic way. For a detailed explanation readers should refer that topic.

See you soon with more posts…Have a great time ahead!

No comments:

Post a Comment