Rework Normalized Churn for Developer Productivity Measurement

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing static analysis systems for software source code struggle to accurately compare developer productivity due to biases from rework tendencies and differences in commit frequencies, leading to inaccurate rankings.

Innovation Solution

The introduction of rework normalized churn, which adjusts churn metrics by segmenting revision graphs into commit chains and computing a rework factor to isolate productive contributions, providing a more accurate measure of developer productivity that is not influenced by rework or commit frequency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If raw churn metrics are used to measure developer productivity, then the measurement process is simple, but the accuracy of developer comparison is reduced due to biases from rework tendencies and commit frequency differences

Engineering Contradiction:
Improveaccuracy of developer productivity measurementVSAvoidcomplexity of churn calculation system
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent segments the revision graph into commit chains, which are sequences of commits by the same developer on the same file. This segmentation allows the system to identify and separate rework commits from productive commits within each chain, enabling more accurate productivity measurement by focusing on net contributions rather than total churn.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent extracts and removes rework commits from the churn calculation by identifying commits that modify code added in previous commits within the same commit chain. By taking out these rework contributions, the system calculates churn based only on productive commits, eliminating the bias that rework tendencies would otherwise introduce into productivity measurements.

Inventive Principle:
Principle #2Taking out (Extraction)

2Productivity

If churn is computed between adjacent snapshots committed by the same developer, then the calculation is straightforward, but the metric is biased toward developers who commit more frequently

Engineering Contradiction:
Improvedeveloper productivity measurementVSAvoidfairness of developer comparison
Core Design Contradiction:
ProductivityVSMeasurement precision

Solution Approach 1:

By segmenting the revision history into commit chains specific to each developer and file, the patent creates a normalized view of productivity that accounts for individual commit patterns. This segmentation allows fair comparison across developers with different commit frequencies, as each developer's productivity is measured relative to their own commit chains rather than against a uniform snapshot-based metric.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by computing churn metrics specifically within each commit chain context rather than globally across all snapshots. This localized approach tailors the productivity measurement to each developer's working patterns and file-specific contributions, ensuring that comparisons are made under equivalent conditions for each developer.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS9639352B1Computing rework churn for contributions to a code base
Publication Date: 2017.05.02 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9639352B1 patent drawing
  • US9639352B1 patent drawing
  • US9639352B1 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for generating widened types for computing measures of rework normalized churn. One of the methods includes determining a plurality of commit chains for a software developer. Respective measures of rework churn occurring in each commit chain are calculated. An overall rework factor is computed for the developer using the respective measures of rework churn for each commit chain in the plurality of commit chains for the developer. A measure of rework normalized churn is computed for the developer including adjusting the initial measure of churn by the overall rework factor. Productivity of the developer is quantified relative to one or more other developers using the measure of rework normalized churn for the developer.