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!