Static Object

Better Code Review

Static Object is a code analysis tool for enterprise software teams. After designing the initial dashboard prototype, I worked with founder Bill Harding to explore ways to streamline and enhance the code review process. After an extensive testing period with our internal team, we launched Static Object late in 2017.

[Images of final product?]

 
 

Understanding the Problem

Reviewing code is time consuming and tedious for managers and developers. However, it's also necessary for maintaining quality and helping developers improve. Volume of commits and line-by-line changes make it hard to know where to focus review time. Lots of time spent looking for and reviewing code that didn't have a big impact

[Image]

 
 

Identifying User Outcomes

As a manager, I want to:

  • Understand how commits relate to bigger projects and initiatives

  • Spend less time reviewing code by focusing on the most important changes

As a developer, I want to:

  • Understand how my work is being evaluated

  • Ensure that scores are accurate and understandable

 
 

Designing Solutions

After we built the dashboards, our team used the tool internally for about a year. They offered feedback about challenges they were having related to code review.

Commit Groups

  • Too much noise in the commit feed

  • Developers have different habits and timing around commits

  • Bill came up with the idea and logic for Commit Groups

  • These collect related commits, combine LI score, and associate them with a task in Jira

  • Grouping them made it easier to see what happened over a recent timeframe vs. minute-by-minute updates

  • Helped organize commits and reduce the time needed to review by half

  • Reviewers could also view all changes in a single diff viewer screen, rather than having to open a dozen or more individual commits

Scoring Transparency

  • Devs (including those who worked on SO), struggled to understand why a commit received a certain score

  • We had built a basic diff viewer, and reframed it to focus on understanding scores

  • Expanding panel with total score, score for each line, explanation about why line was scored as it was

  • Managers could adjust scores and use advanced settings to make measurements more accurate for their team's work (e.g. ignore file type, set scores for each language)

Code Changes

  • More detail about changes to the code

  • As we adjusted the diff viewer for scoring, we also looked at ways to make review faster and easier

  • Most diff viewers show lines added and removed. This doesn't give much insight

  • Move, updated, find and replace, copy and paste, and more

  • Color and iconography, connection between moved lines

  • Offers a more complete picture of what happened, and allows reviewers to pinpoint the change they're looking for

Better annotation and collaboration

  • Comment on lines or on the whole commit

  • Considered a full-baked PR tool, but moved away from it

  • Too much overlap with GitHub, hard to identify exactly what problem we needed to solve

 
 

Measuring and Learning

Results

Reduced time for reviewing commits.

Better understanding of big picture – how commits related to projects, what the impact was

Full transparency about scoring

Insights

  • Many are skeptical of the accuracy and reliability of scores. Offering transparency and control seems to help address this.

  • Both managers and developers need to understand why commits are scored the way they are. And they need to be able to adjust or calibrate to align with how they measure their developers.

  • Users seem more comfortable if they think of us as a complement to GitHub rather than a replacement. If our tools can enhance existing workflows instead of introducing new ones, that seems to alleviate some concern about additional overhead.

  • Key workflows (e.g. reviewing Pull Requests) remain a challenge, but we're not sure if building a full PR replacement for GitHub is a good idea. Need to better understand the work flow among different teams before investing time there.

 
 
 

Static Object Team

Bill Harding: Founder, Lead Developer

James Spence: Design Director, Lead UX Designer

Liz Johnson: UX Designer

Matthew Kloster: Senior Developer

Eric Salczynski: Senior Developer

Amy Bell: Product Manager

Kevin Andrews: Project Manager