diff --git a/.github/ISSUE_TEMPLATE/story.md b/.github/ISSUE_TEMPLATE/story.md index 059ccd194c5b..a605959a7c4d 100644 --- a/.github/ISSUE_TEMPLATE/story.md +++ b/.github/ISSUE_TEMPLATE/story.md @@ -48,11 +48,13 @@ What else should contributors [keep in mind](https://fleetdm.com/handbook/compan - [ ] Permissions changes: TODO - [ ] Changes to paid features or tiers: TODO - [ ] Transparency changes: TODO +- [ ] First draft of test plan added - [ ] Other reference documentation changes: TODO - [ ] Once shipped, requester has been notified - [ ] Once shipped, dogfooding issue has been filed ### Engineering +- [ ] Test plan is finalized - [ ] Feature guide changes: TODO - [ ] Database schema migrations: TODO - [ ] Load testing: TODO @@ -67,9 +69,9 @@ What else should contributors [keep in mind](https://fleetdm.com/handbook/compan - Risk level: Low / High TODO - Risk description: TODO -### Manual testing steps +### Test plan 1. Step 1 @@ -85,5 +87,5 @@ Add detailed manual testing steps for all affected user roles. ### Confirmation -1. [ ] Engineer (@____): Added comment to user story confirming successful completion of QA. -2. [ ] QA (@____): Added comment to user story confirming successful completion of QA. +1. [ ] Engineer: Added comment to user story confirming successful completion of test plan. +2. [ ] QA: Added comment to user story confirming successful completion of test plan. diff --git a/handbook/company/product-groups.md b/handbook/company/product-groups.md index f3004bf4a20b..326f5458e214 100644 --- a/handbook/company/product-groups.md +++ b/handbook/company/product-groups.md @@ -168,9 +168,11 @@ The DRI for defining and drafting issues for a product group is the product mana A user story is considered ready for implementation once: - [ ] User story [issue created](https://github.com/fleetdm/fleet/issues/new/choose) -- [ ] [Product group](https://fleetdm.com/handbook/company/product-groups) label added (e.g. `#g-endpoint-ops`, `#g-mdm`) +- [ ] [Product group](https://fleetdm.com/handbook/company/product-groups) label added (e.g. `#g-mdm`, `#g-orchestration`, `#g-software`) - [ ] Changes [specified](https://fleetdm.com/handbook/company/development-groups#drafting) and [designed](https://fleetdm.com/handbook/company/why-this-way#why-do-we-use-a-wireframe-first-approach) - [ ] [Designs revised and settled](#design-reviews) +- [ ] Reviewed and approved during [weekly user story review](#user-story-review) +- [ ] [All checklists are complete](#defining-done) - [ ] [Estimated](https://fleetdm.com/handbook/company/why-this-way#why-scrum) - [ ] [Scheduled](https://fleetdm.com/handbook/company/why-this-way#why-a-three-week-cadence) for development @@ -195,25 +197,13 @@ User stories are small and independently valuable. #### Defining "done" -To successfully deliver a user story, the people working on it need to know what "done" means. +To successfully deliver a user story, the people working on it need to know what "done" means. -Since the goal of a user story is to implement certain changes to the product, the "definition of done" is written and maintained by the product manager. But ultimately, this "definition of done" involves everyone in the product group. We all collectively rely on accuracy of estimations, astuteness of designs, and cohesiveness of changes envisioned in order to deliver on time and without fuss. +Every user story has a product and engineering checklist that is completed before the user story is estimated. This populates the user story with the requirements, wireframes, and test plan necessary for the product group to effectively specify, estimate, implement, and test the change. The Product Designer is the DRI for completing the product checklist, and the Engineering Manager (EM) is the DRI for completing the engineering checklist. -Things to consider when writing the "definition of done" for a user story: -- **Design changes:** Does this story include changes to the user interface, or to how the CLI is used? If so, those designs [will need to reviewed and revised](https://fleetdm.com/handbook/company/why-this-way#why-do-we-use-a-wireframe-first-approach) prior to estimation and before code is written. -- **Database schema migrations:** Does this story require changes to the database schema and need schema migrations? If so, those migrations will need to be written as part of the changes, and additional quality assurance will be required. -- **Out-of-date docs:** How should [Fleet's documentation](https://fleetdm.com/docs) and [articles](https://fleetdm.com/articles) be updated to reflect the changes included in this user story? - - **REST API:** If the Fleet API is changing, then the [REST API docs](https://fleetdm.com/docs/using-fleet/rest-api) will need to be updated. - - **Configuration changes:** If this user story includes any changes to the way Fleet is configured, then the server configuration reference will need to be updated. - - **Telemetry schema:** If osquery-compatible tables are changing as part of this user story, then the [telemetry data model reference](https://fleetdm.com/tables) will need to be updated. - - **Articles and guides:** If an article needs to be updated, make sure to also change the "publishedOn" meta tag to the date of the edit to show visitors that the information is fresh and authoritative. - - **Other content:** What keywords should we [search for](https://github.com/fleetdm/fleet/search?q=path%3A%2Fdocs%2F+path%3A%2Farticles%2F+path%3A%2Fschema+sso&type=) to locate doc pages and articles that need updates? List these and any other aspects/gotchas the product group should make sure are covered by the documentation. -- **Changes to paid features or tiers:** Does this user story add or change any paid features, or modify features' tiers? If so, describe the changes that should be made to the [pricing page](https://fleetdm.com/pricing), and make sure that code for any non-free features lives in the `ee/` directory. -- **Semantic versioning:** Does this change introduce breaking changes to Fleet's REST API or CLI usage? If so, then we need to either figure out a crafty way to maintain backwards compatibility, or discuss a major version release with the CTO (`#help-engineering` and mention `@lukeheath`). -- **Scope transparency:** Does this change the scope of access that Fleet has on end user devices? If so, describe this user story so that it includes the edits necessary to the [transparency guide](https://fleetdm.com/transparency). -- **Measurement?:** User stories are small changes that are best served by being released as quickly as possible in order to get real world feedback, whether quantitative or qualitative. The norm is NOT to prioritize additional analytics or measurement work. Is it especially important for the change described by this user story to come with extra investment in measuring usage, adoption, and success? If so, describe what measurements we need to implement, along with the current state of any existing, related measurements. -- **QA:** Changes are tested by hand prior to submitting pull requests. In addition, quality assurance will do an extra QA check prior to considering this story "done". Any special QA notes? -- **Follow-through:** Is there anything in particular that we should inform others (people who aren't in this product group) about after this user story is released? For example: communication to specific customers, tips on how best to highlight this in a release post, gotchas, etc. +When the Product Designer has completed the product checklist, it is moved to the "In review" column of the drafting board and reviewed during the [weekly user story review](https://fleetdm.com/handbook/company/product-groups#user-story-reviews) rituals. + +When a user story completes the review process, it is moved to the "Ready for spec" column on the drafting board and assigned to the product group's EM. The EM is responsible for completing the engineering checklist and finalizing the test plan with the QA Engineer before moving to the "Ready to estimate" column. #### Providing context @@ -383,6 +373,7 @@ To make a feature request or advocate for a feature request from a customer or c New requests are reviewed daily by the Head of Product Design and a former IT admin during the ["Unpacking the why"](https://fleetdm.com/handbook/product-design#unpacking-the-why) call. If the request meets the [criteria for prioritization](#criteria-for-prioritization), the request will be added to the upcoming feature fest (`~feature fest` label). If it doesn't, the request will be put to the side and the requester will be notified. + ### Criteria for prioritization To prioritize a new feature, it must meet one of these criteria: @@ -399,6 +390,7 @@ If an issue has the `~customer request` label, then it's a feature request that' If an issue has the `:product` and `story` label, then it's a user story that is currently in progress ([drafting](https://fleetdm.com/handbook/company/development-groups#drafting)). The user story will include a link to the original feature request issue. + ### How feature requests are prioritized Prioritization of new feature requests happens at the 🎁🗣 Feature Fest meeting. @@ -428,6 +420,7 @@ A story may be de-prioritized when its relative priority falls below new request Just as when a feature request is not accepted in the 🎁🗣 Feature Fest meeting, whenever a feature is de-prioritized after it has been accepted, it only means that the feature has been _de-prioritized at this time_. It is up to the requester to bring the request back again at another 🎁🗣 Feature Fest meeting. + ## Quality The goal of quality assurance is to identify corrections and optimizations before release by verifying; - Bugs @@ -689,25 +682,9 @@ All participants are expected to review the user story and associated designs an - Software Engineers: Clarifying questions and implementation details - Product Quality Specialist: Testing plan - -### Design consultation - -Design consultations are scheduled as needed with the relevant participants, typically product designers and frontend engineers. It is an opportunity to collaborate and discuss design, implementation, and story requirements. The meeting is scheduled as needed by the product designer or frontend engineer when a user story is in the "Prioritized" column on the [drafting board](https://app.zenhub.com/workspaces/-drafting-ships-in-6-weeks-6192dd66ea2562000faea25c/board). - -**Participants:** -- Product Designer -- Software Engineers (UI/UX) - -**Sample agenda** -- Review user story requirements -- Review wireframes -- Discuss design input -- Discuss implementation details - - ### Design reviews -Design reviews are conducted daily between the [Head of Product Design](https://fleetdm.com/handbook/product-design#team), [CTO](https://fleetdm.com/handbook/engineering#team), and contributors (most often Product Designers) proposing changes to Fleet's interfaces, such as the graphical user interface (GUI) or REST API. This fast cadence shortens the feedback loop, makes progress visible, and encourages early feedback. This helps Fleet stay intentional about how the product is designed and minimize common issues like UI inconsistencies or accidental breaking changes to the API. +Design reviews are conducted daily between the [Head of Product Design](https://fleetdm.com/handbook/product-design#team) and contributors (most often Product Designers) proposing changes to Fleet's interfaces, such as the graphical user interface (GUI) or REST API. This fast cadence shortens the feedback loop, makes progress visible, and encourages early feedback. This helps Fleet stay intentional about how the product is designed and minimize common issues like UI inconsistencies or accidental breaking changes to the API. Anyone at Fleet can attend as a shadow. Shadows are asked to leave feedback/comments in the agenda doc without interrupting the meeting. This helps the team iterate and move designs to ready for spec faster. @@ -727,6 +704,16 @@ Here are some tips for making this meeting effective: - Bring 1 key engineer who has been helping out with the user story, when possible and helpful. - Read Fleet's [best practices for meetings](https://fleetdm.com/handbook/company/communications#meetings). + +### User story reviews + +User story reviews [happen weekly](https://fleetdm.com/handbook/product-design#rituals) between the [Head of Product Design](https://fleetdm.com/handbook/product-design#team) and the each product group's Product Designer, Engineering Manager (EM), and Quality Assurance (QA) Engineer. The attendees review all user stories that have completed product design in the past week and are in the "In review" column. The Product Designer is the DRI for completing all product checklist items before bringing to review. + +The purpose of the review is to familiarize the EM and QA Engineer with the user story, and provide an opportunity to ask questions, clarify requirements, and highlight potential implementation issues. The first draft of the test plan produced by the Product Designer is reviewed and revised as needed during the call. The QA Engineer is the DRI for finalizing the test plan. + +The purpose of the user story review is to align product, engineering, and QA on functionality and implementation details. Wireframe reviews occur daily during [design reviews](https://fleetdm.com/handbook/company/product-groups#design-reviews) where contributors are welcome to join and provide design feedback in the agenda document. However, sometimes there are design changes needed if a gap is discovered or an implementation issue is raised during user story review. If there are design changes, the user story is moved back to the "In progress" column for additional drafting. If there are no design changes, the story is assigned to the EM to [complete the drafting process](#defining-done) before bringing to estimation. + + ### Group weeklies A chance for deeper, synchronous discussion on topics relevant across product groups like “Frontend weekly”, “Backend weekly”, etc. @@ -753,7 +740,8 @@ This meeting is to disseminate engineering-wide announcements, promote cohesion - Everyone is welcome to present on a technical topic. Add your name and tech talk subject in the agenda doc included in the Eng Together calendar event. - Social - Structured and/or unstructured social activities - + + ### New customer promise(s) The Account Executive (AE) schedules this meeting before Fleet commits to one or more new customer promises. It's meant to streamline communication and encourage getting the best product decisions. @@ -766,6 +754,7 @@ If the buyer (aka the "Santa") hasn't reviewed the price in the first order form - Discuss new promises from an order form with promises - Kick off 1 business day SLA for Head of Product Design to process this and work with CTO to deliver a revised order form back to the AE. + ## Development best practices - Remember the user. What would you do if you saw that error message? [🔴](https://fleetdm.com/handbook/company#empathy) diff --git a/handbook/product-design/product-design.rituals.yml b/handbook/product-design/product-design.rituals.yml index 992deabd93a4..58bcad9b03db 100644 --- a/handbook/product-design/product-design.rituals.yml +++ b/handbook/product-design/product-design.rituals.yml @@ -84,3 +84,9 @@ frequency: "Triweekly" description: "Align on priorities for upcoming sprint." dri: "noahtalerman" +- + task: "User story review" + startedOn: "2025-01-16" + frequency: "Weekly" + description: "Review user stories in the 'In review' column on the drafting board with each product group's Product Designer, Engineering Mananger, and Quality Assurance Engineer." + dri: "noahtalerman" \ No newline at end of file