Skip to content
This repository was archived by the owner on Sep 11, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 20 additions & 17 deletions handbook/engineering/roles.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# Roles on the Engineering team

This page lists the roles on the Engineering team and some of the responsibilities for each of the roles.
This page lists the roles on our engineering team.

## Software Engineer

Software Engineers are individual contributors who build software to satisfy the needs of the business.
Software engineers build our product and infrastructure.

### Responsibilities

- Collaborate with your direct manager to identify projects that align your skills and interests with the needs of the business.
- Write [RFCs](../communication/rfcs/index.md) to recommend solutions to product and engineering problems.
- Commit to a reasonable amount of work that you are going to get done for each [monthly release](releases/index.md), and then reliably get it done.
- Post weekly updates about your progress on the [monthly release tracking issue](tracking_issues.md) for your team.
- Ensure that your work is directly contributing to [our OKRs](../../company/okrs/index.md).
- Write [RFCs](../communication/rfcs/index.md) to recommend solutions to product and engineering problems.
- Create and maintain high quality code, tests, and documentation.
- Help your teammates by empathetically [reviewing code](code_reviews.md) and [RFCs](../communication/rfcs/index.md).
- Interview candidates and suggest improvements to our hiring process.
- Support your teammates by reviewing their [code](code_reviews.md) and [RFCs](../communication/rfcs/index.md).
- Help us build a great team by referring people who you would like to work with again, interviewing candidates, and suggesting improvements to our hiring process.

## Project Lead

Expand All @@ -26,30 +27,32 @@ Some teams with more experienced members may need less guidance in certain areas
### Responsibilities

- Directly contribute through code, RFCs or PR reviews for a minimum of roughly 50% of their time.
- Collaborate with [product](../product/index.md) to maintain a [prioritized roadmap](../../direction/index.md) for the work owned by their team as well as quarterly [OKRs](../../company/okrs/index.md)
- Plan and commit to a set of work that will be accomplished by the team for each [monthly release](releases/index.md) and capture those commitments in a [tracking issue](tracking_issues.md) on GitHub.
- Ensure that the team has a roadmap that documents how it is going to achieve its [OKRs](../../company/okrs/index.md).
- Ensure the the team's [tracking issue](tracking_issues.md) captures the work that each teammate has committed to for each [monthly release](releases/index.md) and post a [weekly progress update](tracking_issues.md#progress-updates).
- Help keep the team focused on their goals while keeping them aware of the higher level picture.
- Identify blockers or productivity issues and work with the team to address them.
- Run weekly team sync meetings.
- Communicate progress to stakeholders and other parts of the company (e.g. at company meeting).
- Conduct monthly [retrospectives](../../retrospectives/index.md) with their team.
- Scale themselves out by organizing and delegating work to other teammates.
- Mentor and coach other teammates with timely feedback as appropriate in order to uphold team values and help them grow.
- Collaborate with Engineering Managers to ensure team mates have everything they need to succeed and deliver on the goals of the team.
- Collaborate with engineering managers to ensure teammates have everything they need to succeed and deliver on the goals of the team.

## Engineering Manager

