Git Analytics for Squads

Hero image for Git Analytics for Squads

This document provides information on how Team Leads and developers can leverage LinearB to support their activities in their assigned squad efficiently.

The document is organized around their responsibilities to make it a practical guide, i.e., each section is one of the areas for which they are responsible.

Team Leads

The primary responsibility for Team Leads is to lead the efficient development and timely delivery of the sprints. Git analytics can play a significant role in ensuring the efficiency of the backlog, the development of stories, and code reviews.

Issues are not only detected earlier but also more efficiently. Indeed, using a tool also enables monitoring to be asynchronous and continuous. Instead of disruptive check-ins in person or via chat (e.g., “How are you doing on your tasks today?”), Team Leads can first check on LinearB to assess if actions are needed and raise informed concerns to the developers.

Backlog Efficiency

Team Leads must ensure the backlog assignment is strategic and efficient throughout the sprint. Any issues in the assignment of some stories can negatively impact the delivery of the overall sprint. By using Git analytics, Team Leads can proactively detect issues more efficiently and earlier.

On the LinearB Dashboard for the project, the team table provides a high-level view of the team’s throughput and work-in-progress.

Table listing the work-in-progress for the sprint

Team Leads can ensure that developers:

  • Have an active branch.

    Developers who do not have an active branch might not have picked up a new story or might be stuck.

  • Do NOT have too many active branches.

    Many active branches can signify that developers are over-tasked or multitasking, thus juggling too much work-in-progress. Such cases can negatively impact the sprint’s delivery, and completing work-in-progress must be favored over picking up new tasks. Fixing a pull request will get the squad closer to completing the sprint goals since it will increase the completed work and reduce the work-in-progress.

Upon investigating directly with the concerned developers, Team Leads can adjust the backlog assignment to ensure the workload is spread evenly and efficiently across all team members.

Team Lead should also ensure that the developers do not risk burning out while on the job. Sane and efficient workload also comes down to not working outside of office hours, and such activity can be monitored via the metric Active Days. The fire icon 🔥 is displayed for the developers who are active on non-working days.

On the Activity page, Team Leads can also ensure that developers work on the stories in the prioritized order:

List of branches on the Activity page

Even if developers have yet to update the story status on the project management platform (e.g., Shortcut or JIRA), work on branches for those stories can be monitored, thus giving another perspective to their actual current work.

Activity details at the branch level

It can also happen that the prioritization of some stories changes mid-sprint. Thus knowing how much efforts developers have already allocated to a story can support the decision of Team Leads on the change of task assignment. Indeed, suppose the Product Manager de-prioritizes a task, but the developer has already spent a significant amount of time on it. In that case, Team Leads can use this information to recommend keeping this task in the sprint or adjusting the sprint velocity since that work will not be part of the product increment even though time has already been spent on it.

Development of Stories

Since squads work in one-week or two-week sprints, progress in completing the backlog must be regularly assessed and monitored. Any issues in the completion of some stories can negatively impact the delivery of the overall sprint.

On the LinearB Dashboard for the project, the Cycle Time for the current sprint is calculated in “real-time”.

Cycle Time diagram

An efficient Cycle Time has the following characteristics:

  • Consistently between 2-3 days on average for each sprint.
  • Each metric composing Cycle Time is in the efficient range, thus colored in light or dark green.

When a metric composing Cycle Time is not within the optimal range, the corresponding part in the Cycle Time is colored in either orange or red.

Diagram of a deficient cycle time

Team Leads can use the overall Cycle Time to gauge the bottlenecks in developing stories faced by the squads.

To investigate further, Team Leads can use the detailed insights on the current progress on assigned tasks via the Activity page. Their attention must be, for this purpose, on keeping track of the Cycle Time and, more specifically, Coding Time at the branch and individual level.

Cycle time diagram the branch level

