From 5503518c683e6d19b89b6282bdf8311f99c7af55 Mon Sep 17 00:00:00 2001 From: Nick Snyder Date: Thu, 18 Jun 2020 16:07:25 -0700 Subject: [PATCH 1/5] Update eng manager responsibilities --- handbook/engineering/roles.md | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/handbook/engineering/roles.md b/handbook/engineering/roles.md index 5ab476311ba..179a2322d41 100644 --- a/handbook/engineering/roles.md +++ b/handbook/engineering/roles.md @@ -39,17 +39,31 @@ Some teams with more experienced members may need less guidance in certain areas ## 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. +Build an exceptional team that achieves results. + +- Ensure that your team has a roadmap that documents how it is going to achieve its [OKRs](../../company/okrs/index.md). +- Ensure the your team's [tracking issue](tracking_issues.md) captures the work that each teammate has committed to for each [monthly release](releases/index.md). +- Post a weekly update by EOD Monday on the tracking issue that answers the following questions: + 1. What work did the team do last week? + - This is a summary not details. The details should exist in each teammate's individual update and shouldn't be repeated. + 1. How does that work connect back to the team’s OKRs and roadmap? + 1. For each OKR and roadmap item, is the team on track? The answer should be of the form: + - We expect to reach this goal. + - We are at risk of not reaching this goal because A, B, C. + - What can we change to get this back on track? + - We are not going to reach this goal because A, B, C. + - What did we learn from this failure to achieve our goals? + 1. What did the team work on last week that wasn’t originally planned? Why? + 1. What pain is the team experiencing? - 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. +- Conduct regular [1-1s](../leadership/1-1.md). +- Own the end-to-end hiring process for your 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 From 26832a4bda0405c5a2696baf7fff98e5c18d732b Mon Sep 17 00:00:00 2001 From: Nick Snyder Date: Thu, 18 Jun 2020 16:16:13 -0700 Subject: [PATCH 2/5] project lead --- handbook/engineering/roles.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/handbook/engineering/roles.md b/handbook/engineering/roles.md index 179a2322d41..937774d01eb 100644 --- a/handbook/engineering/roles.md +++ b/handbook/engineering/roles.md @@ -12,7 +12,7 @@ Software Engineers are individual contributors who build software to satisfy the - 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. - 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). +- Help the teammates by empathetically [reviewing code](code_reviews.md) and [RFCs](../communication/rfcs/index.md). - Interview candidates and suggest improvements to our hiring process. ## Project Lead @@ -26,8 +26,20 @@ 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). +- Post a weekly update by EOD Monday on the tracking issue that answers the following questions: + 1. What work did the team do last week? + - This is a summary not details. The details should exist in each teammate's individual update and shouldn't be repeated. + 1. How does that work connect back to the team’s OKRs and roadmap? + 1. For each OKR and roadmap item, is the team on track? The answer should be of the form: + - We expect to reach this goal. + - We are at risk of not reaching this goal because A, B, C. + - What can we change to get this back on track? + - We are not going to reach this goal because A, B, C. + - What did we learn from this failure to achieve our goals? + 1. What did the team work on last week that wasn’t originally planned? Why? + 1. What pain is the team experiencing? - 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. @@ -35,7 +47,7 @@ Some teams with more experienced members may need less guidance in certain areas - 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 @@ -45,8 +57,8 @@ Engineering managers lead, grow, and develop teams of software engineers. Build an exceptional team that achieves results. -- Ensure that your team has a roadmap that documents how it is going to achieve its [OKRs](../../company/okrs/index.md). -- Ensure the your team's [tracking issue](tracking_issues.md) captures the work that each teammate has committed to for each [monthly release](releases/index.md). +- 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). - Post a weekly update by EOD Monday on the tracking issue that answers the following questions: 1. What work did the team do last week? - This is a summary not details. The details should exist in each teammate's individual update and shouldn't be repeated. @@ -59,9 +71,9 @@ Build an exceptional team that achieves results. - What did we learn from this failure to achieve our goals? 1. What did the team work on last week that wasn’t originally planned? Why? 1. What pain is the team experiencing? -- Conduct monthly [retrospectives](../../retrospectives/index.md) with your team. +- 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 your team and grow the team according to the hiring plan. +- 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. From ac4ade810805a9ebe25e5a4fa596df3c540ac15c Mon Sep 17 00:00:00 2001 From: Nick Snyder Date: Thu, 18 Jun 2020 16:31:49 -0700 Subject: [PATCH 3/5] update swe roles --- handbook/engineering/roles.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/handbook/engineering/roles.md b/handbook/engineering/roles.md index 937774d01eb..daafdae5c7f 100644 --- a/handbook/engineering/roles.md +++ b/handbook/engineering/roles.md @@ -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 the 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 From 77b9dd8494b4334f96f2d1d86e7c89fa6f6c28df Mon Sep 17 00:00:00 2001 From: Nick Snyder Date: Thu, 25 Jun 2020 16:13:08 -0700 Subject: [PATCH 4/5] dedup --- handbook/engineering/roles.md | 28 ++----------------------- handbook/engineering/tracking_issues.md | 19 +++++++++++------ 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/handbook/engineering/roles.md b/handbook/engineering/roles.md index daafdae5c7f..b7c79257af2 100644 --- a/handbook/engineering/roles.md +++ b/handbook/engineering/roles.md @@ -28,19 +28,7 @@ Some teams with more experienced members may need less guidance in certain areas - Directly contribute through code, RFCs or PR reviews for a minimum of roughly 50% of their time. - 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). -- Post a weekly update by EOD Monday on the tracking issue that answers the following questions: - 1. What work did the team do last week? - - This is a summary not details. The details should exist in each teammate's individual update and shouldn't be repeated. - 1. How does that work connect back to the team’s OKRs and roadmap? - 1. For each OKR and roadmap item, is the team on track? The answer should be of the form: - - We expect to reach this goal. - - We are at risk of not reaching this goal because A, B, C. - - What can we change to get this back on track? - - We are not going to reach this goal because A, B, C. - - What did we learn from this failure to achieve our goals? - 1. What did the team work on last week that wasn’t originally planned? Why? - 1. What pain is the team experiencing? +- 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. @@ -59,19 +47,7 @@ Engineering managers lead, grow, and develop teams of software engineers. 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). -- Post a weekly update by EOD Monday on the tracking issue that answers the following questions: - 1. What work did the team do last week? - - This is a summary not details. The details should exist in each teammate's individual update and shouldn't be repeated. - 1. How does that work connect back to the team’s OKRs and roadmap? - 1. For each OKR and roadmap item, is the team on track? The answer should be of the form: - - We expect to reach this goal. - - We are at risk of not reaching this goal because A, B, C. - - What can we change to get this back on track? - - We are not going to reach this goal because A, B, C. - - What did we learn from this failure to achieve our goals? - 1. What did the team work on last week that wasn’t originally planned? Why? - 1. What pain is the team experiencing? +- 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. diff --git a/handbook/engineering/tracking_issues.md b/handbook/engineering/tracking_issues.md index eac0ae6afd3..6413ba963dc 100644 --- a/handbook/engineering/tracking_issues.md +++ b/handbook/engineering/tracking_issues.md @@ -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? @@ -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. @@ -79,13 +80,19 @@ 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 From 2b420f93f777bd4191b04bfb9cba6e9f1a541a81 Mon Sep 17 00:00:00 2001 From: Nick Snyder Date: Thu, 25 Jun 2020 16:18:56 -0700 Subject: [PATCH 5/5] fix formatting --- handbook/engineering/tracking_issues.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/handbook/engineering/tracking_issues.md b/handbook/engineering/tracking_issues.md index 6413ba963dc..66d9d0cc9fb 100644 --- a/handbook/engineering/tracking_issues.md +++ b/handbook/engineering/tracking_issues.md @@ -84,15 +84,16 @@ Roadmap items may take more than an iteration to implement. As such please link 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. - - 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" +- 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" 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. + +- 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