One effective way to improve code and lighten the workload of developers is to address tech debt. While there many ways to define tech debt (and we're working to solve them all!) we find a few fundamental metrics can have great benefits without significant refactoring effort.


Set up the repository

  1. Complexity
    1. Click to expand the Complexity panel
    2. Define the current repositories threshold for Excessive Complexity
    3. Set a Target to address - what percentage of the files over the above threshold are you targeting to reduce complexity on?
    4. Set an estimated time to address - how long would you expect a developer to spend simplifying or breaking down an overly complex file?
  2. Duplicate Blocksare blocks of code that appear more than once.
    1. Set a target for what percentage of duplicate blocks you would like to de-duplicate.
    2. Set an estimated time to address - how long would you expect a developer to find the duplicates and consolidate to a single block of code.
  3. Test Coverage
    1. Set a goal for Unit Test lines per Line of Code
      1. Very good coverage is 1:1
      2. A new repository with little testing may have next to nothing for test lines.
    2. Set an estimated  Time to create unit test.
  4. Line Level warnings
    1. Set an approximate time fix a line level warning
    2. Select the percentage of warnings you aim to fix in each category
  5. Developer wages
    1. Set an average loaded cost per developer per day. This is used to calculate the cost of work to address the target tech debt.
  6. Languages
    1. Toggle the languages you would like to to include/address in the tech debt total.

Reading the results

  1. Days to fix
    1. Check the 'Days to fix' section to see an estimate of how long addressing each of the Tech Debt Indicator categories requires.
  2. Cost to address
    1. Technical Debt Total is a dollar value based on Days to fix and Developer wages
    2. Cost per Line of Code is the total divided by Lines of Code. Under $3.00/LoC is a good target.