From 11705977b76319aada70271d419c51fe9cdc47e2 Mon Sep 17 00:00:00 2001 From: Stanislav Jakuschevskij Date: Mon, 15 Jun 2026 14:13:56 +0200 Subject: [PATCH 1/5] Add agile workflow document for team alignment --- agile-workflow.md | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 agile-workflow.md diff --git a/agile-workflow.md b/agile-workflow.md new file mode 100644 index 0000000..fc12f28 --- /dev/null +++ b/agile-workflow.md @@ -0,0 +1,95 @@ +# Our Agile Workflow + +## Why This Document + +We're a new team. None of us have worked together using a structured development workflow before. This document describes a lightweight agile process tailored to our team: 4 senior/principal engineers and 1 engineering manager, working on strategic OpenShift initiatives. + +This is not textbook Scrum. It borrows what's useful and leaves out what isn't. The goal is to give us just enough structure to coordinate, stay visible to stakeholders, and improve over time, without drowning in meetings or process. + +We'll revisit this document regularly. If something doesn't work, we change it. + +## How Work Arrives + +Our team receives strategic initiatives (OCPSTRAT tickets) from upper management. These are high-level goals for an OpenShift release cycle. Our job is to: + +1. Understand the intent and success criteria of each initiative. +2. Break them down into epics and stories in Jira. +3. Deliver them within the release cycle. + +We won't necessarily tackle an entire OCPSTRAT initiative in one cycle. We scope what's realistic. + +## Sprints + +We work in **3-week sprints**, aligned with the broader OpenShift release sprint schedule. Each release cycle contains multiple sprints. Sprints give us a predictable rhythm for planning, delivering, and reflecting. + +## Refinement + +Refinement means turning a vague initiative into work an engineer can pick up. A story is "refined" when any engineer on the team could read it and understand what to build and when it's done. + +**Process:** + +1. **PM Kickoff** (30-60 min, once per OCPSTRAT): + - PM explains the what/why, success criteria, and priority. + - The 2 engineers who will own the breakdown attend. + - Happens before sprint planning when new OCPSTRAT work enters the cycle. +2. **Async Breakdown**: The 2 engineers break the OCPSTRAT into epics and stories in Jira. + - **Epic**: A deliverable chunk of work. + - Goal + - Scope + - Mapping back to the OCPSTRAT + - Technical design (architecture decisions, component interactions, API contracts), done by the principal/architect engineers + - **Story**: Small enough for one engineer to finish in a few days to a week. + - Summary + - Scope + - Acceptance criteria + - T-shirt size estimate (S/M/L). Anything bigger than L, split it. + - Technical design (only if non-obvious), added by whoever picks up the story +3. **Async Review**: Rest of team reviews in Jira, leaves comments. +4. **Open Questions**: Go to the optional weekly refinement slot (45 min). + +## Ceremonies + +**Sprint Planning** (start of sprint, 60 min) + +- Each engineer picks refined stories from the backlog for the next 3 weeks. +- Stories must be refined before they enter a sprint. If they're not, they go back to refinement. +- Engineers volunteer to take unrefined stories for refinement in the upcoming sprint. + +**Weekly Sync** (Wednesdays, 30 min) + +- Quick round: what's progressing, what's blocked, any decisions needed. +- Not a status report, Jira has that. This is for things that need a conversation. + +**Optional Refinement Slot** (weekly, 45 min) + +- For open questions from async refinement that need face-to-face discussion. +- Cancelled if there's nothing to discuss. + +**Sprint Review + Retrospective** (end of sprint, 60-75 min) + +- First half (30 min): each engineer briefly shows what they delivered. +- 5 min break. +- Second half (30 min): what went well, what didn't, one thing to change next sprint. + +**Rotation:** The team decides who facilitates. After every 2 sprints, rotate to the next person. + +## Technical Practices + +We follow engineering practices inspired by Extreme Programming (XP). Most are already part of how we work. + +- **Pair Programming**: Encouraged, especially for complex or unfamiliar work. Not mandatory for every task. +- **Test-Driven Development (TDD)**: Optional, but recommended. Write tests before implementation when it makes sense. +- **Continuous Integration**: All code goes through CI. Broken builds get fixed immediately. +- **Small Releases**: Release often behind feature gates. Get code into the build early to allow time for soak and feedback before GA. +- **Collective Code Ownership**: Anyone can modify any part of the codebase. No single owner bottlenecks. +- **Code Reviews**: Every change gets reviewed before merge. +- **Refactoring**: Improve code structure continuously. Leave the codebase better than you found it. +- **Simple Design (YAGNI)**: Build what's needed now. Don't over-engineer for hypothetical future requirements. + +## Checklist + +Things every engineer is responsible for, every sprint: + +- [ ] Keep assigned Jira tickets up to date: status, comments, and blockers. +- [ ] Stories are refined before pulling them into a sprint. +- [ ] Demo what you merged in the sprint review. From 50075ccd2fb14dae1db1c7ec82d91673f993742e Mon Sep 17 00:00:00 2001 From: Stanislav Jakuschevskij Date: Tue, 16 Jun 2026 11:24:54 +0200 Subject: [PATCH 2/5] docs: rework based on PR feedback Restructure document into async ceremonies, sync ceremonies, and workflow sections. Add ToC, glossary, and future considerations. Key changes from team feedback: - Rename sprint to iteration - Introduce primary/secondary architect roles - Add epic and story definition of done - Reduce iteration planning to 20 min - Add Jira sanity check for facilitator - Clarify optional refinement slot rules - Add rule to not refine blocked work - Add facilitator and engineer checklists --- agile-workflow.md | 102 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 22 deletions(-) diff --git a/agile-workflow.md b/agile-workflow.md index fc12f28..ed67e75 100644 --- a/agile-workflow.md +++ b/agile-workflow.md @@ -1,5 +1,17 @@ # Our Agile Workflow +## Table of Contents + +- [Why This Document](#why-this-document) +- [How Work Arrives](#how-work-arrives) +- [Async Ceremonies](#async-ceremonies) +- [Sync Ceremonies](#sync-ceremonies) +- [Workflow](#workflow) +- [Technical Practices](#technical-practices) +- [Checklists](#checklists) +- [Future Considerations](#future-considerations) +- [Glossary](#glossary) + ## Why This Document We're a new team. None of us have worked together using a structured development workflow before. This document describes a lightweight agile process tailored to our team: 4 senior/principal engineers and 1 engineering manager, working on strategic OpenShift initiatives. @@ -18,11 +30,9 @@ Our team receives strategic initiatives (OCPSTRAT tickets) from upper management We won't necessarily tackle an entire OCPSTRAT initiative in one cycle. We scope what's realistic. -## Sprints - -We work in **3-week sprints**, aligned with the broader OpenShift release sprint schedule. Each release cycle contains multiple sprints. Sprints give us a predictable rhythm for planning, delivering, and reflecting. +## Async Ceremonies -## Refinement +### Refinement Refinement means turning a vague initiative into work an engineer can pick up. A story is "refined" when any engineer on the team could read it and understand what to build and when it's done. @@ -30,48 +40,64 @@ Refinement means turning a vague initiative into work an engineer can pick up. A 1. **PM Kickoff** (30-60 min, once per OCPSTRAT): - PM explains the what/why, success criteria, and priority. - - The 2 engineers who will own the breakdown attend. - - Happens before sprint planning when new OCPSTRAT work enters the cycle. -2. **Async Breakdown**: The 2 engineers break the OCPSTRAT into epics and stories in Jira. - - **Epic**: A deliverable chunk of work. + - The primary and secondary architect attend. + - Happens before iteration planning when new OCPSTRAT work enters the cycle. +2. **Async Breakdown**: The primary and secondary architect break the OCPSTRAT into epics and stories in Jira. + - **Epic DoD:** A deliverable chunk of work. - Goal - Scope - Mapping back to the OCPSTRAT - Technical design (architecture decisions, component interactions, API contracts), done by the principal/architect engineers - - **Story**: Small enough for one engineer to finish in a few days to a week. + - **Story DoD**: Small enough for one engineer to finish in a few days to a week. - Summary - Scope - Acceptance criteria - T-shirt size estimate (S/M/L). Anything bigger than L, split it. - Technical design (only if non-obvious), added by whoever picks up the story -3. **Async Review**: Rest of team reviews in Jira, leaves comments. -4. **Open Questions**: Go to the optional weekly refinement slot (45 min). +3. **Open Questions**: Go to the optional weekly refinement slot (45 min). + +### Async Review + +Rest of team reviews refined stories in Jira, leaves comments. + +**Rules:** -## Ceremonies +- Don't refine blocked work. Defer until it's unblocked. -**Sprint Planning** (start of sprint, 60 min) +## Sync Ceremonies + +**Iteration Planning** (start of iteration, 20 min) - Each engineer picks refined stories from the backlog for the next 3 weeks. -- Stories must be refined before they enter a sprint. If they're not, they go back to refinement. -- Engineers volunteer to take unrefined stories for refinement in the upcoming sprint. +- Stories must be refined before they enter an iteration. If they're not, they go back to refinement. +- Engineers volunteer to take unrefined stories for refinement in the upcoming iteration. **Weekly Sync** (Wednesdays, 30 min) - Quick round: what's progressing, what's blocked, any decisions needed. - Not a status report, Jira has that. This is for things that need a conversation. +- The facilitator runs the [Jira sanity check](#facilitator-jira-sanity-check) for each engineer. **Optional Refinement Slot** (weekly, 45 min) - For open questions from async refinement that need face-to-face discussion. +- The meeting is optional, not the attendance. If it happens, everyone joins. +- PM is invited when their input is needed. - Cancelled if there's nothing to discuss. -**Sprint Review + Retrospective** (end of sprint, 60-75 min) +**Iteration Review + Retrospective** (end of iteration, 60-75 min) - First half (30 min): each engineer briefly shows what they delivered. - 5 min break. -- Second half (30 min): what went well, what didn't, one thing to change next sprint. +- Second half (30 min): what went well, what didn't, one thing to change next iteration. + +**Rotation:** The team decides who facilitates. After every 2 iterations, rotate to the next person. + +## Workflow + +We work in **3-week iterations**, aligned with the broader OpenShift release schedule. Each release cycle contains multiple iterations. Iterations give us a predictable rhythm for planning, delivering, and reflecting. -**Rotation:** The team decides who facilitates. After every 2 sprints, rotate to the next person. +- If a story turns out much larger than expected during development, break it down, re-estimate, and put the new stories in the backlog. ## Technical Practices @@ -86,10 +112,42 @@ We follow engineering practices inspired by Extreme Programming (XP). Most are a - **Refactoring**: Improve code structure continuously. Leave the codebase better than you found it. - **Simple Design (YAGNI)**: Build what's needed now. Don't over-engineer for hypothetical future requirements. -## Checklist +## Checklists -Things every engineer is responsible for, every sprint: +### Engineer + +Things every engineer is responsible for, every iteration: - [ ] Keep assigned Jira tickets up to date: status, comments, and blockers. -- [ ] Stories are refined before pulling them into a sprint. -- [ ] Demo what you merged in the sprint review. +- [ ] Stories are refined before pulling them into an iteration. +- [ ] Demo what you merged in the iteration review. + +### Facilitator Jira Sanity Check + +The facilitator checks for each engineer during the weekly sync: + +- [ ] Is the story assigned to the engineer working on it? +- [ ] Is the status up to date? +- [ ] PR linked to the story if there is one? +- [ ] Status of stories in refinement up to date? +- [ ] Questions/comments on stories in refinement answered? +- [ ] Does the story have the correct parent epic? + +## Future Considerations + +Not relevant for our current release cycle, but things we've thought about. + +- **Multi-pod collaboration**: When an OCPSTRAT is shared across multiple pods, the lead architects from each pod align upfront to split epics among teams and sync bi-/tri-weekly. + +## Glossary + +- **OCPSTRAT**: A strategic initiative for OpenShift, assigned to one or more pods. +- **Epic**: A large, deliverable chunk of work within an OCPSTRAT. Can span multiple iterations. +- **Story**: A small unit of work within an epic. Should be completable by one engineer within one iteration. +- **Iteration** (aka sprint): A 3-week development cycle. +- **Refinement**: The process of turning vague requirements into well-defined, actionable stories. +- **Acceptance criteria**: Conditions that must be met for a story to be considered done. +- **T-shirt size**: A rough estimate of effort (S/M/L). +- **Primary architect**: The lead engineer responsible for the technical direction of an OCPSTRAT. +- **Secondary architect**: The primary architect's partner, helps with epic refinement and serves as stand-in. +- **DoD**: Definition of Done. From 5a68a7973a7984cba23fa42be591a7126ebb8584 Mon Sep 17 00:00:00 2001 From: Stanislav Jakuschevskij Date: Tue, 16 Jun 2026 11:48:58 +0200 Subject: [PATCH 3/5] docs: add workflow and role checklists Add iterative workflow description covering kickoff, OCPSTRAT breakdown, and the ongoing develop-and-refine cycle during iterations. Add architect refinement and facilitator duty checklists. Move rules under refinement process where they belong. --- agile-workflow.md | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/agile-workflow.md b/agile-workflow.md index ed67e75..0f29fdf 100644 --- a/agile-workflow.md +++ b/agile-workflow.md @@ -56,13 +56,15 @@ Refinement means turning a vague initiative into work an engineer can pick up. A - Technical design (only if non-obvious), added by whoever picks up the story 3. **Open Questions**: Go to the optional weekly refinement slot (45 min). +**Rules:** + +- Don't refine blocked work. Defer until it's unblocked. +- Refinement is **ongoing**. See [Workflow](#workflow) for how refinement continues during the iteration. + ### Async Review Rest of team reviews refined stories in Jira, leaves comments. -**Rules:** - -- Don't refine blocked work. Defer until it's unblocked. ## Sync Ceremonies @@ -97,6 +99,22 @@ Rest of team reviews refined stories in Jira, leaves comments. We work in **3-week iterations**, aligned with the broader OpenShift release schedule. Each release cycle contains multiple iterations. Iterations give us a predictable rhythm for planning, delivering, and reflecting. +**Kickoff:** + +- The team selects the primary and secondary architect for each OCPSTRAT. +- The team selects the first facilitator. + +**Getting started on a new OCPSTRAT:** + +- The primary and secondary architect refine the epics and create unrefined stories. +- Once at least one epic is refined with a set of stories, the rest of the team gets involved. + +**During the iteration:** + +- In iteration planning, each engineer picks a refined story to develop and a few unrefined stories to refine. +- During the iteration, you develop your story and refine the others. +- When you finish your story, grab another refined story from the backlog and pull it into the current iteration. +- When you finish refining your stories, grab the next ones. - If a story turns out much larger than expected during development, break it down, re-estimate, and put the new stories in the backlog. ## Technical Practices @@ -122,6 +140,20 @@ Things every engineer is responsible for, every iteration: - [ ] Stories are refined before pulling them into an iteration. - [ ] Demo what you merged in the iteration review. +### Architect Refinement + +- [ ] PM Kickoff scheduled before iteration planning +- [ ] At least one refined epic with stories ready before first iteration planning + +### Facilitator Duties + +During rotation: + +- [ ] Set up sync ceremony meetings (planning, weekly sync, review + retro) +- [ ] Inform team if the optional refinement slot happens, latest on the day of +- [ ] Facilitate sync ceremonies: keep time and lead the agenda +- [ ] Run the [Jira sanity check](#facilitator-jira-sanity-check) during the weekly sync + ### Facilitator Jira Sanity Check The facilitator checks for each engineer during the weekly sync: From 32ca843ac9fdf959c7433f1a40d15091d458f134 Mon Sep 17 00:00:00 2001 From: Stanislav Jakuschevskij Date: Tue, 16 Jun 2026 12:10:17 +0200 Subject: [PATCH 4/5] docs: small wording and role fixes --- agile-workflow.md | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/agile-workflow.md b/agile-workflow.md index 0f29fdf..c56ac62 100644 --- a/agile-workflow.md +++ b/agile-workflow.md @@ -47,8 +47,8 @@ Refinement means turning a vague initiative into work an engineer can pick up. A - Goal - Scope - Mapping back to the OCPSTRAT - - Technical design (architecture decisions, component interactions, API contracts), done by the principal/architect engineers - - **Story DoD**: Small enough for one engineer to finish in a few days to a week. + - Technical design (architecture decisions, component interactions, API contracts), done by the primary and secondary architects + - **Story DoD**: Small enough for one engineer to finish in a few days to an iteration. - Summary - Scope - Acceptance criteria @@ -65,7 +65,6 @@ Refinement means turning a vague initiative into work an engineer can pick up. A Rest of team reviews refined stories in Jira, leaves comments. - ## Sync Ceremonies **Iteration Planning** (start of iteration, 20 min) @@ -77,7 +76,6 @@ Rest of team reviews refined stories in Jira, leaves comments. **Weekly Sync** (Wednesdays, 30 min) - Quick round: what's progressing, what's blocked, any decisions needed. -- Not a status report, Jira has that. This is for things that need a conversation. - The facilitator runs the [Jira sanity check](#facilitator-jira-sanity-check) for each engineer. **Optional Refinement Slot** (weekly, 45 min) @@ -85,7 +83,7 @@ Rest of team reviews refined stories in Jira, leaves comments. - For open questions from async refinement that need face-to-face discussion. - The meeting is optional, not the attendance. If it happens, everyone joins. - PM is invited when their input is needed. -- Cancelled if there's nothing to discuss. +- Cancelled by facilitator if there's nothing to discuss. **Iteration Review + Retrospective** (end of iteration, 60-75 min) @@ -93,7 +91,7 @@ Rest of team reviews refined stories in Jira, leaves comments. - 5 min break. - Second half (30 min): what went well, what didn't, one thing to change next iteration. -**Rotation:** The team decides who facilitates. After every 2 iterations, rotate to the next person. +**Rotation:** First facilitator picked at kick-off. After every 2 iterations, rotate to the next person. ## Workflow @@ -113,7 +111,7 @@ We work in **3-week iterations**, aligned with the broader OpenShift release sch - In iteration planning, each engineer picks a refined story to develop and a few unrefined stories to refine. - During the iteration, you develop your story and refine the others. -- When you finish your story, grab another refined story from the backlog and pull it into the current iteration. +- When you finish your story, let the team know in weekly sync, grab another refined story from the backlog and pull it into the current iteration. - When you finish refining your stories, grab the next ones. - If a story turns out much larger than expected during development, break it down, re-estimate, and put the new stories in the backlog. From e264e502dca1ca680dcf15ec212dd4cb7e5e969c Mon Sep 17 00:00:00 2001 From: Stanislav Jakuschevskij Date: Wed, 15 Jul 2026 14:30:03 +0200 Subject: [PATCH 5/5] docs: update agile workflow --- agile-workflow.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/agile-workflow.md b/agile-workflow.md index c56ac62..69ed3d0 100644 --- a/agile-workflow.md +++ b/agile-workflow.md @@ -110,9 +110,9 @@ We work in **3-week iterations**, aligned with the broader OpenShift release sch **During the iteration:** - In iteration planning, each engineer picks a refined story to develop and a few unrefined stories to refine. -- During the iteration, you develop your story and refine the others. +- During the iteration, you develop your story (**in pairs**, optional but encouraged) and refine the others. - When you finish your story, let the team know in weekly sync, grab another refined story from the backlog and pull it into the current iteration. -- When you finish refining your stories, grab the next ones. +- When you finish refining your stories, grab the next one. - If a story turns out much larger than expected during development, break it down, re-estimate, and put the new stories in the backlog. ## Technical Practices @@ -130,6 +130,22 @@ We follow engineering practices inspired by Extreme Programming (XP). Most are a ## Checklists +### Development DoD + +A story is done when: + +- [ ] Code reviewed and approved +- [ ] PR merged +- [ ] CI passing +- [ ] Unit tests fully cover new behaviour +- [ ] e2e tests cover new behaviour (if applicable) +- [ ] Manual tests on latest OCP cluster +- [ ] Exploratory tests +- [ ] Release notes updated (if applicable) +- [ ] Documentation updated (if applicable) +- [ ] Behind feature gate (if applicable) +- [ ] Jira updated: PR added, status updated, linked issues updated (if applicable) + ### Engineer Things every engineer is responsible for, every iteration: