Front End Plan Team

Frontend Plan Team

The Frontend Plan team works on the frontend part of GitLab for the Plan stage. Among other things, this means working on GitLab’s issue tracker, portfolio management features, and Markdown rendering.

For more details about the vision for this area of the product, see the Plan stage page.

Team Members

Name Role

Stable Counterparts

The following members of other functional teams are our stable counterparts:

Name Role
Alexandru CroitorAlexandru Croitor Senior Backend Engineer, Plan:Project Management
Brett WalkerBrett Walker Senior Backend Engineer, Plan:Project Management
Senior Frontend EngineerSenior Frontend Engineer Senior Frontend Engineer, Plan:Project Management
Costel MaximCostel Maxim Senior Security Engineer, Application Security, Plan (Project Management, Product Planning, Certify), Create:Source Code, Growth, Fulfillment:Purchase, Fulfillment:Provision, Fulfillment:Utilization, Systems:Gitaly
Deepika GulianiDeepika Guliani Frontend Engineer, Plan:Project Management
Donald CookDonald Cook Engineering Manager, Plan:Project Management
Eulyeon K.Eulyeon K. Backend Engineer, Plan:Project Management
Gabe WeaverGabe Weaver Senior Product Manager, Plan:Project Management
Heinrich Lee YuHeinrich Lee Yu Staff Backend Engineer, Plan:Project Management
Mario CeliMario Celi Backend Engineer, Plan:Project Management
Melissa UshakovMelissa Ushakov Group Manager, Product Management, Plan
Natalia TepluhinaNatalia Tepluhina Principal Engineer, Plan
Ottilia WesterlundOttilia Westerlund Security Engineer, Fulfillment (Fulfillment Platform, Subscription Management), Govern (Security Policies, Threat Insights), Monitor (Observability), Plan (Product Planning), AI-powered:AI Framework
Matthew MacfarlaneMatthew Macfarlane Product Manager, Plan Stage, Knowledge Group
Simon KnoxSimon Knox Staff Frontend Engineer, Plan:Project Management

Groups

The Plan stage is split into three groups: Project Management, Portfolio Management and Certify. For the sake of planning, frontend engineers have specialities within groups. However, due to shifting workloads per group, frontend engineers on the Plan stage are expected to be able to take on work outside of their speciality.

Project Management Portfolio Management Certify
Simon Knox Kushal Pandya Kushal Pandya
Scott Stern Rajat Jain Rajat Jain
Coung Ngo Florie Guibert Florie Guibert
Natalia Tepluhina

Work

You can see how we work as a stage at the Plan stage page.

Like the backend team, we use the standard GitLab engineering workflow. To get in touch with the Plan frontend team, it’s best to create an issue in the relevant project (typically GitLab) and add the ~“devops::plan” and ~“frontend” labels, along with any other appropriate labels. Then, feel free to ping the relevant Product Manager and/or Frontend Engineering Manager as listed above.

For more urgent items, feel free to also share the issue in #s_plan on Slack.

Capacity Planning

We use a lightweight system of issue weighting to help with capacity planning, with the knowledge that things take longer than you think. These weights are used for capacity planning and the main focus is on making sure the overall sum of the weights is reasonable.

It’s OK if an issue takes longer than the weight indicates. The weights are intended to be used in aggregate, and what takes one person a day might take another person a week, depending on their level of background knowledge about the issue. That’s explicitly OK and expected.

These weights we use are:

Weight Meaning
1 Trivial, does not need any testing
2 Small, needs some testing but nothing involved
3 Medium, will take some time and collaboration
4 Substantial, will take significant time and collaboration to finish
5 Large, will take a major portion of the milestone to finish

Anything larger than 5 should be broken down if possible.

We look at recent releases and upcoming availability to determine the weight available for a release.

Frontend weighting

We’re using a lightweight asynchronous planning model to determine weights of upcoming work. On the 4th of every month, the Frontend Engineering Manager (FEM) will create a planning issue for each group. There, a comment will be created with a short summary of the work needed for every issue that needs a weight (mostly ~frontend ~“Next up”). The ask is that every frontend engineer within the group adds an emoji reaction to what they think the weight should be. Discussion can occur over the next few days, but the idea is that consensus is reached by the 9th, at which point the FEM will add the weight to the actual issue. If there are differences in weights, the highest weight will be used.