Inefficiencies in Coding Time can originate from development and product management issues. For the former, developers might be slower due to personal technical and collaboration aptitude or skills. As for product-management-related issues, there might be deficiencies in the backlog items for the sprint, e.g., lack of documentation on the product features, unclear acceptance criteria, etc. Therefore, Team Leads must act and collaborate with the concerned developer and Product Manager to resolve the situation at the earliest.

Team Leads must also ensure that progress is continuously made without significant gaps. The Pulse page provides a high-level view of commits and merges at the branch level. A gap of several days between commits can signify a developer is stuck, thus requires assistance.

Table on the Pulse page

The above table provides insights into the regularity of commits on each branch.

Code Reviews Management

Like for Development of Stories, the overall Cycle Time on the Dashboard is the primary tool to monitor code reviews efforts. However, their focus must be on the metrics Pickup Time and Review Time for code reviews management.

PR Pickup and Code Review in Cycle Time

An efficient code reviews management has the following characteristics:

  • Pickup Time is less than one day on average.
  • Review Time is between one to two days on average.

Team Leads must continuously ensure that the developers in the squad dedicate enough time for code reviews in each sprint.

In case of deficiencies and to investigate further, like for Development of Stories, Team Leads can also use the detailed insights at the branch and individual level via the Activity page.

PR Pickup and Code Review at the branch level

Team Lead can use this information to rally the efforts of the squads on the branches that have the longest Pickup Time and Review Time, thus unblocking these “stuck” pull requests.

Team Leads can use the Time Distribution page to assess how the squad performs on code reviews over several sprints.

Time distribution by sprint

While the data provided is identical to Cycle Time, the bar chart makes it easier to compare each sprint and identify trends since the Dashboard only shows data for one sprint at a time.

In addition to the time-related metrics, Team Leads must also ensure quality in the code reviews in each sprint. They must monitor the Review Depth graph at the squad and sprint level on the Quality metrics page.

Diagram of Review Depth

An efficient Review Depth reviews management has the following characteristics:

  • Above four comments per review on average.
  • Constant throughout the sprint.

    Significant punctual bursts can negatively impact the overall Review Time and signify that code reviews are also performed punctually instead of daily.

Team Leads focus solely on Review Depth at the squad level. In case of deficiencies at the individual level, Team Leads can report issues to the Engineering Leads overseeing the concerned developer(s) and must delegate actions to the respective Engineering Leads since it is outside the scope of their responsibilities.

Developers

Code Review Assistance

To fulfill their code review efforts, developers must use the Slack bot provided by LinearB called WorkerB. Once connected, developers can:

  • Get personal alerts when a pull request is assigned to them, a change on a pull request is needed, and a pull request is approved.

    The notifications are personalized, thus sent directly to each developer, i.e., the notifications are not sent into the activity channel for the project.

  • List all the pull requests they need to review.
  • Get an estimated Code Review time for a pull request.

The bot serves as a personal assistant to ensure each developer can manage their code review workload more efficiently.

The connection to WorkerB is compulsory for all developers on client projects. Therefore, developers must ensure they familiarize themselves with the tool and adjust the settings to their personal preferences via the Slack command /lb pref.

Individual Growth

While Engineering Leads and Team Leads are the primary and direct users of Git analytics, developers can benefit from the insights. Through One-on-Ones and Peers Feedback, Engineering Leads can share and use Git analytics with their reports to fulfill their responsibility of nurturing and assessing developers. Such data sharing can also be done at the inquest of developers. Whether to assess their impact as code reviewers or interest in their Cycle Time over time, developers can request access to their personal data in their current project for individual growth.

Only Engineering Leads and Team Leads have access to the LinearB platform not to incentivize developers to compare each other. In addition to not being a healthy practice for mental health, just like any quantitative-data-driven-only approach, the sole focus on improving metrics can yield adverse effects and poor results. Git analytics can only be reliable and actionable if participants are not trying to “game” the system on purpose. The moment developers have incentives to increase unnaturally in a specific area; all data become untrustworthy.