Engineering Managers are people managers who build teams of [Software Engineers](#software-engineer) to satisfy the needs of the business.
Engineering managers lead, grow, and develop teams of software engineers.

### Responsibilities

- Collaborate with [product](../product/index.md) to maintain a [prioritized roadmap](../../direction/index.md) for the work owned by your team.
- Commit to a set of work that will be accomplished by the team for each [monthly release](releases/index.md) and capture those commitments in a [tracking issue](tracking_issues.md) on GitHub.
- Conduct monthly [retrospectives](../../retrospectives/index.md) with your team.
- Mentor and coach engineers through regular [1-1s](../leadership/1-1.md) to grow their careers.
- [Review the performance](../people-ops/review-cycles.md) of your direct reports to determine compensation.
- Interview candidates and own making improvements to our hiring process.
- Review applications and make final hiring decisions for candidates interested in your team.
Build an exceptional team that achieves results.

- Ensure that the team has a roadmap that documents how it is going to achieve its [OKRs](../../company/okrs/index.md).
- Ensure the the team's [tracking issue](tracking_issues.md) captures the work that each teammate has committed to for each [monthly release](releases/index.md) and post a [weekly progress update](tracking_issues.md#progress-updates).
- Conduct monthly [retrospectives](../../retrospectives/index.md) with the team.
- Conduct regular [1-1s](../leadership/1-1.md).
- Own the end-to-end hiring process for the team and grow the team according to the hiring plan.
- Make [compensation](../people-ops/compensation.md) decisions for direct reports and candidate offers to ensure that everyone is appropriately compensated at all times.
- Hold teammates accountable for fulfilling their responsibilities.

## VP Engineering

Expand Down
20 changes: 14 additions & 6 deletions handbook/engineering/tracking_issues.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
1. [Creating a tracking issue](#creating-a-tracking-issue)
1. [Populating and maintaining a tracking issue](#populating-and-maintaining-a-tracking-issue)
1. [Planning a milestone with a tracking issue](#planning-a-milestone-with-a-tracking-issue)
1. [Using a tracking issue for progress check-ins](#using-a-tracking-issue-for-progress-check-ins)
1. [Progress updates](#progress-updates)
1. [Contributing to the tracking issue tool](#contributing-to-the-tracking-issue-tool)

## What is a tracking issue?
Expand Down Expand Up @@ -61,11 +61,12 @@ Pull requests, if labeled and milestoned correctly, will show up in their author

Planning a team's milestone happens in the last week of the previous milestone.

1. [Open a new tracking issue](#creating-a-tracking-issue) with the appropriate `team/$TEAM` label and the right milestone.
1. [Open a new tracking issue](#creating-a-tracking-issue) with `WIP` in the title, add the appropriate `team/$TEAM` label, and add it to the right milestone.
1. Ask all members of the team through appropriate channels to create or assign issues to this milestone. When possible, issues should be estimated with the appropriate `estimate/$DAYS` label.
1. Once everyone's ready, have the tracking issue review by relevant parties (e.g. product team,).
1. Make adjustments to the planned work with the team based on the feedback from the review.
1. Add the `planned/$MILESTONE` label to all planned issues. This is used to track what work was originally planned, even if it gets deprioritized during the milestone.
1. Remove `WIP` from the title.

All planned work items are meant to be finished in the iteration. If this doesn't happen, it is either due to unknown unknowns or lack of estimating accuracy. While we cannot work on the former, we can on the latter — over time, we aim to estimate better.

Expand All @@ -79,13 +80,20 @@ Despite estimation having a bad reputation in some circles, we find it valuable

Roadmap items may take more than an iteration to implement. As such please link to an issue which is scoped to this iteration. If it isn't clear how to break down a larger item in a scope increment, a **spike** of one or two days could be appropriate to determine such scope and then create the resulting issues for the iteration — it's fine to update the tracking issue with the results of a spike during the iteration.

## Using a tracking issue for progress check-ins
## Progress updates

A tracking issue can be used as a central communication hub for the progress being done around whatever is being tracked.
Each engineer is responsible for posting a weekly update on Friday to tracking issues where they have assigned work (most engineers only have work on a single tracking issue associated with the team they are one). The update should communicate progress made, pain points, a forecast for the next week, and whether the remaining planned work is on track to be completed on time.

To that end, those working on a tracking issue write high level periodic summaries of their progress for interested parties and other stakeholders to follow along without being exposed to too much detail. These summaries are written as comments on the tracking issue.
- Good: "Last week I made progress on implementing RFC 123, but was blocked by X. X was due to Y. This week I'll continue to and hopefully implement RFC 123 completely, plan to be ready for review by Thurs. I am on track to finish my planned work this iteration."
- Not good: "PRs: #123, #456, #789"

You can see an example of such a summary [here](https://github.com/sourcegraph/sourcegraph/issues/9910#issuecomment-616405856).
Each engineering manager (or project lead for projects that don't have a dedicated manager) is responsible for posting a weekly update on Monday.

- Give an update on how the team is tracking toward their work plan and their OKRs.
- Highlight any important things that got done done (as in "shipped").
- Call out work that has been added or removed from the plan and explain why.
- Call out things that aren't on track and what is being done to get them on track.
- Call out things that are slowing the team down.

## Contributing to the tracking issue tool

Expand Down