Principles - Processes - Categorization - GitLab the Product - PM Responsibilities - Being a PM - Performance Indicators - Leadership
As a Product Organization, we work to create a flexible yet concise product development framework for developing products that customers love and value. The Product Principles section is where you can learn about our strategy and philosophy regarding product development, here we discuss the processes we use tactically. c
Below you'll find overviews for team meetings designed to boost Product team knowledge, communication, and collaboration. Our goal is to have minimal but valuable sync meetings for the Product team. All sync Product team meetings are required to have agendas and recordings that support async collaboration. We encourage any Product team member to propose a new meeting or the re-design of an existing meeting to help drive or improve collaboration amongst the Product team in an effort to drive more product value for our users.
To ensure transparency and alignment on the design and frequency of team meetings requiring time commitment from the entire or broader Product team, please raise an MR on this page, requesting review and collaboration from Product Operations, the VP Product and any other DRIs noted for the meeting. Product Operations should be always be included to review the addition of new or major revision of existing team meetings because they monitor the overall flow, productivity and satisfaction of all Product team meetings. "Broader" Product team refers to meetings that affect team members across Sections, Stages, and Groups on a regular cadence. For example, if a meeting is proposed that requires the participation of all Group Product Managers on the Product team every month.
The intent of this review and collaboration workflow is not to "block" but to help ensure team meetings compliment and flow well together, taking into consideration the following:
DRI: Product Operations and VP Product
Potential Topics:
READ-ONLY
announcements which require no synchronous discussion and are for information sharing only. If any action is required, this should be highlighted specifically by the reporter.All product team members are encouraged to add agenda items. The VP Product will prioritize the discussion items, and any items we can't get to in the allotted 50 min will be moved to the following meeting. If you are a Product team member and are unable to attend the call, you may add items for READ-ONLY
to the agenda.
DRI: Product Operations
Product Operations holds office hours to support product managers with any aspect of the GitLab product development process. Attendees discuss and troubleshoot items on the agenda. The goal is to collectively own the GitLab product development framework, continually evolving it into a world-class system by practicing our core GitLab Values. Cross-functional team members and stable counter parts are also welcome to attend and add agenda items concerning collaboration with the product team.
Some general topics for discussion:
DRI: VP Product and EBA to VP Product
The VP Product and their direct reports track our highest priority Product Team initiatives. If one of those initiatives needs to be discussed synchronously the assigned individual should add it to the meeting's GoogleDoc agenda. Directors can delegate and coordinate cross-product initiatives as needed based on the issues in this board.
As part of this Product Leadership Meeting we also review progress towards our OKRs.
Non-public items for discussion should be added directly to the agenda document for the meeting.
DRI: Appropriate Product Section Leader & Senior Director, Product Monetization
DRIs: Senior Director, Product Monetization and EBA to CProdO
DRIs: Director, Verify & Package and Product Operations
DRI: Product Team EBA and Product Operations
You can find more info about how we allocate our R&D investment across our product hierarchy in our Product Investment page.
Whenever someone departs from GitLab or transfers to a different role we use the R&D Backfill Process for alignment between the Finance Business Partner and department head.
Aligned with the company cadence, using the Dev Section as an example, Product planning follows:
Inspired by:
Introducing changes requires a number of steps, with some overlap, that should be completed in order.GitLab follows a dual-track product development flow spanning product, engineering, UX, and quality.
This process should be both up front and on an on-going basis when building features.
GitLab is designed and developed in a unique way.
Consistent with our value of Efficiency the product is developed with directly responsible individuals from Product, UX, Quality and Development working together.
Product Managers | Engineering Managers | UXers | SETs |
---|---|---|---|
Set milestone priorities and define what features Engineering works on | Own the definition of done; decide what gets merged into Product. Prioritizes maintenance work | Proactively identify small and large strategic UX needs to aid Product Management prioritization | Own and identify test strategy and requirements to complete the definition of done |
At GitLab, we develop our product for self-managed as well as SaaS-hosted customers. We realize that while we have DRIs there are many stakeholders who have needs. Examples teams include: Engineering, Quality, UX, Product, Security, and Infrastructure. Example expertise/stakes include: The Security team often has the deeper context of what it takes to run a secure SaaS system. The Infrastructure team has insights into what we should build into the product to reduce toil and enable efficient, reliable, performant and scalable systems.
We call this the Product Group model. It is an extension of the classic quad concept at the leadership level and is currently comprised of Development, Quality, User Experience, Infrastructure, Product, and Security.
The Product Group can be used to facilitate a global optimization, including product-wide technical debt.
PMs are the DRI for what GitLab Engineering team members work on. As a result contributions from the wider community and from other teams in GitLab are not subject to the processes described below nor are they prioritized by GitLab Product Managers. So long as an MR matches the definition of done, changes may make their way into Product.
Product Managers are encouraged to engage with contributors and vice-versa to learn from each other. As an open-source product we want to enable everyone to contribute. We don't want the engagement to be confused with a requirement to get permission. There are times when a Product Manager may need to provide advisement on compatibility with the JTBD, future direction, integration with other providers, changes to navigation, and impacts to GitLab operating expenses. It's recommended that they collaborate with their stable counterparts (Engineering Manager or Product Designer) to determine how best to proceed in these cases.
The product direction is an important part of each PMs work. PMs are expected to maintain the accuracy of their plan throughout the year through stakeholder conversations and other research. Your product direction is displayed as the direction labeled issues (and, optionally, epics) for your group's categories which are displayed in the Section, Stage, and Category direction pages of our website.
Around November, we begin the annual planning cycle, which ties closely into the overall strategy. During this period we update the direction
label and apply it to issues that have been identified as contributing to the plan that year.
PMs are able to refine their plans and strategy throughout the year, but since these are important to be aware of, major updates to the content that happen ad-hoc should also be communicated widely - for example, using the Product FGC meetings or other communication channels.
The direction page provides a thematic overview of the focus investment areas for the category. The "What's Next" section should cover the larger, strategic investment themes, while linking to Epics and Issues in GitLab for additional details. The Roadmap section should outline both (1) current development focus areas and (2) exploratory/design work to inform future work. For each time block (Now/Next/Future) on your direction page, consider adding "how we are measuring success" so the reader can see progress and what the definition of success means.
The structure of a roadmap on a direction page might looks something like this:
If the category has developed a UX Roadmap we recommend the product designer to create a merge request to incorporate UX Roadmap themes into the category direction page roadmap. Assign the MR to the PM for review and merge.
In some cases there may be direction pages that span multiple stages or sections. A direction page that summarizes the collective vision as well as all the contributors of that direction is critical to maintain transparency and adequate assignment of ownership.
There are several examples of these types of direction pages today:
The steps for creating and managing a cross-section or stage direction are:
@
all relevant product managers on the additionOnce the direction page has been added, there needs to be an assigned DRI for maintaining monthly updates for the page. The process for keeping the page updated are:
It's important to note here that your plan is not simply a list of new features and innovation. Those are included for sure, but so are issues related to all of your sensing mechanisms.
A category upgrade from minimal to viable or delivery of a top customer issue (for example) can contribute to your plan just as much as a brilliant new innovative feature can. It's up to PMs to balance this through a coherent longer-term strategy.
Conversely, in a broad sense anything could move the plan forward in a general way. Product Direction items (i.e., with the label) should be direction-level items that move the strategy forward meaningfully. This is up to the PM to set the bar for, but there should be a clear step forward with real user value.
Finally, issues are the substance of your plan. Ensure you are applying the label to both revelant epics and its issues. If you want epics with the direction
label to appear on your group's direction pages, you must first enable the capability.
INCLUDE_EPICS
array in www-gitlab-com/generators/direction.rb
For example, this is how Secure looks: INCLUDE_EPICS['secure'] = true
direction
label to appropriate epics.Note: There may be some delay in Direction epics appearing as the API calls that pull epics and issues for these pages is cached for 24 hours.
You can mix Direction epics and issues or just use one or the other. Epics will appear before issues in any lists.
In each release, you should be moving your plan forward. At least one item with this label should be included; if not, it's possible you're getting off track from where you planned to go and should assess.
Note that, by their nature, Product Direction items should not be sitting in the backlog or with no milestone. If they are, this is a signal that either they are not as important as originally thought, or that something important is not getting due attention.
The Product function at GitLab maintains a list of prioritized product improvements that would drive ARR in collaboration with Sales Leadership. The priorities and methodology for prioritizing this input is discussed in a monthly meeting and maintained in the Top ARR Drivers for Sales/CS
GoogleSheet which you can find in our internal GoogleDrive.
In preparation for those monthly meetings, Product Managers assigned to the PM Owner for each Top Driver provide a written update (preferably referenced from a GitLab issue) for GTM teams.
The purpose of our kickoff is to communicate with our community (both internal and external) a view of what improvements are being planned in the coming release. This can help other GitLab teams, community contributors and customers gain an understanding of what we are prioritizing and excited to deliver in our next iteration.
While kickoffs are commonly used to ensure visibility of work across an internal audience, our connection to a broader community and commitment to transparency means we also serve an external audience.
The process for preparing and presenting group and company wide Kickoff meetings is outlined in our Monthly Kickoff issue template. We create an issue from that template each month to collaborate on that month's Kickoff.
The calendar invite for the monthly kickoff meeting is scheduled for the 18th of each month. When the 18th falls on a Saturday or Sunday, the kickoff date is moved to the following Monday, which is either the 19th or 20th of the month.
The list of Product KPIs and definitions are here.
When planning, Product Managers plan to GitLab milestones. Here is the process for creating and maintaining them.
One quarter ahead, the Product Operations team will create the necessary milestones for the next quarter.
Step 1: .org
@fseifoddini
New milestone
in the top rightdot
release that makes sense.
.0
and further for each release with the .0
release every May.18th
to the 17th
Step 2: .com
.com
mirrors the .org
milestones for consistency in Product, Marketing etc.New milestone
in the top rightdot
release that matches .org
.
.0
and further for each release with the .0
release every May.18th
to the 17th
For internal team members please feel free to use the #product
channel for any product-related questions but you'll also find more direct assistance in the various Product Group channels.
When communicating change or a request for action to the entire product function, utilize the following levels and corresponding activities.
Level | Description | Activities |
---|---|---|
One | Suggestion for review from interested PMs and FYI | Post MR/issue in #product |
Two | Request for action from all PMs | Post in #product and mention @gl-product in MR/issue with specific action instructions. |
Three | Confirmation of understanding | Post in #product and mention @gl-product ; checkbox for each @gl-product member in an MR/issue description to confirm; assign MR/issue to all @gl-product members |
In some cases, Product Managers may have items that incur expenses toward the budget. These can be related to external vendors for research, contractors for development staffing, and infrastructure. The VP Product is the DRI for the product budget and all changes or requests for budget spend must be approved through them.
To request a forward-looking new budget item, open an issue in the Product project using the Product Budget Request Template and assign it to the VP Product and manager. Budgets are planned annually and quarterly, so approval may not be immediately given because it depends on the timing of budget planning. The VP Product will bring the budget request to the next budget planning session with Finance.
To request approval for an increase in the expected spend for a pre-existing item, open an issue in the Product project using the Product Budget Request Template assign to the VP Product and tag your manager. The VP Product will review, approve or decline the budget change. The VP Product will then notify the Finance Business Partner of changes for forecast updates.
In the event that there are changes to the R&D Hiring Annual Plan, these changes must be documented in the R&D Headcount Project Issue Tracker. If you have been asked to consider moving a headcount earlier into the year, open an issue and tag the Finance Business Partner and VP Product for consideration. Upon approval, that issue can be updated to the new headcount template.
Before shipping a new or updated feature, you are responsible for championing it, both internally and externally. When something is released, the following teams need to be aware of it as they will all need to do something about it:
You can promote your work in several ways:
When referencing issues in written communication using just the issue number #123456
and a link is not low-context communication. Instead use the title of the issue and the link or the issue number and description of the problem that issue will solve:
We will next be working on [Detect and display code coverage reports on MR](https://gitlab.com/gitlab-org/gitlab/-/issues/21549)
. OR We will next be working on [gitlab#21549](https://gitlab.com/gitlab-org/gitlab/-/issues/21549) which will help developers view code coverage reports directly in GitLab instead of losing context by looking in another tool while reviewing an MR
.We will next be working on #21549.
.In order to support findability and to clearly articulate when we change our minds especially when it comes to product direction, category changes, shifts in investment themes, or priorities for engineering, Product Managers must evangelize these changes in multi-modal communication channels to ensure our users and customers aware.
Some internal methods for communication include:
@cs-leadership
for awarenessExternal channels for consideration linking direction pages to:
Content marketers and Product Managers can partner together when using a Blog to communicate product changes and engaging the market with thoughtful changes. See the blog post handbook page for guidelines on when and how to start engaging Content Marketing for creating a blog post for a feature.
Product marketers and managers should be joined at the hip. Just as a feature without documentation should not be considered shipped, benefits of GitLab that we're not actively talking about might as well not exist.
Product marketers rely on product managers to be guided to what is important and high impact. In general, you should:
A core element to use cases is effective objection handling against major competitors in the market. In order to effectively support this effort, a partnership between Product Marketing and Product Management to maintain adding competitor walkthroughs and competitive content to the existing use cases is critical. To date we have competitive sections on the following uses cases:
In FY22-Q2, we are taking on an effort to continually update these Tier 1 and Tier 2 use cases and are assigning DRIs, follow along this effort in gitlab&1446
When working on the release of larger features or new capabilities, it is important the product manager consider various aspects of the go to market plan and inform or partner with the appropriate stable counterparts for strategic and logistical considerations.
As a PM you're responsible for making sure changes you've shipped are well represented
throughout GitLab's documentation and marketing materials. This means that on
release, features.yml
is updated, documentation is merged and deployed, and
any existing content is updated where necessary.
It's not acceptable to do this after the release. GitLab is very complex, and features and functions are easily missed, even those that provide significant value to customers (e.g. the many ways you can authenticate with GitLab).
You can recruit the help of the marketing and technical writing team if needed, but it's highly recommended to do small updates yourself. This takes less time and overhead than communicating what needs to be done to someone else.
features.yml
It's important to keep features.yml
updated because there are a number of different pages (internal-facing and external-facing) that read from that file. These include:
External
Internal
Major features deserve proper attention from Product and Marketing. With a proper rollout, we'll have ample marketing opportunities and receive more feedback ahead of, during, and after the release.
Here is the ideal rollout schedule. For each step there is an indication for who is responsible for it.
Major features and new capabilities may also benefit from early collaboration with our Partner Programs team using the Channel Program Engagement Process and Partner Communications.
It is recommended that product managers inform the channel partner team early on in planning or what would be comparable to the design phase for a large feature or new capability. The channel partner team will then lean in to understand the benefits of the upcoming larger-scale release and determine if they need to collaborate with product management more directly to activate any related partner strategies/tactics. It is important to create/document strategy and gain alignment before moving to the execution phase of feature release (see build track) and broader go-to-market plans.
Below are examples of how product management and channel partner teams collaborated on GitLab Dedicated. This is a recommended documentation approach for product managers and partner channel teams to follow, but can be personalized by the collaborators as needed.
As a PM, you are accountable for adding new features (under your umbrella) to the monthly release post, respecting the guidelines defined in the release posts handbook and its due dates. Be sure to go over all the details.
Every month, a PM will take the leadership of the release post, and will be responsible for delivering it in time.
For every monthly release, there is a blog post announcing features. The blog post should contain everything exciting or disruptive. We want to help people understand exciting features (which are often new), and increase adoption. In general, release posts should succinctly state the problem to solve, the solution, and how customers benefit from the solution.
Some guidelines to help promote consistency of what is included in the blog post between different Product Managers are below.
Depending on the maturity level of your category should influence what you select for as a release post item.
It is recommended to start writing your release post items as a part of your Kickoff preparation. To reduce rework, use the headline of the release post as the issue or epic title. The description of the release post can simply be part of the description of the implementing issue. Writing the release post early and consistently enables you and your team to work backwards and have the following benefits:
As a PM, it is important to remember a bias towards action (and other value actions like sense of urgency, make a proposal, boring solutions, write things down, don't wait, make two way doors decisions and accepting uncertainty which enables PMs to drive an async discussion to being action oriented. Every time you write a comment or create an issue ask yourself: Will this allow us to take an action and move us forward?
As PMs we need to constantly write about the features and upgrades we ship: in a blog post, internally to promote something, and in emails sent to customers. There are some guidelines that one should take into account when writing about features, the most important being a clear communication of the problem we're solving for users.
When writing about a feature, make sure to cover these messaging guidelines which help produce clear internal and external messaging. Please also keep in mind that we should avoid using acronyms that others my not recognize, such as "MVC" for Minimal Viable Change. For more guidance you can visit our writing style guidelines.
Let's highlight the messaging guidelines mentioned above with a concrete example, Preventing Secrets in your repositories, that we shipped in 8.12.
Reduce Security and Compliance Risk
).It's a bad idea to commit secrets (such as keys and certificates) to your repositories: they'll be cloned to the machines of anyone that has access to the repository. If just a single one is insecure, the information will be compromised. Unfortunately, it can happen quite easily. You write
git commit -am 'quickfix' && git push
and suddenly you've committed files that were meant to stay local!
GitLab now has a new push rule that will prevent commits with secrets from entering the repository.
Just check the checkbox in the repository settings, under push rules and GitLab will prevent common unsafe files such as .pem and .key from being committed.
Here are some additional examples of well written release blog posts for inspiration:
In addition to the written medium, video is an important medium that caters to the different goals you are trying to accomplish and learning styles of your audience. Depending on the type of video you are recording, there are some guidelines to keep in mind.
As our documentation guidelines actively encourage linking video content, please consider following the Documentation Style Guide section on language, and working with your technical writing team to include links to your speed runs, walk-throughs and demos at relevant locations in the product documentation.
Animated gifs are an awesome way of showing of features that need a little more than just an image, either for marketing purposes or explaining a feature in more detail. Checkout our guide to Making Gifs!
Speed runs are informal videos meant to focus on a single workflow and the experience for performing that workflow. It should not require much planning and is typically short in duration (less than 5 min.). This video type is meant to inform and not necessarily to influence buyers.
Examples:
Demos are scripted recordings meant to influence buyers. Generally has higher production value and typically involves both a slide-style presentation and/or live screen-sharing. Duration varies depending on the topics being covered.
Examples:
Product walk-throughs are informal videos meant primarily for an internal audience as a recorded, visual form of product critique. Walk-throughs typically focus on the user experience across categories and workflows within a Product Manager's product scope. There are particular benefits to walk-throughs which span product hierarchy boundaries (multi-category, multi-stage, multi-section) as they help highlight disjointed experiences across our single-application.
Walk-throughs are typically longer in length as they cover more ground and often involve some "live" troubleshooting and are best performed with no planning. Use the Product walk-through issue template when creating a walk-through.
Examples:
One situation that can happen is that an epic contains many small issues that don't individually
meet the bar for the direction
label, and therefore inclusion in the release post. More rarely, the last
issue of an MVC that took several releases isn't necessarily a capstone issue on its own. If you find yourself
in a situation where you have closed an epic during a release, you should also ensure that we communicate that
as a combined entity in a feature block, even if there is otherwise no single issue to mention.
The best way to understand how GitLab works is to use it for as much of your job as possible. Avoid dogfooding antipatterns and try to find ways to leverage GitLab (instead of an external tool) whenever possible. For example: try to use Issues instead of documents or spreadsheets and try to capture conversation in comments instead of Slack threads.
As a PM, but also as any GitLab team member, you should actively use every feature, or at minimum, all the features for which you are responsible. That includes features that are not directly in GitLab's UI but require server configuration.
If you can't understand the documentation, or if you struggle to install something, would anyone else bother to do it? This hands-on experience is not only beneficial for understanding what the pain points are, but it also helps you understand what can be improved and what features GitLab is missing.
The Dogfooding process should begin during the validation phase of the Product Development flow. PMs should set up conversations with internal customers to gather their feedback on the problem and possible solutions. This helps the group by providing feedback from teams deeply familiar with GitLab, and allows internal customer requirements to be considered from the beginning. We've seen that features that have been dogfooded internally are more successful than those that have not gone through this process, and internal usage is required to achieve Viable maturity.
When a feature is minimal and moving toward viable, designated GitLab team members (and anyone else interested!) should be using the feature extensively and actively providing feedback to the PM and team developing it.
When a feature is viable and moving toward complete, designated GitLab team members should be using the feature exclusively, and actively providing direct feedback to the PM in situations where exclusive use is not possible.
Exceptions to dogfooding:
When a feature is planned and/or moving towards minimal, dogfooding is not required; although, the initial conversation to seek feedback from internal customers should occur.
GitLab the company works in a specific way, but GitLab the product is designed to work for lots of different companies and personas. When we have validated through research that the wider GitLab community wants a feature that doesn't align with how our organization works, dogfooding is not required.
As a Product organization, it's also our responsibility to ensure that the entire company dogfoods our product. We do this by:
Working with internal stakeholders comes with the added benefit of getting immediate feedback that reduces cycle times and de-risks early investments in new categories and features. Beyond feature velocity, internal dogfooding saves the money that we would spend on third-party tools.
Internal users can help quickly identify where workflows might break down or where potential usability or performance issues must be explored. We should heavily weigh internal feedback to shape our perspective on customer needs, and then compare it to what we know about both large and small customers (and if we’re unsure, then we should proactively ask).
We define specific DRIs in the categories.yml file. Below are the responsibilities of an Internal Customer DRI:
Dogfooding
and spur a discussion with PM. This label should
never be removed so that the decision-making process gets memorialized on the Dogfooding board.
When creating a Dogfooding issue, consider using the Dogfooding Issue Template
for existing features that need Dogfooding or the Feature Proposal template for new features.Dogfooding::Build in GitLab
when a new feature should be built into GitLabDogfooding::Rebuild in GitLab
when there is existing work (outside of GitLab) that needs to be rebuilt inside of GitLabDogfooding::Keep Outside GitLab
when a feature is okay to build outside GitLab because they don't align with product visionDogfooding::Use Existing Feature
: when a feature already exists, but isn't being used internally yet for whatever reasonDogfooding
label when adding the new scoped label.Build in GitLab
or Rebuild in GitLab
:
Use Existing Feature
:
Dogfooding::Promote Feature
and promote these features in the weekly Product call and in other relevant channelsDogfooding::Build in GitLab
or Dogfooding::Rebuild in GitLab
are getting prioritized appropriatelyDogfooding::Keep Outside GitLab
to understand why these features are explicitly staying out of the productDogfooding::Use Existing Feature
to help their PMs promote these issues for internal usageTo see all the Dogfooding
work that is happening, here is a board that collects all the scoped labels.
Check out this 10 minute discussion about dogfooding:
Most of GitLab is configured through the file gitlab.rb
. It's tempting to
add a new parameter in this file - it's easy, fast to do, and won't require
adding a new UI element to allow the configuration of this new setting. However,
changing this file requires you to reconfigure GitLab. To do that, you have to
login to your server and type in commands to reconfigure your instance,
possibly multiple times if you have more than one server.
This is not something that we can ask our customers to do. Only by using your own product and features will you realize that some practices should be avoided as much as possible.
There is a certain failure case for MVC issues that product managers need to be aware of and actively work to prevent. Because we don't have infinite capacity to work on everything and good ideas are always coming in, it's possible (if the PM is not watching closely) for issues with good ideas to slowly but inevitably decay into something that is difficult to understand and move forward with.
As more and more comments are added, the issue slowly morphs from idea to idea without any direction from a product manager. Then, it becomes difficult to ever make complete sense of it again without losing some important context. It's also nearly impossible for someone who wants to make a community contribution to understand what the direction is. In other words, it becomes an undefined blob of ideas.
To prevent this, it is the product manager's responsibility to quickly determine whether an open-ended issue aligns with our business model and is broadly useful. If the answer to those questions is "yes," then we must turn it into something actionable, deliverable, and truly MVC as quickly as possible. If the answer is “no,” then we must close the issue to maintain our backlog’s hygiene.
The guidance for product managers is to never let an idea issue persist longer than three months without having been converted into a clear MVC. If this has not happened, you should ask yourself why this is the case: Is the idea overly broad? Is there no clear immediate deliverable? Is it just not important enough to spend time on? These are all signals that should be acted on without delay, before the issue degrades to the point that it becomes unusable without significant rework.
In practice, if the original issue was really broad and still contains great ideas, then simply converting it into an MVC that gets closed when it ships could be a disservice, because you lose valuable context when it's time to improve the MVC. In this case, consider creating a new issue for the MVC, so that it is crisp and concise, and leave the original issue as a post-MVC meta item.
Here are some guidelines to follow when exploring an MVC:
Virtually every new feature must be maintained forever (the standard for sunsetting a feature is very high). Creating a new feature means that GitLab has to continually manage the costs of maintaining that feature. Making small changes with quick feedback loops reduces the risk of introducing a new feature where the value doesn't justify the long-term costs.
A new feature also adds a tax on the user experience due to additional complexity in the product. Make sure that the benefits gained by users from the new feature more than cover the tax incurred, accounting for how frequently the new feature will be used. In particular, the new feature should satisfy this inequality:
(benefits * frequency) / (tax * (1-frequency)) > 1
Despite its minimal form, the change
After the feature freeze, it's expected of each product manager to test their own features and perform quality assurance to the best of their ability and follow up where necessary.
Product managers can use the staging environment once the release managers have deployed a release candidate (RC) to staging. Release managers should post in the #product channel in Slack that a new release candidate is available. Product managers can also use other environments as needed, such as GitLab provisioned on Kubernetes with GKE.
Before a new feature is shipped, the PM should test it out to make sure it solves the original problem effectively. This is not about quality assurance (QA), as developers are responsible for the quality of their code. This is about feature assurance (FA). FA is necessary because sometimes there are misunderstandings between the original issue proposal and the final implementation. Sometimes features don't actually solve the intended problem, even though it seemed like it would, and sometimes solutions just don't feel as useful as intended when actually implemented.
If you can test out the feature during development, pulling down branches locally (or with a review app!), that's great. But sometimes it's not feasible to test a feature until it's bundled into a release candidate and deployed to GitLab.com. If so, make sure to test out features as soon as possible so any new issues can be addressed before final release. Also, take the FA cycle into account when scheduling new milestone work.
If you are looking to test code that has not been merged to GitLab.com or is not yet part of an RC, you can pull the branch down locally and test it using the GitLab Development Kit (GDK).
Quality Engineering Managers (QEM) are the DRIs for prioritizing bugs. These include include security issues which are prioritized in conjunction with the security team. Product Managers must work with their QEM to set Milestones for issues marked with the bug::vulnerability
type label to guarantee they are shipped by their due date, as defined in the Security Team process.
While Product Managers are the DRIs for milestone planning, they must respect the prioritization order for bugs and maintenance issues as determined by their QEM and EM, respectively. As such they should deeply understand the implications and risks of security-related issues and balance those when prioritizing a milestone work. Addressing a serious security issue by its due date may require temporarily adjusting the desired work type ratio for one or more milestones. Priority labels and Due Date designations for security issues should never be modified by Product Managers as they are directly managed by the Security Team and used to track metrics and progress.
To enhance availability and performance of GitLab, sometimes it makes sense to add configurable limits to certain features. For example, we limit the number of webhooks per project, and we allow admins to set rate limits on raw endpoints. These limits ensure more consistent performance, reduce the likelihood of outages, and offer admins tools to limit abuse or enforce specific standards.
There is a guide about developing application limits in the GitLab Docs.
Application limits should be enabled by default. If we are considering enabling or changing a limit, we should do the following (applies to GitLab.com and self-managed):
#customer-success
and #support_escalations
to announce the upcoming change, and consider discussing in the next All CS Team Call
to solicit feedback.See this page for details on working across stages at GitLab.
Stages, groups, and categories serve as a common framework for organizing and communicating the scope of GitLab.
Documentation on how to make changes to stages, groups, and categories, as well as what approvals are required, can be found in our website handbook page.
After a change has been approved, we may need to globally optimize during the initial transition period, and ensure that important issues are not blocked.
There are a few common scenarios we may encounter during these transition periods:
In each of these scenarios, a Group may become temporarily responsible for a future Group's issues and backlog. During this time, the responsible Group should balance the needs of our users and organization, prioritizing across the common backlog. Consider creating a transition issue following this format to create a series of tasks related to the transition.
As the group(s) working on a Stage grow in size, a new Group may need to be formed so group sizes remain manageable. For example, today
there is a single group for Manage
, but new groups were created for control
and framework
.
To prepare for creating multiple Groups, we should:
categories.yml
and stages.yml
, assigning each Group a set of Categoriesdevops::manage
Control
or Framework
devops::manage
backlogOnce the first PM or EM is hired, the new Groups should be formed:
Control
and Framework
. Ideally, each group would have at least two backend engineers, but that is not always possible.stages.yml
and team.yml
to reflect the new group members. You may need to add a member to the end of _categories.erb
.g_control
and g_framework
, and close the previous Slack channel (e.g. g_manage
)As the rest of the EM/PM's are hired, they take over that role for the respective group.
Note: We used to call this "splitting" a group. However, we adjusted it because it's important to emphasize with group members that they are forming new independent groups and should feel free to independently create their new norms and processes.
The categories within a Stage will change over time, based on GitLab's direction and the market landscape. The groups within a Stage will need to be able to handle these changes, without issues falling in the cracks.
When the categories change, we should:
categories.yml
and stages.yml
, ensure all categories are assigned to a Groupcategories.yml
are unique to the new category addedWhen GitLab decides to address additional needs within the single application, a new Stage may need to be created. For example, Govern
may be created to
address additional needs beyond what Secure
focuses on.
When a new Stage is added, and its Group has yet to be formed, we should:
devops::govern
and Govern
Secure
, which will be initially responsible for the new Stagedevops::govern
and devops::secure
categories.yml
and stages.yml
, listing the new Stage with the members of the existing responsible Group. Update _categories-names.erb
with the member name, if necessary.Once the first PM or EM is hired, a new Group for the Stage should be formed:
Govern
. Each Group should have at least two backend engineers.Secure
on Secure and Govern
on Govern.stages.yml
to reflect the new Group and its members. Update _categories.erb
with the member name, if necessary.As the rest of the EM/PM's are hired, they take over that role for the new Group.
In addition to making the appropriate changes listed above to ensure that the category is reflected as part of the right group, stage and section, the following steps are also important.
Throughout the customer lifecycle, customer facing teams (Support, Sales, Professional Services, Account Managers, etc.) may need the assistance of a product manager. This can include a detailed discussion of our direction, how to address specific use cases, or gaps in functionality, with an organization.
To ensure these requests can be quickly triaged, easily scheduled, and later tracked, there is a standardized request process based on issues.
Product support requests are tracked in the Product team project. To create a request:
Product-Support-Request
templateFor time sensitive and high impact requests, please paste a link to the issue in the #product
Slack channel, and @mention the recommended PM's in the template.
When a support request is opened, labels will automatically be assigned to categorize the request.
Three fields are particularly important when triaging requests:
urgent
requests should be treated with a high priority.All product managers should ensure they are set up to receive label notifications for their respective stages:
If you follow the principles and workflow above, you won't be writing long, detailed specs for a part of the product for next year. So how should you be spending your time?
Invest the majority of your time (say 70%) in deeply understanding the problem. Then spend 10% of your time writing the spec for the first iteration only and handling comments, and use the remaining 20% to work on promoting it.
A problem you understand well should always have a (seemingly) simple or obvious solution. Reduce it to its simplest form (see above) and only ship that.
See the Cross-Functional Prioritization page for more information.
Priority | Description | Issue label(s) |
---|---|---|
1* | Security | bug::vulnerability |
2* | Data Loss | data loss |
3* | Resilience, Reliability, Availability, and Performance | availability , infradev , Corrective Action , bug::performance |
4 | Usability | Usability benchmark , SUS::Impacting , UX debt |
5 | Instrumentation | instrumentation |
6 | xMAU / ARR Drivers | direction |
7 | All other items not covered above |
*indicates forced prioritization items with SLAs/SLOs
Any of the items with a "*" are considered issues driven by the attached SLO or SLA and are expected to be delivered within our stated policy. There are two items that fall into Forced Prioritization:
bug::vulnerability
must be delivered according to the stated SLObug::availability
with specific SLOs as well as infradev
, Corrective Action
, ci-decomposition::phase*
that follow the stated type::bug
SLOAny issues outside of these labels are to be prioritized using cross-functional prioritization. Auto-scheduling issues based on automation or triage policies are not forced prioritization. These issues can be renegotiated for milestone delivery and reassigned by the DRI.
While we have moved to the cross-functional prioritization process to empower teams to determine the optimal balance of all types of issues, we will keep Engineering Allocations as a way to allow teams to quickly shift to a critical priority, designating the EM as the DRI to drive the effort.
Engineering is the DRI for mid/long term team efficiency, performance, security (incident response and anti-abuse capabilities), availability, and scalability. The expertise to proactively identify and iterate on these is squarely in the Engineering team. Whereas Product can support in performance issues as identified from customers. In some ways these efforts can be viewed as risk-mitigation or revenue protection. They also have the characteristic of being larger than one group at the stage level. Development would like to conduct an experiment to focus on initiatives that should help the organization scale appropriately in the long term. We are treating these as a percent investment of time associated with a stage or category. The percent of investment time can be viewed as a prioritization budget outside normal Product/Development assignments.
Engineering Allocation is also used in short-term situations in conjunction and in support of maintaining acceptable Error Budgets for GitLab.com and our GitLab-hosted first theme.
Unless it is listed in this table, the Engineering Allocation for a stage/group is 0% and we are following normal prioritization. Refer to this page for Engineering Allocation charting efforts. Some stage/groups may be allocated at a high percentage or 100%, typically indicating a situation where all available effort is to be focused on Reliability related (top 5 priorities from prioritization table) work.
During an Engineering Allocation, the EM is responsible for recognizing the problem, creating a satisfactory goal with clear success criteria, developing a plan, executing on a plan and reporting status. It is recommended that the EM collaborate with PMs in all phases of this effort as we want PMs to feel ownership for these challenges. This could include considering adding more/less allocation, setting the goals to be more aspirational, reviewing metrics/results, etc. We welcome strong partnerships in this area because we are one team even when allocations are need to resolving issues critical to our business.
During periods of Engineering Allocation, the PM remains the interface between the group and the fields teams & customers. This is important because:
Group/Stage | Description of Goal | Justification | Maximum % of headcount budget | People | Supporting information | EMs / DRI | PMs |
---|---|---|---|---|---|---|---|
Each allocation has a direction page maintained by the Engineering Manager. The Engineering Manager will provide regular updates to the direction page. Steps to add a direction page are:
index.html.md
in the newly created directoryTo see an example for an Engineering Allocation Direction page, see Continuous Integration Scaling. Once the Engineering Allocation is complete, delete the direction page.
One of the most frequent questions we get as part of this experiment is "How does a problem get put on the Engineering Allocation list?". The short answer is someone makes a suggestion and we add it. Much like everyone can contribute, we would like the feedback loop for improvement and long terms goals to be robust. So everyone should feel the empowerment to suggest an item at any time.
To help with getting items that on the list for consideration, we will be performing a survey periodically. The survey will consist of the following questions:
We will keep the list of questions short to solicit the most input. The survey will go out to members of the Development, Quality, Security. After we get the results, we will consider items for potential adding as an Engineering Allocation.
Once the item's success criteria are achieved, the Engineering Manager should consult with counterparts to review whether the improvements are sustainable. Where appropriate, we should consider adding monitoring and alerting to any areas of concern that will allow us to make proactive prioritizations in future should the need arise. The Engineering Manager should close all related epics/issues, reset the allocation in the above table to the floor level, and inform the Product Manager when the allocated capacity will be available to return their focus to product prioritizations.
When reseting a groups Engineering Allocation in the table above, the goal should be set as floor %
, the goal should be empower every SWEs from raising reliability and security issues
, percentage of headcount allocated should be 10%
, and N/A
in place of a link to the Epic.
All engineering allocation closures should be reviewed and approved by the VP of Development.
We will enact a localized feature change lock (FCL) anytime there is an S1 or public-facing (status page) S2 incident on GitLab.com (including the License App, CustomersDot, and Versions) determined to be caused by an engineering department change. The team involved should be determined by the author, their line manager, and that manager's other direct reports.
Direct reports involved in an active borrow should be included if they were involved in the authorship or review of the change.
An FCL assignment and creation must be approved by either the VP of Infrastructure or VP of Development. The purpose is to foster a sense of ownership and accountability amongst our teams, but this should not challenge our no-blame culture.
Rough guidance on timeline is provided here to set expectations and urgency for an FCL. We want to balance moving urgently with doing thoughtful important work to improve reliaiblity. Note that as times shift we can adjust accordingly. The DRI of an FCL should pull in the timeline where possible.
The following bulleted list provides a suggested timeline starting from incident to completion of the FCL. "Business day x" in this case refers to the x business day after the incident.
During the FCL, the team(s) exclusive focus is around reliability work, and any feature type of work in-flight has to be paused or re-assigned. Maintainer duties can still be done during this period and should keep other teams moving forward. Explicitly higher priority work such as security and data loss prevention should continue as well. The team(s) must:
#fcl-incident-[number]
, with members
closing ceremony
upon completing the FCL to review the retrospectives and celebrate the learnings.
After the Incident Review is completed, the team(s) focus is on preventing similar problems from recurring and improving detection. This should include, but is not limited to:
Examples of this work include, but are not limited to:
Any work for the specific team kicked off during this period must be completed, even if it takes longer than the duration of the FCL. Any work directly related to the incident should be kicked off and completed even if the FCL is over. Work paused due to the FCL should be the priority to resume after the FCL is over. Items created for other teams or on a global level don't affect the end of the FCL.
A stable counterpart from Infrastructure will be available to review and consult on the work plan for Development Department FCLs. Infrastructure FCLs will be evaluated by an Infrastructure Director.
Please also note the corresponding Engineering handbook section about the relative importance and prioritization of availability, security, and feature velocity. To ensure we're providing an appropriate focus on security, data loss, and availability, PMs should consider:
To help PMs plan, stage group stable counterparts can participate in prioritization sessions. They serve mainly as an internal sensing mechanism for PMs to make more informed prioritization decisions for different planning horizons. Usually, teams focus on the product releases horizon, but can also focus on the FY themes or strategy horizons. This group exercise also boosts team morale, improves communication and empathy, and broadens individual's perspectives. Besides, it can be a more informal and joyful way of connecting the team and discussing work.
The output of these sessions is a priority matrix that shows the relative priority of a set of items based on two weighted criteria. Generally, the criteria are importance and feasibility, each one visualized as an axis of the matrix. You can change the criteria depending on the planning horizon or goals. To better understand how the sessions work, see an example mural and session recording.
Always consider asynchronous sessions first, in an effort to be more inclusive and respectful of others time. That said, if possible, synchronous sessions can be ideal, as they allow limiting the time spent and make great use of the activities' momentum for a more efficient discussion and voting.
Use our Mural template for prioritization sessions, built for product releases but adaptable for other planning horizons or criteria.
Adapt this process as needed, and consider changing it to an asynchronous mode of communication. For example, participants can review the items async, add questions as comments in Mural, and vote using dot voting or in voting sessions held on different days for each criterion.
## :map: Prioritization session
`@-mention participants` for our [prioritization session](/handbook/product/product-processes/#prioritization-sessions), here's the [**Mural**](URL) for us to add the issues we want to see in **MILESTONE**. I scheduled our 50-minute session for **DATE**.
1. Add your issues to the Mural before the call. Let's try to limit to **5 issues per person**, so it's easier to vote on them and keep things focused. You can find instructions on how to add them in the “Outline” panel on the right side of the Mural UI.
1. Try not to add Security or Availability issues. This is also noted in the [product processes page](/handbook/product/product-processes/#prioritization), as those issues have forced prioritization with SLAs/SLOs.
1. If you can, mark issues that appeared in previous sessions by changing their sticky color to **orange**.
Thanks and see you soon :bow:
RICE is a useful framework for prioritization that can help you stack rank your issues. The RICE framework is a great tool for prioritizing many issues that seem to be of equal value at first glance. In order to drive clarity and alignment in the prioritization of work across the entire DevOps platform, and to help prioritize items that may compete for resources from different teams, we have set a standard for the RICE factors so all prioritization decisions based on RICE are using the same metric.
Reach How many customers will benefit in the first quarter after launch? Data sources to estimate this might include qualitative customer interviews, customer requests through Support/CS/Sales, upvotes on issues, surveys, etc.
Higher reach means a higher RICE score:
Impact How much will this impact customers and GitLab? Impact could take the form of increased revenue, decreased risk, and/or decreased cost (for both customers and GitLab). This makes it possible to compare revenue generating opportunities vs. non-revenue generating opportunities. Potential for future impact should also be taken into account as well as the impact to the GitLab brand (for example unlocking free-to-paid conversion opportunities).
Higher impact means a higher RICE score:
Confidence How well do we understand the customer problem? How well do we understand the solution and implementation details? Higher confidence means a higher RICE score.
Effort How many person months do we estimate this will take to build? Lower effort means a higher RICE score.
Calculating RICE Score
These four factors can then be used to calculate a RICE score via the formula:
(Reach x Impact x Confidence) / Effort = RICE
Here is an example RICE calculation you can use to help prioritize work in your area. Feel free to embed this at the Epic level to provide context for why you did or did not prioritize.
RICE Factor | Estimated Value |
---|---|
Reach | 10.0 |
Impact | .5 |
Confidence | 80% |
Effort | 2 month |
Score | (10.0 x .5 x .80) / 2 = 2.0 |
Other important considerations:
We schedule a prioritized issue by assigning it a milestone; for more on this see Planning a Future Release.
Conducting a RICE prioritization exercise with your cross-functional counterparts is a powerful way to make the process more inclusive and improve the quality of your rankings. Consider making this an async-first process to accommodate team members across different timezones. For an example of how to do this async-first, see this issue that the Geo team used to collaborate on a RICE prioritization exercise. This blank async RICE template is also available for you to copy for your own async prioritization exercise.
For prioritizing most issues, we should utilize the RICE framework noted above, which will capture an aggregate of customer demand. You can also augment RICE scores with the Customer Issues Prioritization Framework Dashboards:
Customer Requested Issues (Product) for product managers Customer Requested Issues (CSM) for Sales, CS and CSM
These dashboards provide several inputs for calculating RICE and aggregate all customer requested issues and epics into a single dashboard. These dashboards are not meant as a replacement or sole input for Top ARR Drivers for Sales/CS. Further requirements such as the integration of themes need to be implemented before this framework can be used to fully inform or replace tools such as the Top ARR tracker.
In some cases however, we may become aware of a feature which is particularly important to deliver on by a certain date. Examples of this could include an issue necessary to embark on a new GitLab rollout, a feature needed by a partner to launch an integration, or a method to import data from a service which is being discontinued. In these instances, the responsible PM can apply the customer
or customer+
label along with a due date
and initial milestone
. This set of labels can serve to indicate externally that the issue is particularly important, as well as a reminder for internal teams of its importance.
It is important to note that the customer
and/or customer+
label does not constitute a promise for the issue to be delivered in any given milestone or timeframe.
GitLab is open-source, and while PMs aren't the arbiters of community contributions, encouraging and promoting a large ecosystem of contributors is critical to our success. When making prioritization decisions, it's important to heavily weight activities which will encourage a stronger community of contributors. Some of those activities are:
Product managers are not responsible for prioritizing contributions outside of their group. These contributions should be reviewed and merged swiftly allowing everyone to contribute, including non-product teams at GitLab.
The SaaS-First product investment theme will put us in a better position to support our customer base who is expected to accelerate adoption of SaaS products in the coming years. Features will also end up more secure, resilient, performant, and scalable for our self-managed customers if initially built to the expectations of SaaS. Therefore, it is important for PMs to understand and prioritize needs related to the SaaS business. When prioritzing SaaS related issues, we follow the same guidelines above. Within those guidelines there are a few areas that are especially important for PMs to focus on to ensure the success of our SaaS users.
Downtime of GitLab.com has a material impact on our customers. From a 2014 report Gartner estimates that downtime costs companies on average "$5,600 per minute, which extrapolates to well over $300K per hour." Furthermore, SaaS downtime can severely disrupt the productivity of GitLab Inc since we rely heavily on GitLab.com to run our business. Finally, downtime can also lead to customer churn and damage to our reputation. Thus, it is crucial as a company we collectively work towards consistently maintaining our 99.95% SLA on GitLab.com. There are a few things that PMs can do in partnership with their engineering team to help ensure overall Availability for GitLab.com.
The infradev process is used to triage issues requiring priority attention in support of SaaS availability and reliability. As part of the broader effort to responsibly manage tech debt across the company, PMs should partner with their EMs to identify and incorporate infradev labeled issues of all severities. Note, issues labeled with a severity must be mitigated and resolved within specific timeframes to meet the SLO. As EMs are the DRIs for prioritizing infradev work, PMs should familiarize themselves with the infradev process and Board.
Other resources PMs can consult to identify and prioritize Infradev issues include:
While not required, PMs are encouraged to listen in on Incident Management calls for incidents related to their product areas to 1) build empathy with the SRE team by gaining insight into how they handle incidents 2) gain a better sense of the impact of the incident to their customer base, and 3) identify improvements to their product areas, whether technical or feature-related, that could have prevented the incident. PMs are not expected to be in the decision-making path on actions taken to resolve the incident. They are there to listen and learn rather than attempting to decide/influence the course of resolution. After incidents involving their product area, PMs are also encouraged to engage in the Incident Review, including attendance at the Sync Incident Review call if their incident is scheduled. PMs can periodically review incidents via the Production Incident Board
Enterprise customers interested in adopting SaaS may have common hard requirements to be able to use the product. For example, large enterprises may need certain security related features, such as Audit Logs, available before their security team will agree to the use of GitLab.com. This can also be about more than just features; it may include how and where we apply features so they can administrate their GitLab instance at enterprise-scale. For instance, permission management and shared configurations are best implemented top-down first instead of Project-up to meet the requirements of large organizations who may have 100s or 1000s of projects and only a small handful of people to perform these system-wide administrative tasks. In order to encourage more Enterprise adoption of GitLab.com, prioritize these common "hard-blockers" to adoption over "nice to have" features. PMs can use customer interviews to hone in on which issues are hard blockers to adopting SaaS vs more "nice to have" features that can be delivered later.
To track hard adoption blockers, use the ~"GitLab.com Enterprise Readiness" label within the GitLab-Org and GitLab-com groups.
There are a few special considerations when it comes to delivering features for SaaS. In order to achieve parity between SaaS and Self-managed installations PMs should prioritize efforts to eliminate existing feature gaps that exist across the two installations. Additionally, new features should ship for SaaS and self-managed at the same time. Features should be implemented at the group level first, before being implemented at the instance level, so that they will work across both self-managed and SaaS. Finally, in order for new features to be adequately monitored, they should include appropriate logging and observability, which makes troubleshooting much easier.
As a product manager, you will be assigned as the stable counterpart to a single group. At GitLab we abide by unique, and extremely beneficial guidelines when interacting with our groups. These include:
As an all-remote company, our crispness when it comes to responsibilities throughout the Product Delivery process was born out of necessity, but it pays untold dividends. Some of the benefits include:
Product Managers and Product Designers should work together as strategic counterparts to better understand the problem and discover user needs. Product Designer will support the Product Manager in understanding the target audience, their challenges when using a particular feature and then designing a solution that helps users solve them.
It's important to remember that User Experience (UX) does not only relate to visual features or interface design. UX is the intangible design of a strategy that brings us to a solution, so it also refers to the experience of writing code, working with .yml files, designing APIs, working with a CLI, etc. All of those functionalities are meant to be read and used by people. Involving a Product Designer into their planning and development can be highly beneficial. A guide to consider is: anytime a person is interacting with something, there is an opportunity for that interaction to be designed.
Assessing user workflows
As the GitLab product matures, we know we must make important workflows easier to use. As part of this effort, the UX department is collaborating with Product Management to select highly used workflows in stable areas of the product. We'll assess and score these workflows using the UX Scorecards methodology and then work together to prioritize recommended improvements.
This effort aligns with the Category Maturity goals that move areas of our product from minimal to viable to complete and, finally, lovable.
What if your team doesn't have a designer?
We are currently not able to have a dedicated Product Designer for each group. We ask teams to be as self-sufficient as possible. If your team has questions where you would usually turn towards the Product Designer, you have the following options:
As described above, prioritization is a multi-faceted problem. In order to translate the priorities of any given group into action by our engineering teams, we need to be able to translate this multi-faceted problem into a flat list of priorities for at least the next release cycle. Product Managers are responsible for taking all these prioritization considerations and creating a clear, sequenced list of next priorities. This list should be represented as an issue board so that each team has a clear interface for making decisions about work. From this list, UXers, Engineering Managers and Product Managers can work together to determine what items will be selected for work in the immediate future.
This does not mean that items will be addressed in strict order - UXers, EMs and PMs need to be cognizant of dependencies, available skillsets, and the rock/pebbles/sand problem of time management to make the best decisions about selecting work.
Together with your Engineering Manager, you will have an important role in ensuring that the Build Plans defined for issues are created with iteration in mind. Iteration is highly valuable for the following reasons:
As a company we emphasize velocity over predictability. As a product manager this means you focus on prioritizing, not scheduling issues. Your engineering stable counterparts are responsible for velocity and delivery. However, there are instances when there is desire for predictability, including:
As the DRI for milestone prioritization, it is the Product Manager's job to prioritize for predictability when it is needed. You should do so by ensuring you prioritize a deliverable, and its dependencies, so that it can reasonably be expected to be delivered by any committed dates. If there is time pressure to hit a date, the PM should also explore de-scoping the issue to meet the deadline, rather than pressuring engineering to move abnormally fast or cut corners.
These information sources may be useful to help you prioritize.
Individual product managers must consider, and advocate for global optimizations within the teams they are assigned to. If your assigned team requires expertise (remember everyone can contribute) outside the team you should make all reasonable efforts to proceed forward without the hard dependency while advocating within the product management team for increased prioritization of your now soft dependencies.
Execution of a Global prioritization can take many forms. This is worked with both Product and Engineering Leadership engaged. Either party can activate a proposal in this area. The options available and when to use them are the following:
We have found the following methods less successful in ensuring completion of work that warrants global prioritization:
Rapid Action is a process we follow when a critical situation arises needing immediate attention from various stakeholders.
Any problem with both high severity and broad impact is a potential Rapid Action. For example, a performance problem that causes latency to spike by 500%, or a security problem that risks exposing customer data.
If the problem only affects one customer, consider a customer escalation process as the alternative.
When a situation is identified as a potential Rapid Action the following actions are recommended:
rapid action
label.Optionally, to facilitate communication, you might:
The DRI is responsible for coordinating the effort to resolve the problem, from start to finish. In particular, the DRI is responsible for:
Please note that customers can be stakeholders. The DRI can seek assistance with customer communication in Slack at #support_escalations
.
The DRI should post a summary status update on the epic at least daily. The following format is recommended (provided here in Markdown format for easy copy/pasting into issues):
**YYYY-MM-DD Update**
**Progress since last update:**
This section describes what changes have been deployed to production and any other notable progress or accomplishments.
**Progress expected by next update:**
This section describes what you expect to accomplish prior to the next update. For example what work is currently in progress (include links to MRs), when do you expect these to be deployed, what do you expect to be the effect(s)?
**Blockers:**
This section describes any specific obstacles preventing progress. What is needed to overcome them? Are there team members (e.g. executives, domain experts) these concerns should be escalated to?
**Praise:**
This section is used to highlight specific praise for team members contributing to the Rapid Action. It is important to [say thanks](/handbook/values/#say-thanks).
Once the resolution criteria have been satisfied:
@gitlab-com/gl-security/secops
to determine when the epic can be made public.Borrow is used when team members are shifted from one team to another temporarily. Team members complete assignment when the work is done. Borrows are meant to align management structures into a single group for coordination and logistics of the effort. It is important to define the work upfront so that it is bounded. We prefer borrows to be for a milestone, but generally can extend to multiple milestones. Any borrow more than 3 months should be reviewed carefully for scope and minimized to the extent possible. Where the ask likely extends beyond 6 months, a realignment should be considered.
It is recommended that EMs, PMs, and Product Design Managers utilize the issue template for Borrow requests. Following this template helps ensure the process is transparent, efficient, and well-organized.
Alternatively, team members can use a lighter version of the Borrow template. This is ideal for individual team members who pick up work outside their assigned group.
Every borrow must have a specific deliverable commitment described. The intent is to set expectations and provide team members an opportunity to clearly understand the expectation. Selected team member preference is considered and providing this would also be an opportunity for other interested team members with the required skills to become involved.
In cases where there is an architectural and/or significant technical project needed to be undertaken, team members with specific skill sets may be required to achieve the goal. In these instances we should endeavor to have a clear goal, clearly defined skill sets, and number of team members needed.
In scenarios where urgency is required, it may be necessary to select specific team members. The impact this has on team members, teams, and the broader organization should also be addressed. All team members with the desired skills should be included in consideration to ensure opportunities are equally available. Meanwhile, try to avoid cascading impacts where possible so that impacted teams can still operate reasonably (e.g., the teams who are giving shall have at least 3 engineers remaining and a maximum of 1 engineer can be given).
We've learned that there are some circumstances where borrow requests aren't appropriate:
security
or infradev
issues while the product group works on features.
We have learned that there is a way to frame a borrow that leads to a more constructive conversation:
A scope reassignment is used when the features or effort of work will take longer than 6 months and less than a year, but it is not necessary to realign teams permanently in order to deliver the work. Rather, the team reporting structures are maintained and the product groups are directed to work on the product scope of another group, stage, or section.
It is recommended that with a scope reassignment, the product groups align on what portions of scope will be delivered by each group. This is done with epics and issues, as well group::
labels.
A scope reassignment is different from a borrow and realignment because team structure is not changing, instead the items the product groups are working on change. Additionally, borrows are to be used temporarily (less than six months) and realignments are permanent. In the case of a scope reassignment, a product group would maintain its long term charter and vision/investment level, although for up to one year will work on another product area's scope. The reason for a scope reassignment is to reduce the toil of changing managers and team structures while still activating on strategic efforts requiring more headcount.
As GitLab grows we will need to create new groups, stages, and categories. During this transition period we need to globally optimize, and ensure that important issues are not blocked during the creation of a new group.
There are three common scenarios which may encounter these transition periods:
In each of these scenarios, a Group may become temporarily responsible for a future Group's issues and backlog. During this time, the responsible Group should balance the needs of our users and organization, prioritizing across the common backlog.
For every scenario above, we also need to ensure that the Engineering Metrics dashboard is updated to correctly track the new label.
The label change affects both Issues and Merge Requests. The Stage and Group labels power the visualization and metrics in the Quality and GitLab Insights dashboards.
Please create a new issue in the Triage Ops with the template label-change.md
.
As the group(s) working on a Stage grow in size, a new Group may need to be formed so group sizes remain manageable. For example, today
there is a single group for Manage
, but will be splitting into control
and framework
groups.
To prepare for splitting a Stage into multiple Groups, we should:
categories.yml
and stages.yml
, assigning each Group a set of Categoriesdevops::manage
Control
or Framework
devops::manage
backlogOnce the first PM or EM is hired, the new Group should be formed:
Control
and Framework
. Ideally, each group would have at least two backend engineers, but that is not always possible.stages.yml
and team.yml
to reflect the current group members. Update _categories.erb
with the member names, if necessary.g_control
and g_framework
, and close the previous Slack channel (e.g. g_manage
)As the rest of the EM/PM's are hired, they take over that role for the respective group.
The categories within a Stage will change over time, based on GitLab's direction and the market landscape. The groups within a Stage will need to be able to handle these changes, without issues falling in the cracks.
When the categories change, we should:
categories.yml
and stages.yml
, ensure all categories are assigned to a GroupWhen GitLab decides to address additional needs within the single application, a new Stage may need to be created. For example, Govern
may be created to
address additional needs beyond what Secure
focuses on.
When a new Stage is added, and its Group has yet to be formed, we should:
devops::govern
and Govern
Secure
, which will be initially responsible for the new Stagedevops::govern
and devops::secure
categories.yml
and stages.yml
, listing the new Stage with the members of the existing responsible Group. Update _categories.erb
with the member name, if necessary.Once the first PM or EM is hired, a new Group for the Stage should be formed:
govern
. Each Group should have at least two backend engineers.Secure
on Secure and Govern
on Govern.stages.yml
to reflect the new Group and its members. Update _categories.erb
with the member name, if necessary.As the rest of the EM/PM's are hired, they take over that role for the new Group.
At times it may be necessary to transfer a stable-counterpart from one team to another. In cases where this team member's previous role will be backfilled, follow the Department Transfer Process. In cases where the role will not be backfilled (i.e. the role was shifted from one team to another), the following steps should be taken to ensure leaders in the relevant stages are informed and can help guide their teams through the changes in team member allocation:
As a PM, you must plan for the near term milestones (more detailed) as well as for the long term strategy (more broad), and everything in between. Considered as a spectrum, these form a nearsighted roadmap. This will enable you to efficiently communicate both internally and externally how the team is planning to deliver on the product vision.
Use calendar year (CY) dates for your issues, milestones, and labels to communicate timelines. Fiscal year (FY) does not translate well outside the company and roadmaps and vision pages are intended for external consumption. If you'd like to denote that an issue will be completed within a fiscal quarter use the month or GitLab release number for the last month in the fiscal quarter. E.g. use 12.4 (2018-10-22)
instead of FY20-Q3
. The issue can always be moved up in date and users/customers will seldom complain when functionality ships earlier than expected.
Creating a thoughtful direction for your section, stage, or category is a useful thought exercise that can help focus efforts, aid in prioritization, and get large groups of people on the same page. But beware of simply executing your long term plan. Our industry is incredibly dynamic, and we learn new things every day that can and should cause us to re-think our long term plans. Stay focused on creating value each and every milestone, and be quick to adjust your longer term plans as you learn more.
Documenting a Section, Stage, Group and Category direction is critical to communicating where we are heading and why to all of our stakeholders. This is especially important to the members of your Product Group. Establishing a direction for stakeholders (including team members) to participate in, and contribute to ensures there is a concrete connection to "Why" we are iterating and how it furthers GitLab's mission. Here are some of those connections:
As a Product Manager you can highlight these connections in:
Communicating this connection requires a multi-channel approach. We should strive to share and communication about the connection to our Direction warrants consistent reinforcement.
Section leaders are responsible for maintaining Direction pages that lay out the strategy and plan for their respective section and stages. The direction pages should include topics outlined in this template, which include:
A category strategy is required which should outline various information about the category including overall strategy, what's next, and the competitive landscape. The category strategy should be documented in a handbook page, which allows for version control of the category strategy as well as the ability to embed video assets. One of the most important pieces of information to include in the category strategy is a tangible next step or MVC in order to push the category up the category maturity curve.
When creating a category strategy, it's important to focus your time and attention on specific actions and future iterations. It's natural to want to spend significant effort predicting the future, but iteration is one of our primary values. Your category strategies should contain short paragraphs with lots of references to specific issues. Here is an example.
We use this category strategy template
as the outline for creating the handbook pages. If additional headings are needed you are empowered
to create and populate them in your category strategy. You must keep these categories in sync with categories.yml
and for
new categories.
For categories that have already shipped, and that have a marketing
product page, categories.yml
should link to the product page, and the product
page should then have a link to the category strategy (you can see an example for
GitLab Pages with a Strategy button here). You should also link
to your category strategy from your stage strategy page.
Category direction should be reviewed on a regular basis (at least monthly) by the responsible product
manager. To indicate the last time a category direction page was reviewed, please ensure pages
include Content Last Reviewed: yyyy-mm-dd
at the top of the category content. Update this date with every
review, even if other content on the direction page has not changed.
Inside of the categories.yml
file there are dates assigned for either achieved or anticipated maturity achievement. These should be kept inline with communicated dates for achievement and updated as required.
For each category, we track the improvements required to advance to the next level of maturity. These issues are indicated with an epic, and the planned feature set should be clearly visible from the corresponding category strategy page. e.g.:
The category epic should include:
Maturity plans adhering to the maturity framework are highly encouraged - but not required - for non-marketing categories.
For specifics of how the category strategy page should look, see the category strategy template.
In order to plan effectively around releases, as a PM you should have 3 months of detailed milestones scheduled at all times. The issues contained in these milestones are the ones you should be spending the most energy on (fleshing them out, adding detail, discussing, etc). These issues will go through a refinement period where Product, Engineering, UX, and other parties will discuss the proposal until a proper MVC proposal is reached (see Content of an MVC for more detail). Most of the communication should happen within the issue comments, but some may happen offline (such as via Slack). Ensure that any relevant information that arise as part of an offline conversation is added to the issue title and issue description. As a PM you must ensure that issues have enough detail added to them before they become actionable as part of an iteration.
These next milestones will also help planning for capacity with engineering and UX in order to commit to the contents of the next release.
For each milestone, the planning quads come together to scope and plan work for the group for the upcoming milestone. Planning begins asynchronously with the creation of the planning issue. The planning issue is the SSOT for communication and all resources that are needed to plan a successful milestone. There are many ways to achieve to plan a milestone that should be curated based on the needs of the team. Below are a few examples of planning issues from groups acorss R&D to aid you in creating one that works best for your team.
As you adapt your own issue, it is recommended you apply the label planning issue
to aid in tracking and to incorporate our Product Principles into the process.
Our ability to iterate quickly is a measure of our efficiency, but our effectiveness is just as critical. As a product manager you are critical to us not just working correctly, but working on the correct things. You do that by prioritizing appropriately. Your prioritization decisions will be enhanced if you maintain a sufficient understanding of the context in which you make them.
There is no limit to the amount of inputs you can utilize for making prioritization decisions. We've organized these mechanisms into three lists. One for those that primarily sense feedback from users, one that primarily senses feedback from buyers and another that senses internally generated feedback which could represent buyers or users. For new PMs consider these lists as guidance for places to ensure you are plugged in to maintain sufficient context.
We recently conducted a GTM and R&D sensing mechanism survey to get an understanding of how team members valued the sensing mechanisms listed below. We calculated this value by multiplying their responses (1-5) for how efficient they felt a sensing mechanism was by how their responses (1-4) for how effective they felt the sensing mechanism was. We've ranked the below lists by the average value from all respondents.
Each PM should be having regular conversations with their stage groups stable counterparts to discuss their strategy and plan. Share this discussion with the company via our GitLab Unfiltered YouTube channel. PMs should share their next three milestones, year-long plan, strategy, and relevant OKRs (with status) so everyone can contribute feedback.
Many of the sensing mechanisms described are directly relevant to individual product managers performing regular product group prioritization. There are also a set of unique sensing mechanisms that act as summaries for Product Leadership.
Refer to the Product Development Timeline for details on how Product works with UX and Engineering to schedule and work on issues in upcoming releases.
Product Managers assign milestones to issues to indicate when an issue is likely to be scheduled and worked on. As we consider more distant milestones, the certainty of the scope of their assigned issues and their implementation timelines is increasingly vague. In particular, issues may be moved to another project, disassembled, or merged with other issues over time as they bounce between different milestones.
The milestone of an issue can be changed at any moment. The current assigned milestone reflects the current planning, so if the plan changes, the milestone should be updated as soon as possible to reflect the changed plan. We make sure to do this ahead of starting work on a release. Capacity is discussed between the PMs and the engineering managers.
In general, closer-to-current-time milestones are assigned to issues that are higher priority. It's best to maintain prioritization of your groups issues using a fully prioritized issue board. The timing of prioritized items broken across releases reflects an approximate product direction, with more distant milestones reflecting increasing uncertainty.
In addition, we have two special milestones: Backlog
and Awaiting further demand
.
Product Managers assign these issues to milestones that they have reviewed and
make sense, but do not fit within the upcoming release milestones due to either
a lack of comparative urgency or because we have not yet seen enough user
demand to prioritize the item yet. The best way to demonstrate urgency on
either of these items is to vote on them and, if possible, add comments
explaining your use case and why this is important to you.
Recommendation for when to change 'Awaiting further demand': Consider the number of people who use, not just have access to, the area impacted by the issue. When you receive enough feedback to be equal to a percentage of the power users, it is likely to consider moving the issue forward. Often public feedback only comes from a small percentage of people using or evaluating a feature or product. There needs to be a balance between waiting too long and acting too fast. In addition, there may be a tendency for more negative feedback than positive feedback, remember that people are passionate enough to care about this issue and it should be taken constructively.
Recommendation when changing a previously planned issue to Backlog
: When moving
a previously planned issue to Backlog
, especially one planned for within the next release or two,
consider the message that this may be sending to parties that were interested in this feature.
In some cases, they may have been depending or planning upon the issue to be delivered around
the assigned milestone, and with the change to Backlog
that is now unlikely to occur. In these instances,
it is best to concisely explain the rationale behind the change in a comment, so
the community can understand and potentially respond with additional justification or
context. It is also encouraged to move the issue to the Backlog
as soon as it is clear that it will not be scheduled in the near future. This will help with understanding the change, as it will not seem like a last minute change.
Again, the milestone of an issue can be changed at any moment, including for both of these special milestones.
For a detailed timeline, see the product development timeline.
From time to time, there may be circumstances that change the ability for a team
to ship the features/issues they committed to at the beginning of the iteration. These steps also apply when an issue is broken into multiple issues.
When this happens, as a PM you must ensure the impacted issues and their milestones
are updated to reflect the new reality (for example, remove deliverable
tag, update milestone
, etc.). Additionally, notify your manager of the shift.
Our design system provides the means to work autonomously, without always needing UX insight and feedback. When problems can be solved using an already documented paradigm, you don't need to wait for UX approval to bring an issue to a reasonable state within a first iteration.
If lingering questions remain, subsequent iterations can address any shortcomings the feature might have.
As a product manager, you should carefully consider the costs and benefits when planning to introduce a breaking change. Breaking changes may heavily impact existing users, and it is your responsibility to minimize the negative effects.
If you want to introduce an urgent breaking change in a minor release (e.g. you need to provide support for a new feature that cannot be backward compatible), you have to consider how many users will be affected by the change, and whether the change can wait until the next major release instead.
If you evaluate that the impact on users is acceptable (e.g., you have evidence that the feature is not used significantly), and the change will allow many users to benefit of new features or to solve problems, follow this process:
#twitter
Slack channel#customer-success
and #sales
Slack channels#support_self-managed
and #support_gitlab-com
Slack channelsIteration is a core value of GitLab, and product management has a central role to play in it. Iteration should be apparent as we deliver new features in MVCs, but it has implications for discovery too. As solution validation can move much faster than delivery, we should aim to validate features before building them. At this point, the feature validated is likely way bigger than an MVC if we would build it. We should pay special attention as product managers to still aim at iterative delivery after a bigger feature-set got validated, as delivered features provide the final validation. For example, once a direction is validated, we can start the delivery by documentation. As product managers we should aim to iterate as part of solution validation, and while delivering already validated solutions too.
Here are several strategies for breaking features down into tiny changes that can be developed and released iteratively. This process will also help you critically evaluate if every facet of the design is actually necessary.
As part of design and discovery, you likely created a minimal user journey that contains sequential steps a user is going to take to “use” the feature you are building. Each of these should be separated. You can further by asking yourself these questions:
View, Create, Update, Remove and Delete are actions users take while interacting with software. These actions naturally provide lines along which you can split functionality into smaller features. By doing this, you prioritize the most important actions first. For example, users will likely need to be able to visually consume information before they can create, update, remove, or delete.
Often, the criteria for features are built on is implicit. It can help to use a test-driven development mindset where you write the tests and the outcomes you need from the software before building the software. Writing these tests can uncover the different criteria you need the development team to meet when building the new feature. Once you’ve outlined these tests, you may be able to use them to continue to break down the feature into smaller parts for each test. Here are a few examples:
Software often fails and can fail in different ways depending upon how it is architected. It is always best to provide the user with as much information as possible as to why something did not behave as expected. Creating and building different states to handle all possible errors and exceptions can easily be broken down into individual issues. Start by creating a generic error state to display when anything goes wrong, and then add on to handle different cases one by one. Remember to always make error messages useful, and add additional error messages as you identify new error states.
Breaking down a design into pieces that can be released iteratively is going to depend on what you are building. Here are a few helpful questions to guide that process:
Continuously improving the software we write is important. If we don't proactively work through technical debt and ux debt as we progress, we will end up spending more time and moving slower in the long run. However, it is important to strike the right balance between technical and ux debt and iteratively developing features. Here are some questions to consider:
For large projects, consider separating the announcement from the actual feature launch. By doing so, it can create more freedom to iterate during the customer rollout. For example, you could announce in advance to give customers ample notice, and then roll it out to new customers first, then to existing Free customers, then to existing paid customers. Or you could do the opposite, and roll it out to customers first, before announcing broadly, to ensure the user experience is great before making a marketing splash.
Sometimes the objective is to cut over from one experience, or one system, to another. When doing so, consider having four transition phases rather than a hard cutover. The phases are: 1) Old experience. 2) Run the old experience and new experience side-by-side, with the old experience the default, and the new experience is gradually rolled out to a subset of users. 3) Run them side-by-side, with the new experience the default for the majority, but the old experience is still available as a fallback in case of problems. 4) Deprecate the old experience and offer only the new experience. This strategy enables teams to have more flexibility and demonstrate more iteration in the rollout, with reduced risk.
When something is important, it is natural to want to launch it all at once to get to the end game faster. However, big bang style launches tend to need everything perfect before they can happen, which takes longer. With iteration you get feedback about all the things that aren't a problem and are done enough. It's better to launch in small increments, with a tight feedback loop, so that the majority of users have a great experience. This tends to speed up the overall timeline, rather than slow it down.
A Design Sprint, is a 5-day process used to answer critical business questions through design, prototyping and testing ideas with customers. This method allows us to reduce cycle time when coming up with a solution.
As an all-remote company we run Remote Design Sprints (RDS). Check out our guidelines for running an RDS to determine if it's the right approach for the problem at hand.
If you're faced with a very large or complex problem, and it's not clear how to most efficiently iterate towards the desired outcome, consider working with your engineers to build an experimental spike solution. This process is also sometimes referred to as a "technical evaluation." When conducting a spike, the goal is write as little code within the shortest possible timeframe to provide the level of information necessary the team needs to determine how to best proceed. At the end of the spike, code is usually discarded as the original goal was to learn, not build production-ready solutions. This process is particularly useful for major refactors and creating architecture blueprints.
When launching a feature that could be controversial or in which you want to get the audience's feedback, it is recommended to create a feedback issue.
Timeline:
Here are some examples of feedback issues:
Consider the following to improve iteration:
Issue reviews are an optional step in the product development flow that brings peer PMs in to help you hone your skills at iteration, clarity, and strategy. Keeping issues small and iterative is core to how GitLab maintains velocity. Writing a "small" issue is often (counterintuitively) more difficult than writing a bigger one, and understanding the entire strategy of how GitLab operates is a herculean task. Having a helping hand with these tasks is important to professional development, and it ensures that our entire product organization continues to improve.
You should consider requesting a review when:
*Note: If you're a new GitLab team member, you should request reviews of the first 3 issues you create. It will help familiarize you with what we're looking for in an iteration, get more comfortable with our process, and meet your fellow team members. After you've completed a few reviews, this track can be considered optional.
If you would like a peer to review one of your issues (or epics):
issue::needs review
label to your issueissue::reviewed
label and lets the original PM know that the review is complete.You can view all of the work happening in this track on this board.
Engaging directly with the community of users is an important part of a PM's job. We encourage participation and active response alongside GitLab's Community Relations team.
A general list of conferences the company is participating in can be found on our corporate marketing project.
There are a few notable conferences that we would typically always send PMs to:
If you're interested in attending, check out the issue in the corporate marketing site and volunteer there, or reach out to your manager if you don't see it listed yet.
A stakeholder, or stable counterpart, is someone that is outside of your direct team who meets one or more of the following:
Examples of stakeholders include Leadership, Sales, Marketing, Customer Support, and Customer Success. You may have stakeholders in any area of GitLab depending on your focus area and the specific issue. Stakeholders are also present outside of GitLab, for example, when a feature is being developed for a specific customer or set of customers. If you're not sure who the stakeholder is to collaborate with or keep informed, visit product sections, stages, groups, and categories.
Stakeholder collaboration and feedback is a critical competitive advantage here at GitLab. To ensure this is possible, and facilitate collaboration, you should maintain an updated single source of truth (SSOT) of your stage direction, category strategies, and plan, at all times. This equips anyone who wants to contribute to your stage’s product direction with the latest information in order to effectively collaborate. Some sections and teams use the scheduled Direction Update issue template to remind themselves of this task.
Actively and regularly reach out to stakeholders. Encourage them to view and collaborate on these artifacts via these (non-exhaustive) opportunities:
Here is some guidance for new PMs to ensure your stage direction, category strategies and plan are up-to-date and visible to critical stakeholders:
It's important to get direct feedback from our customers on things we've built, are building, or should be building. Some opportunities to do that will arise during sales support meetings. As a PM you should also have dedicated customer discovery meetings or continuous interviews with customers and prospects to better understand their pain points.
As a PM you should facilitate opportunities for your engineering group to hear directly from customers too. Try to schedule customer meetings at times that are friendly to your group, invite them, and send them the recording and notes. If you're looking for other ways to engage with customers here is a video on finding, preparing for, and navigating Customer Calls as a Product Manager at GitLab.
Before the meeting, ensure the Sales lead on the account has provided you with sufficient background documentation to ensure a customer doesn't have to repeat information they've already provided to GitLab.
During the meeting, spend most of your time listening and obtaining information. It's not your job to sell GitLab, but it should be obvious when it's the time to give more information about our products.
For message consistency purposes, utilize the Value Drivers framework when posing questions and soliciting information.
After the meeting:
Customer discovery meetings aren't UX Research. Target them to broad-based needs and plan tradeoff discussions, not specific feature review. There are two primary techniques for targeting those topics:
Follow the below guidance to prepare and conduct Customer Discovery Meetings:
Set up a meeting:
During the meeting:
After the meeting:
You can find some additional guidance on conducting Customer Discovery Meetings from these resources:
PMs should also feel free to collect and evaluate customer feedback independently. Looking at existing research can yield helpful themes as well as potential customers to contact. You can use the following techniques to source customers directly:
GitLab Solution Architects know our customers the best, especially from a technical perspective.
GitLab Issues customers will often comments on issues, especially when the problem described by the issue is a problem they are experiencing firsthand. The best strategy is to capture their feedback directly on the issue, however, there are times when this is not possible or simply doesn't happen. You can find alternative contact info by clicking on the user's handle to see their GitLab user page; this page often includes contact information such as Twitter or LinkedIn. Another option is to directly mention users in issues to engage async. In popular issues you can just leave a general comment that you're looking for people to interview and many will often volunteer.
Customer Issues Prioritization Dashboards: The customer issues prioritization framework aggregates customer data with the issues and epics that they have requested. When viewing the dashboard, double click on the issue or epic of interest within the "priority score by noteable" table then scroll down to "QA Table - User request weighting by customer" to see the specific customers that are interested in the issue or epic.
GitLab.com Broadcast Messages Broadcast Messaging is a great tool for acquiring customer feedback from within the product. You can leverage this workflow to use broadcast messaging.
GitLab Sales and Customer Success You can ask for help in Slack customer success channel or join the Field Sales Team Call and the All CS Team Call to present a specific request via the Zoom call.
Customer Success Managers (CSM) If a customer has a dedicated CSM, they may also have a regular meeting with a CSM. These meetings are a great opportunity to spend 15 minutes getting high-level feedback on an idea or problem. In Salesforce, CSMs are listed in the Customer Success section in the customer's account information. CSMs are also very familiar with the feature requests submitted by their customers and can help identify customers that may be interested in the feature you are working on.
Zendesk is a great tool to find users who are actively making use of a feature and either came across a question or an issue. Users who've had recent challenges using the product really appreciate PMs taking the time to learn from their experience. This establishes that we are willing to listen to users, even if they are not having a great experience. This is also a great opportunity to discuss the roadmap and provide context so that users understand what we are going to improve. The best way to request a chat is through the support ticket; however, you can also click on the user that initiated the interaction and their contact information will display on the left hand side panel.
If you don't have a Zendesk account, see how to request a light agent Zendesk account.
You can use Zendesk's trigger feature to receive email alerts when specific keywords relevant to your product area are mentioned in a support ticket. Additionally, it is possible to create a simple dashboard that lists all the currently active support tickets that match the trigger. Reach out in #support_escalations to receive some help in setting this up.
Social Media can also be effective. If your personal account has a reasonable number of connections/followers, you can post your desire to connect with users on a specific question directly. When posting, remember to include the subject you want to discuss as well as how people can reach out. You can also reach out to the #social-media channel to have your tweet retweeted by the @gitlab account.
If you want to reach a wider audience, consider asking a community advocate to re-post using the official GitLab account for the relevant platform.
You can reach advocates on the #community-advocates
Slack channel.
You can also reach out to authors of articles related to tech your team is working on, via various publications such as Medium. A clear and brief email via the publication website or LinkedIn is a good way to engage.
You're able to request a LinkedIn Recruiter license. This Unfiltered video and slide deck provide an overview on how to use LinkedIn Recruiter to source participants for your study.
If you've tried these tactics and are still having challenges getting the customer feedback you need, connect with your manager for support and then consider leveraging the UX Research team. Additionally, you can connect with Product Operations directly or by attending Product Operations Office Hours for troubleshooting support.
Non-users are often more important than GitLab users. They can provide the necessary critical view to come up with ideas that might turn them into GitLab users in the end. The best non-users are the ones who don't even plan on switching to GitLab. You can reach these people at local meetups, conferences or online groups like, Hacker News. In every such case, you should not try to interview the user on spot, instead organize a separate meeting where nobody will be distracted, and both of you can arrive prepared.
One specific, recurring opportunity to get direct feedback from highly engaged customers is the GitLab DevOps Customer Advisory Board. You may be asked by the CAB to present your stage at these meetings. Here are some guidelines when doing so:
When someone requests a particular feature, it is the duty of the PM to investigate and understand the need for this change. This means you focus on what is the problem that the proposed solution tries to solve. Doing this often allows you to find that:
Do not take a feature request and just implement it. It is your job to find the underlying use case and address that in an elegant way that is orthogonal to existing functionality.
This prevents us from building an overly complex application.
Take this into consideration even when getting feedback or requests from colleagues. As a PM you are ultimately responsible for the quality of the solutions you ship, make sure they're the (first iteration of the) best possible solution.
Broadcast Messaging is a great tool for acquiring user feedback from within the product. This tool allows for general, one-time, important announcements or for users to be recruited during or after interacting with specific workflows within the product. Currently, broadcast messaging can be targeted by URL, and user information can be passed in order to personalize the message as well as the response.
How to use Broadcast Messaging:
All broadcast messaging efforts must follow all guidelines in order to be deployed to GitLab.com. Create an issue in the Gitlab.com/Product project using the Broadcast Messaging template and assign it to Product Operations @fseifoddini
and @brhea
. Product Operations will use In App Messaging board to prioritize all messages in queue and in flight.
See issue template for usage guidelines. If the message requires a group to do work (for a banner message for instance) you may want to create an issue in the gitlab/gitlab-org
project for better visibility.
When someone posts information in the #competition
channel that warrants
creating an issue and/or a change in features.yml
, follow this
procedure:
I'm documenting this
features.yml
Rejecting a feature request or a merge request is not an easy thing. People can feel quite protective of their ideas. They might have invested a lot of time and energy in writing those ideas. You can be tempted to accept a feature only to avoid hurting the people who thought of it. Even Worse, if you reject an idea too harshly, you might discourage other people to contribute, which is something we should strive to avoid.
However, as the number of issues and merge requests grows incessantly, we should be diligent about rejecting features we are sure will not work out. It's better for everyone: for the product team, so we don't maintain a huge backlog of things we will never do anyway, and for the users who won't have to wait for our feedback indefinitely.
Note: it's fine to not respond to issues that we think have potential until they gather momentum.
Feature requests and merge requests can be rejected for the following reasons:
Don't forget to thank the authors for the time and effort taken to submit the feature request/merge request. In all cases and without exception, you should be nice and polite when interacting with users and customers.
You may want to interview a specific account because they are exhibiting atypical usage patterns or behaviors. In this case, request Support to contact GitLab.com user(s) on your behalf.
If it is the weekend, and the contact request is urgent as a result of an action that might affect a users' usage of GitLab, page the CMOC
One of the primary artifacts of the validation track is the Opportunity Canvas. The Opportunity Canvas introduces a lean product management philosophy to the validation track by quickly iterating on level of confidence, hypotheses, and lessons learned as the document evolves. At completion, it serves as a concise set of knowledge which can be transferred to the relevant issues and epics to aid in understanding user pain, business value, the constraints to a particular problem statement and rationale for prioritization. Just as valuable as a validated Opportunity Canvas is an invalidated one. The tool is also useful for quickly invalidating ideas. A quickly invalidated problem is often more valuable than a slowly validated one.
Please note that an opportunity canvas is not required for product functionality or problems that already have well-defined jobs to be done (JTBD). For situations where we already have a strong understanding of the problem and its solution, it is appropriate to skip the opportunity canvas and proceed directly to solution validation. It might be worth using the opportunity canvas template for existing features in the product to test assumptions and current thinking, although not required.
As a product with a significant breadth, opportunity canvases serve as a great tool to compare and prioritize multiple, competing product directions. It is as important what we do not build as what we build. An opportunity canvas review should preferably present 2-4 canvases and the review might be about validating the prioritization of the different directions. As canvases are being prepared, feel free to drop some of the opportunities without ever reviewing them with product leaders, you can still reference them during a review if needed.
Reviewing opportunity canvases with leadership provides you with an opportunity to get early feedback and alignment on your ideas. To schedule a review:
References:
Opportunity Canvases are a great assessment for ill-defined or poorly understood problems our customers are experiencing that may result in net new features. As noted previously, opportunity canvases are helpful for existing features, except they are tailored for new feature development which is where the Product-Opportunity-Opportunity-Canvas-Lite
issue template delivers. This template offers a lightweight approach to quickly identify the customer problem, business case, and feature plan in a convenient issue. The steps to use the template are outlined in the Instructions section and for clarity, one would create this issue template for an existing feature they are interested in expanding. For example, this template would be great to use if you are evaluating the opportunity to add a third or fourth iteration to an MVC. This issue should leverage already available resources and be used to collate details to then surface to leadership for review. Once you fill out the template, you will assign to the parties identified in the issue and you can always post in the #product
channel for visibility.
Some members of the Product Team participate in a weekly opportunity review issue (note - issues are confidential due to discussion of customers and prospects). The intent of this weekly review is to better understand the top opportunities in our Sales Pipeline and ensure coordinated assistance from across the product group as well as share key-takeaways with the broader product team.
To participate in this process propose an MR adding yourself to the weekly top opportunity review issue template.
Part of being a product manager at GitLab is maintaining engagement with analysts, culminating in various analyst reports that are applicable to your stage. In order to ensure that this is successful and our products are rated correctly in the analyst scorecards, we follow a few guidelines:
It's important to be closely connected with your product marketing partner, since they own the overall engagement. That said, product has a key role to play and should be in the driver's seat for putting your stage's best foot forward in the responses/discussions.
Product managers should take advantage of the internal customers that their stage may have, and use them to better understand what they are really using, what they need and what they think is important to have in order to replace other products and use GitLab for all their flows.
We want to meet with our internal customers on a regular basis, setting up recurring calls (e.g., every two weeks) and to invite them to share their feedback.
This is a mutual collaboration, so we also want to keep them up to date with the new features that we release, and help them to adopt all our own features.
Each quarter we reach out to Paid NPS (PNPS) responders who opted-in to speak with us. This is a fantastic opportunity to build bridges to users and for product managers to get direct feedback for their specific product area. When we speak to users and customers directly during this workflow, we must be mindful of Product Legal guidance and the [SAFE framework](/handbook/legal/safe-framework/, just as we would be with any other documentation or communication we do as product managers.
Note: GitLab CSMs will also follow the process above so please be mindful to coordinate with them if they reach out or if they've already signed up for a user. Users should never be contacted by more than one GitLab team member. Users should never be raeched out to more than twice if they do not respond to outreach email.
Example email copy:
Hello, My name is X and I'm the PM for X at GitLab. Thank you for giving us the opportunity to follow up on your response to our recent survey.
I would be very interested in speaking further about some of the points you raised in your survey response. Would you be willing to do a 30 minute videoconference call to give us some more detailed feedback on your experience using GitLab? You'd be able to schedule the call at a time convenient to you.
Schedule a time for the call using this link: https://calendly.com/yourname/30min
Thank you for your feedback and let me know if you have any questions.
Best, Your name
Copy for two extra questions in Calendly invite:
To make sure we correctly represent what you say in any followup issues or discussions, we would like to record this conversation. Please indicate if you give permission to record this conversation.
Yes, you may record our conversation.
No, you MAY NOT record our conversation.
At GitLab, we value transparency. We would love to share the recording of conversation publicly on GitLab. Please indicate whether you give your permission for the recording to be shared on GitLab.
Yes, you may share the recording publicly on GitLab.
No, you MAY NOT share the recording publicly on GitLab.
PNPS improvement
and link them to the corresponding quarter PNPS responder outreach issueNote: It's important to tag your PNPS related issues to help tracking/reporting such as the improvement slides in Product Key Reviews.
Every Product Manager is responsible for the user experience and cost profile of their product area regardless of how the application is hosted (self-managed or gitlab.com). If a feature is unsustainable from a cost standpoint, that can erode the margins of our SaaS business while driving up the total cost of ownership for self-managed customers. If a feature is slow, it can impact the satisfaction of our users and potentially others on the platform.
There are a few questions a Product Manager should ask when thinking about their features:
These items do not all need to be implemented in an MVC, though potential costs and application limits should be considered for deployment on GitLab.com.
Product Managers should also regularly assess the performance and cost of features and experiences that they are incrementally improving. While the MVC of the feature may be efficient, a few iterations may increase the cost profile.
There are a few different tools PM's can utilize to understand the operational costs of their features. Some of these are maintained by Infrastructure, based on the operational data of GitLab.com. Others tools, like service ping, can be utilized to better understand the costs of our self-managed users. Ultimately, each product group is responsible for ensuring they have the data needed to understand and optimize costs.
You should strive to maintain an updated Epic roadmap for your group (here's an example). This can take considerable effort but doing so will ensure your issues are well organized according to the principles laid out below. You should also maintain a roadmap in your direction page that serves as the SSOT. There are additional guidelines in the Managing Your Product Direction Section.
As part of our planning process it is important that you maintain a prioritized
issue board for your group.
It's customary to call these boards STAGE - GROUP - Planning
and to configure them to filter
to all issues with your group label and with each milestone as a column (here's an example).
As the DRI for milestone prioritization it is your responsibility to ensure that all items on your Planning board are scheduled to a milestone and are prioritized both within and across milestones. This means the lowest priority in the current milestone would generally be the top priority in the next milestone.
In this regard your planning exercise is a complete prioritization of the near term issues.
We have 3 templates PMs can leverage to create issues for features:
The goal of these different templates is to provide an efficient way of creating new issues and improve cross team collaboration. When appropriate, these templates may be leveraged for creating epic descriptions as well.
Issues related to the same feature should be bundled together into an into an epic.
Features may include multiple issues even if we are just targeting an MVC. In this case, we should use an epic to collect all of them in one single place. This epic should have a start and an end date, and it should not span more than 3 releases, otherwise we run the risk of having epics drag on indefinitely.
When these issues are finished and closed, we should have successfully achieved the
epic's goal. A good example of this kind of epic is the first iteration on a new
feature. Epics representing MVCs should clearly state MVC
at the end of the
title and should have a parent epic relationship towards a category strategy or a meta epic.
We use epics to track many issues related to a specific topic, even if there isn't a specific timeline for shipping. These epics should be marked as ~meta, they may not have a specific start or end date, and may contain single iteration epics.
This is useful to have an overview of the future so participants and observers can understand how the pieces fit together. It can be really useful to understand the context of where we think we’re going so we can do a good job with the MVC.
Also, it conveys confidence internally and externally that we understand what we need to do when the MVC is particularly minimal. But don't get too caught up in long-term epics as you risk making proposals too complex, and overrepresenting certainty in the solution. Don't work too far in the future; we'll know better once we ship something small.
When creating a meta epic, there's a natural tendency to capture it as quickly as possible and then move on, but we must always strive to create a more specific epic for the first iteration, or the next iteration if something already exists. Describing an MVC means that the community can contribute more easily. Also, after distilling things down to a first iteration, you might realize it’s a lot easier than you thought, and prioritize it earlier. You can have an MVC without a meta issue. But you can't have a meta issue without an MVC.
We use issues to define narrowly scoped items of work to be done. Issues can focus on a variety of different topics: UX problems, implementation requirements, tech debt, bugs, etc. A good guideline for experience-related issues is that they should address no more than one user story. If an issue includes multiple user stories, then it is likely an epic.
In GitLab itself, there are short definitions of feature (internal link) and bug (internal link) which are displayed when hovering over the labels. This page provides context and elaborates on these definitions.
GitLab's Iteration value means we often make small improvements to the product. We use this to get feedback on what features are important to people. It is not a bug when GitLab is missing functionality.
You should create an issue if:
You should consider not creating an issue when:
GitLab product issues will often have one of the three type labels ~"type::bug"
, ~"type::feature"
, or ~"type::maintenance"
. Features can be further clarified as:
~feature::addition
- Refers to the first MVC that gives GitLab users a foundation of new capabilities that were previously unavailable. For example, these issues together helped create the first MVC for our Reviewer feature:
~feature::enhancement
- Refers to GitLab user-facing improvements that refine the initial MVC to make it more useful and usable. For example, these issues enhance the existing Reviewer feature:
There are also other higher precedence labels, as documented by Engineering Metrics.
When considering whether an issue is a missing feature or a bug, refer to the definition of an MVC and Definition of Done for general guidance that works well in most cases. If in doubt - think from our customer's perspective - not our internal one - focus on whether it is valuable for our customers and should be prioritized. In the long run it won't matter whether we called it a bug or a feature -what would matter is if we focused on the right things to deliver to our users. Remember that bug fixes can be fast and iterative. See an example where the Package team found, researched, designed, implemented, and merged a small fix in 24 hours, while also planning a longer-term fix to follow.
Competitive Content Issues are used to document and track competitive analysis.
Oftentimes, different reports or assets from Analyst Relations, the Market, or Product Marketing appear with incredible insights. It is important to capture those findings and share key takeaways from competitive analysis across Product, Design, Engineering, and Product Marketing.
The process for documenting takeaways is as follows:
Product-Competitive-Content
Issue TemplateThis issue template will help share and create single place for people to view competitive content.
Feature issues identify work to support the implementation of a feature and/or results in an improvement in the user experience.
~"type::feature"
.~"type::feature"
.~"Seeking community contributions"
.Bug issues report undesirable or incorrect behavior, such as:
~"type::bug"
and ~"bug::vulnerability"
.severity::1
.When an issue is open, this signals that we're intending or considering implementing that change. It's important to close issues that we're not considering implementing in the near future, so that we avoid creating uncertainty with customers and colleagues.
When closing an issue for this reason, make sure to update the issue body and leave a comment explaining why the issue is being closed. Issues can be reopened if we change our stance on them.
Sometimes, you'll end up prioritizing an issue that was created a significant time ago. When you move these issues into an upcoming milestone, look closely to see if they need to be groomed again, so that they include current information. A good rule is to review any issue you didn't personally create or that has been open longer than 3 months.
To clearly communicate to our stakeholders what we are going to do, it's critical that you not only provide the positive view (what we will do), but also articulate the negative view (what we will not do). While this should be communicated in stage and category strategies, it starts with issues:
As a Product Manager you should close issues that are:
When closing an issue, leave a comment explaining why you're closing the issue, and link to anything of relevance (the other duplicate, the original feature that this is an iteration on, etc).
The 'not the next iteration' issues are the most important ones to resolve. It is very easy to create a large, comprehensive change with meta issues and lots of improvements, but it is essential that we iterate and ship the minimal viable change. We have to ship the iteration, wait for it to be used, and ask for feedback. As a product manager, you must think about the bigger picture when making a proposal to improve the product. It's important to avoid writing this down as a bunch of issues. Come up with a direction, but only record the first step. This way we can preserve the efficiency of our value of iteration. Closing issues whenever possible is an important part of your job and helps to keep a clear view of what is next. Consider using the following template to close an issue:
Closing this because XXX is something we should do first. When that feature is finished, we can learn from observing it in use. If we learn that this issue is still relevant, we can then reopen it. See /handbook/product/product-processes/#issues for more detail about this policy.
When relevant, you can include a wireframe in your issue to illustrate what you're thinking about. But you don't need to create wireframes on your own; our UX team has a designer embedded in every stage group who will help you figure out how to solve the problem you're addressing. They should actively participate in your planning processes, so your request won't be a surprise.
If you do want to create a wireframe, we like Balsamiq for its simplicity and low fidelity. If you are struggling for inspiration, you can also paste screenshots of similar features in other products.
A general guideline is that an issue should only span one release. If we know an issue is going to span multiple releases, split it up into multiple issues.
Epic issues are the exception to this rule, but should be kept to a minimum and only serve to guide broader subjects, not a single feature over multiple releases. This is to make sure we stick to our values of the minimally viable change. This means that feature issues should be closed after the first iteration whenever possible. We'll know more in the future and this keeps any remaining issues short and actionable.
In addition, it's often a good idea to throw away an original plan and start fresh. Try to do this more often, even more than you're comfortable with. Close the issue and create a new one.
When you don't have any specific tasks assigned, you should work on issues that are
labeled Product work
, in both the EE and CE projects. These are issues that need
our attention the most.
When performing the role of Life Support PM only the following are expected:
Some discouraged responsibilities:
In order to avoid suffering in silence, encourage growth in your trade and foster collaboration and understanding across groups and stages we have a Product Buddy System whereby we designate pairs of Product Managers. These pairs should consider working together on:
The pairing for this buddy system is defined in the Product Buddy System Google Doc (internal only).
Product Managers are fully empowered to define the what and priority of what they are building. Making PMs the DRI enables our entire company to iterate faster and drive more value for users. There are a few instances where it is helpful to have an outside review of your scheduled issues. Those are:
How and when these reviews happen is dependent on the Product section. The Ops section section utilizes an MVC & New Config issue that is automatically created each month to remind and encourage additional review of upcoming issues that are MVCs or introduce new configuration.
All other sections perform this as part of the refinement process on an ad-hoc (when and as needed) basis and do not utilize the automated issue.
As a Product Manager you may need to make a decision on whether GitLab should engineer a solution to a particular problem, or use off the shelf software to address the need.
First, consider whether our users share a similar need and if it's part of GitLab's scope. If so, strongly consider building as a feature in GitLab:
If the need is specific to GitLab, and will not be built into the product, consider a few guidelines:
If after evaluating these considerations buying a commercial solution is the best path forward:
vendor_contracts
template, ensure the justification above is included in the request.When considering open source software in build vs. "buy" decisions we utilize the following general criteria to decide whether to integrate a piece of software:
Please see Product Intelligence Guide
In order to better understand the perceived performance of GitLab, there is a synthetic page load performance testing framework available based on sitespeed.io.
A Grafana dashboard is available for each stage, tracking the Largest Contentful Paint and first/last visual change times. These metrics together provide high-level insight into the experience our users have when interacting with these pages.
The Grafana dashboards are managed using grafonnet, making it easy to add additional pages and charts.
Testing a new set of pages requires just 2 steps:
[Group]_[Feature]_[Detail]
. The alias needs to be one word, an example MR is here. Note the authenticated user account does not have any special permissions, it is simply logged in.productCommon.pageDetail
. The call arguments are Chart Title
, Alias
from above, and the tested URL
. Ensure the JSON formatting is correct, the easiest way is to simply copy/paste from another line. A sample MR is available here.Assign both MR's to a maintainer. After they are merged, the stage's Grafana dashboard will be automatically updated. A video walkthrough is available as well.
Product Management is the DRI for defining and ensuring the attainment of the Service Level Objectives for GitLab. The defined SLO for any service on GitLab SaaS must be achievable technically, and so the final SLO targets must be agreed upon by the engineering and SRE teams. Additionally, expertise to deliver on the target SLO's rests with the engineering and SRE teams.
As we continue to invest in our SaaS first strategy, we must define and measure service levels from the customer's perspective. Therefore, product management is responsible for understanding the customer and market dynamics, the cost and value impact of SLO targets. The plan is to continue to mature this process and provide a repeatable framework for analyzing the inputs into an SLO target.
The table below will catalog the list of GitLab.com services, the current SLO definition, and the product management DRI. The SLO targets below are subject to change per the direction of the DRI.
GitLab.com Service | Product Management DRI | SLO Apdex Definition | SLO Apdex Target | SLO Goal |
---|---|---|---|---|
CI Runners | Verify-Runner PM @deastman | The service level indicators used to calculate the Runner Apdex score are (1) the job polling operations from runners via the workhouse HTTP interface and (2) the shared runner queues on GitLab.com, i.e. the % of CI jobs that are picked by for servicing by a GitLab SaaS Shared Runner within 60 seconds | 99.95% | The goal for FY22 Q3 is to maintain a monthly SLO score of 99.95% or higher. |
Container Registry | Package PM @trizzi | Apdex for request latency (time to serve) read requests to the container registry. Thresholds are satisfied when under .5 seconds and tolerated under 1 second. Further details available here. |
99% | |
Package Registry | Package PM @trizzi | Error rate for package read requests to the package registry. The service is available when less than 0.5% of requests return a 5XX error status response. | 99.5% |
Company-wide guidelines on the Talent Assessment can be found here. The company timeline for the process remains SSOT, the guidelines are below are meant to:
We will be reviewing outliers for Performance/Growth Potential and anyone identified as Key Talent for calibration this cycle. Formal calibration will take place with the Director+ levels. The thought process around who qualifies as an "outlier" for Performance and Growth Potential is outlined here.
Calibration and assessment are two different steps in the process. The assessment phase is the process of assessing each team member to determine their Performance and Growth, whereas the calibration phase (occurring after initial assessments are made) is when management calibrates across the stage/org/level/etc. to discuss and align on assessments. Every team member should be assessed and have supporting points to justify those assessments - but to make calibration sessions more focused and scalable, we focus on outliers.
For Product specifically, we will calibrate:
It's important to note that while these will be our focus areas for calibration sessions, leaders should feel free to raise any team member's assessment up for discussions if they have any questions or concerns. Calibrating outliers is not a limitation, but rather a structural adjustment to ensure this process is scalable and focused.
Note: If individual teams want to calibrate every individual, they have the ability to do this/organize/structure separately, but the due dates remain in place across the division to ensure we have enough time to review and calibrate at the various levels in the company.
In addition to the calibration session pre work on the Talent Assessment page, we ask that you complete the following:
Directors should conduct sub-department/section level calibration sessions ahead of the division-wide Product calibration sessions. In addition to calibrating on initial assessments, Directors should review how their respective teams assessments compare with the expected distribution ahead of the department-wide calibration session. If there are slight deviations at the sub-department/section level from the expected distribution that is merited, the Director should provide a rationale and be prepared to discuss it during division-level calibration. The expectation is that the division overall falls within the expected distribution.
Performance and Growth Potential notes need to be added to the session agenda doc for each team member at least 3 business days before the synchronous calibration session.
Managers should include 2-3 supporting points for each team member for the assessment under each section in the agenda doc notes to help support the “why” behind the assessment. Note: The overviews in the agenda document for calibration are meant to provide enough of an overview so peers have an understanding of the "why", while simultaneously not overwhelming with information and decreasing efficiency of the session. Please limit to 2-3 supporting points per team member.
Key Talent assessment need to be completed and added to the session agenda doc at least 3 business days before the live calibration session.
Calibration session attendees will be organized by leadership layer within the Product division.
Below is an overview of our calibration structure and timeline for the FY'23 Q4 Talent Assessment cycle. At a high level, the week of November 7th is the week that section and sub-department leaders should calibrate their respective organizations ahead of the commencement of the Product division wide calibration sessions, which will begin the week of November 14th.
Session Number | Attendees | Calibration Level Focus | Session Date | Duration |
---|---|---|---|---|
Session 1 | Section/Sub-Department (Managers, Sr Mgrs, GMP, and Director/Sr Director; VP and PBP optional) | IC | Week of November 7-11 | Leader discretion |
Session 2 | Directors+ in the Product division + PBP | Senior Manager/Manager/GMP/IC | Week of November 14 | 1.5 hours |
Session 3 | Directors+ in the Product division + PBP | Senior Manager/Manager/GMP/IC | Week of November 14 | 1.5 hours |
Session 4 | VP, Product; VP, UX; PBP | Product division Directors | Week of November 14 | 1.5 hours |
Session 5 | VP, Product and PBP | All of the VP, Product's direct reports + finalize division-wide | November 28 | 1.5 hours |
The SSOT timeline for the upcoming Annual Compensation Review can be found here. Below you will find additional dates specific to the Product division to ensure all levels have time to review as we move through the process.
We have added high level span of control guidance to our Product leadership job families. We understand that different parts of the organization will require different structures and different reporting lines, so it is important to note that these are guidelines, not requirements.
The primary goals of including span of control guidance are: