One of the guiding principles of Scrum is to develop the
functionality of the highest priority to the customer first. Less
important features are developed in subsequent Sprints or can be left
out altogether according to the customer’s requirements. This approach
gives the Scrum Team the required time to focus on the quality of
essential functionality. A key benefit of quality planning is the
reduction of technical debt.
Technical debt—also referred to as design debt or code debt—refers to
the work that teams prioritize lower, omit, or do not complete as they
work toward creating the primary deliverables associated with the
project’s product. Technical debt accrues and must be paid in the
future. Quick-fix and building deliverables that do not comply with
standards for quality, security, long-term architecture goals, and so
forth.
Some of the reasons for technical debt could be:
- Lack of coordination among different team members, or different
Scrum Teams as teams start working in isolation with less focus on final
integration of components required to make a project or program
successful.
- Poor sharing of business knowledge and process knowledge among the stakeholders and project teams.
- Too much focus on short-term project goals instead of the long-term
objectives of the company. This oversight can result in poor-quality
Working Deliverables that incur significant maintenance and upgrade
costs.
In Scrum projects, any technical debt is not carried over beyond a
Sprint, because there should be clearly defined Acceptance and Done
Criteria. The functionality must satisfy these criteria to be considered
Done. As the Prioritized Product Backlog is groomed and User Stories
are prioritized, the team creates Working Deliverables regularly,
preventing the accumulation of significant technical debt. The Scrum
Guidance Body may also include documentation and definition of processes
which help in decreasing technical debt.
To maintain a minimal amount of technical debt, it is important to define:
- The product required from a Sprint and the project along with the Acceptance Criteria,
- Any development methods to be followed,
- And the key responsibilities of Scrum Team members in regards to quality.
- Defining Acceptance Criteria is an important part of quality
planning, and it allows for effective quality control to be carried out
during the project.
Technical debt may be a very big challenge with some traditional
project management techniques where development, testing, documentation,
etc. are done sequentially and often-times by different persons, with
no one person being responsible for any particular Working Deliverable.
As a result, technical debt accrues, leading to significantly higher
maintenance, integration, and product release costs in the final stages
of a project’s release.
The cost of changes is very high in such circumstances as problems
surface in later stages of the project. Scrum framework prevents the
issues related to technical debt by ensuring that Done deliverables with
Acceptance Criteria are defined as part of the Sprint Backlog and key
tasks including development, testing, and documentation are done as part
of the same Sprint and by the same Scrum Team.
For interesting articles about
Scrum and Agile, visit
http://www.scrumstudy.com/blog/managing-technical-debt-in-a-scrum-project/