Weighing bugs

Estimating bugs is inherently difficult. The majority of the effort in fixing bugs is finding the cause, and then a bug be accurately estimated. Additionally, velocity is used to measure the amount of new product output, and bug fixes are typically fixes on a feature that has been tracked and had a weight attached to it previously.

Because of this, we do not weigh bugs during ~“workflow::planning breakdown”. If an engineer picks up a bug and determines that there will be a significant level of effort in fixing it (for example, a large migration is needed, or we need to switch state management to Vuex on the frontend), we then will want to prioritize it against feature deliverables. Ping the product manager with this information so they can determine when the work should be scheduled.

Picking something to work on

The Plan FE stage works off of two boards, depending on the group: Project Management and Product Planning

When deciding the next issue to take, frontend engineers should prioritize by the following:

  1. First filter by ~“frontend”. Here, items in the ~“workflow::ready for development” column are ready to be picked up. The priority is set top down in the list.
  2. Items in the ~“workflow::planning breakdown” column. This is a prioritized list of items that may not be fully ready to start development on, but should be close.
  3. Items in the Open column. There should not be a point where there are not issues in the previous steps, but if it happens, feel free to look through the Open column and determine what is needed to move them to a more advanced step.

It’s OK to not take the top item if you are not confident you can solve it, but please add a comment in the issue if that’s the case, as this probably means the issue should be better specified.

When you pick something to work on, please assign the issue to yourself and add the ~“workflow::In dev” label.

High Severity Issues

When an issue comes through that is both ~“severity::1” and ~“priority::1”, our SLO requires that it be looked at right away. Other items being worked on should be postponed in favor of any investigations or work for the high severity/priority issue. When postponing an issue, engineers should leave a comment on the issue with a link to the high severity item that is being prioritized instead. Leaving a comment will help with communication with the cross-functional team and for historical tracking. The exception to this is if another ~“severity::1”/~“priority::1” issue is currently being worked on by an engineer. If this is the case, the engineer should make others on the team aware of the new issue on Slack but then keep working on the initial issue.

Unknown complexities

By the time something is picked up, it should already have a weight associated with it. After closer investigation into what is actually involved in implementing the feature, it’s possible to discover that the effort is much more complex. At this point, engineers are encouraged to update the weight, pinging the PM of the group so they are able to reprioritize if necessary.

Code Reviews

Our Code Review Guidelines state that we default to assigning reviews to team members with domain expertise. A domain can be an area of the codebase that a team is responsible for, so frontend engineers within the Plan stage are considered domain experts for Issues, Epics, and all other areas of Plan.

When determining who to assign an MR to, this process should be followed:

  1. Initial review should be done by a frontend engineer from the Plan stage.
  2. Maintainer review should be assigned to a maintainer that has domain expertise, not limited to the Plan stage. This is because we only have one maintainer within the team.
  3. If a maintainer with domain expertise is not available, assign to the recommended maintainer from reviewer roulette.

Exceptions

  • If an MR is not for a Plan feature or backstage item (global frontend work, assisting another team) review can and should go to an engineer on another team
  • If an MR touches code that Plan uses, but that is also used by another team, one review (either reviewer or maintainer) should be done by the other team. An example is with changes to notes, where responsibility is shared between Create:Source Code and Plan.

Iterations

As a team, we are working towards using week-long iterations. In agile terminology, this would equate to a week-long sprint. Our week ends during the Plan Stage weekly meeting (Wednesdays), where we will demo the goals that we accomplished during the week.


Plan Frontend Engineer Internship
Overview The Plan Frontend Team internship is the result of The Engineering Internship Pilot Program that started at the end of 2019. The ultimate goal of this program is to transform an entry-level candidate in to an Individual Contributor who could meet the requirements for a Junior Engineer. First 30 days The goals for the internship program are laid out in an epic here: https://gitlab.com/groups/gitlab-com/-/epics/614 Roles For this program to be successful, the Roles and Responsibilities must be transparent to the Internship Program participants.