Backend Handbook
Leapwise
  • 👋Introduction
  • Software Design Principles & Clean Code
    • Atomicity
    • Modularity
    • Hierarchy
    • Loose coupling
    • Asynchronous programming
  • Development Practices
    • JavaDocs
    • Technical Debt
    • Testing Guidelines
      • The Importance of Test Automation
      • The Testing Pyramid
        • Unit Tests
        • Integration Tests
        • End-to-End Tests
      • Mutation Testing
      • Contract Tests
        • REST Controller Contract testing
        • OpenAPI Contract testing
      • Testing Frameworks
        • JUnit 5
        • Testcontainers
        • Mockito
      • Writing Clean Tests - Best Practices
    • Common library
    • Generic CRUD
    • Update Facade
  • Development Tools & Environment
    • Monitoring
    • Performance tuning
    • Multi-tenancy & Configuration Management
    • Git practices
    • CI/CD
    • Maven
  • Project Management
    • Jira
    • Confluence documentation
    • SCRUM
    • Our ways of working
  • LIFE AT LEAPWISE
    • Introduction
    • Who are we?
    • What do we do?
    • Our values
    • Hiring process
      • Hiring: A Mid Frontend Developer's Point of View
    • Benefits we offer
    • Onboarding process
      • Onboarding: A Senior Digital Marketing Specialist's perspective
    • Mentorship program
    • Career development
      • Trainings & certificates we offer
      • Career development: A Senior Software Developer's Insight
    • Community building
    • Juniorship
    • First-hand info from our first team member
    • Join our team
Powered by GitBook
LogoLogo

Company

  • About
  • Culture
  • Services

Insights

  • Leapwise Newsletter
  • Blog

© Leapwise

On this page
  • What Is Technical Debt?
  • What Causes Technical Debt?
  • Managing and reducing Technical debt
  • Document Technical Debt
  • Write Clean Code
  • Automate Code Quality Checks
  • Refactor Continuously
  • Educate Team Members
  • Measure Progress

Was this helpful?

  1. Development Practices

Technical Debt

What Is Technical Debt?

Technical debt arises when development team opts for quick solutions over effective ones, leading to future issues that require more time and budget to resolve. Technical debt accumulates over time if not addressed promptly, impacting productivity and increasing the cost of maintenance. Examples include poor code quality, outdated libraries, and lack of documentation.

What Causes Technical Debt?

There are two kinds of technical debt: intentional and unintentional.

The first kind happens when developers deliberately postpone tasks to speed up the release. Unintentional technical debt arises over time as technology becomes outdated, or when development teams are unaware of delivering poor-quality code.

Managing and reducing Technical debt

Document Technical Debt

Technical debt needs to be tracked properly. Tools, such as Jira, can be used to help engineers effortlessly add context into the issues they generate. This helps ensure that Technical debt doesn't get forgotten or ignored over time.

Write Clean Code

Write clean, maintainable code. This includes following coding standards, writing self-documenting code, and avoiding shortcuts that lead to technical debt.

Automate Code Quality Checks

Integrate automated code analysis tools into the development process to catch technical debt early. Tools like static code analyzers can help identify potential issues before they become major problems.

Refactor Continuously

Allocate dedicated time in each development cycle for refactoring and addressing technical debt. Whenever developers work on a piece of code, encourage them to refactor it if they come across areas that contribute to technical debt. This could be as simple as renaming variables for clarity or as complex as restructuring entire modules. Refactoring is a daily activity.

Educate Team Members

Ensure that all team members understand the importance of managing technical debt and have the necessary skills to do so effectively. Provide training and resources as needed.

Measure Progress

Keep track of the technical debt over time and measure progress in paying it off. Here are some metrics to consider:

PreviousJavaDocsNextTesting Guidelines

Last updated 1 year ago

Was this helpful?

Code coverage

The code coverage metric assesses the proportion or percentage of code that is tested by automated tests. It indicates how much of your code is being tested by your test suite.

Defect ratio (New Bugs vs. Closed Bugs)

The Defect Ratio, also known as the Bug Ratio, is a metric used to measure the balance between the number of new bugs discovered and the number of bugs closed or resolved over a specific period. It provides insight into the efficiency of the development and bug fixing processes within a project or organization.

Code Churn

Code churn can be a measure of code stability as it refers to how often code changes over time. If the team needs to rewrite code often to accommodate a new feature, then the software system involves high maintenance and is thus high risk.

Code Quality

This is an aggregate of several metrics that quantify your code’s overall quality and complexity. These include cyclomatic complexity, class coupling, lines of code and depth of inheritance. Simpler code is easier to test and maintain.

Page cover image