Skip to content

Commit 7fc5573

Browse files
Basic refactor of agile section (#1057)
* refactor agile * refactor and clean up of the agile section * refactor and clean up of the agile section * fix agile links * remove core expectations as all the content is moved to other places * fix agile links * fix agile links
1 parent f8f50be commit 7fc5573

25 files changed

+165
-267
lines changed

docs/ENG-FUNDAMENTALS-CHECKLIST.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ More details on [source control](source-control/README.md)
2020
- [ ] All items are tracked in AzDevOps (or similar).
2121
- [ ] The board is organized (swim lanes, feature tags, technology tags).
2222

23-
More details on [backlog management](agile-development/advanced-topics/backlog-management/README.md)
23+
More details on [backlog management](agile-development/advanced-topics/backlog-management)
2424

2525
## Testing
2626

@@ -97,7 +97,7 @@ More details on [code reviews](code-reviews/README.md)
9797
- [ ] Experiments have owners and are added to project backlog.
9898
- [ ] The team conducts longer retrospective for Milestones and project completion.
9999

100-
More details on [retrospectives](agile-development/core-expectations/README.md)
100+
More details on [retrospectives](agile-development/basics/ceremonies.md#retrospectives)
101101

102102
## Engineering Feedback
103103

docs/SPRINT-STRUCTURE.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,22 @@ The purpose of this document is to:
1010

1111
### Before starting the project
1212

13-
- [ ] [Discuss and start writing the Team Agreements](agile-development/advanced-topics/team-agreements/README.md). Update these documents with any process decisions made throughout the project
13+
- [ ] Discuss and start writing the Team Agreements. Update these documents with any process decisions made throughout the project
1414
- [Working Agreement](agile-development/advanced-topics/team-agreements/working-agreements.md)
1515
- [Definition of Ready](agile-development/advanced-topics/team-agreements/definition-of-ready.md)
1616
- [Definition of Done](agile-development/advanced-topics/team-agreements/definition-of-done.md)
17-
- [Estimation](agile-development/core-expectations/README.md)
17+
- [Estimation](agile-development/basics/ceremonies.md#estimation)
1818
- [ ] [Set up the repository/repositories](source-control/README.md#creating-a-new-repository)
1919
- Decide on repository structure/s
2020
- Add [README.md](resources/templates/README.md), [LICENSE](resources/templates/LICENSE), [CONTRIBUTING.md](resources/templates/CONTRIBUTING.md), .gitignore, etc
21-
- [ ] [Build a Product Backlog](agile-development/advanced-topics/backlog-management/README.md)
21+
- [ ] [Build a Product Backlog](agile-development/advanced-topics/backlog-management)
2222
- Set up a project in your chosen project management tool (ex. Azure DevOps)
2323
- [INVEST](https://en.wikipedia.org/wiki/INVEST_(mnemonic)) in good User Stories and Acceptance Criteria
2424
- [Non-Functional Requirements Guidance](design/design-patterns/non-functional-requirements-capture-guide.md)
2525

2626
### Day 1
2727

28-
- [ ] [Plan the first sprint](agile-development/core-expectations/README.md)
28+
- [ ] [Plan the first sprint](agile-development/basics/ceremonies.md#sprint-planning)
2929
- Agree on a sprint goal, and how to measure the sprint progress
3030
- Determine team capacity
3131
- Assign user stories to the sprint and split user stories into tasks
@@ -42,7 +42,7 @@ The purpose of this document is to:
4242
- [ ] [Set up Source Control](source-control/README.md)
4343
- Agree on [best practices for commits](source-control/git-guidance/README.md#commit-best-practices)
4444
- [ ] [Set up basic Continuous Integration with linters and automated tests](continuous-integration/README.md)
45-
- [ ] [Set up meetings for Daily Stand-ups and decide on a Process Lead](agile-development/core-expectations/README.md)
45+
- [ ] [Set up meetings for Daily Stand-ups and decide on a Process Lead](agile-development/basics/ceremonies.md#stand-up)
4646
- Discuss purpose, goals, participants and facilitation guidance
4747
- Discuss timing, and how to run an efficient stand-up
4848
- [ ] [If the project has sub-teams, set up a Scrum of Scrums](agile-development/advanced-topics/effective-organization/scrum-of-scrums.md)
@@ -64,12 +64,12 @@ The purpose of this document is to:
6464

6565
### Day 5
6666

67-
- [ ] Conduct a Sprint Demo
68-
- [ ] [Conduct a Retrospective](agile-development/core-expectations/README.md)
67+
- [ ] Conduct a [Sprint Demo](agile-development/basics/ceremonies.md#sprint-demo)
68+
- [ ] Conduct a [Retrospective](agile-development/basics/ceremonies.md#retrospectives)
6969
- Determine required participants, how to capture input (tools) and outcome
7070
- Set a timeline, and discuss facilitation, meeting structure etc.
71-
- [ ] [Refine the Backlog](agile-development/advanced-topics/backlog-management/README.md)
71+
- [ ] [Refine the Backlog](agile-development/advanced-topics/backlog-management)
7272
- Determine required participants
7373
- Update the [Definition of Ready](agile-development/advanced-topics/team-agreements/definition-of-ready.md)
74-
- Update estimates, and the [Estimation](agile-development/core-expectations/README.md) document
74+
- Update estimates, and the [Estimation](agile-development/basics/ceremonies.md#estimation) document
7575
- [ ] [Submit Engineering Feedback for issues encountered](engineering-feedback/README.md)

docs/agile-development/README.md

+28-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
1-
# Agile documentation
1+
# Agile development
22

3-
- [Agile Basics](./basics/README.md): Learn or refresh your basic agile knowledge.
4-
- [Agile Core Expectations](./core-expectations/README.md): What are our core expectations from an Agile team.
5-
- [Agile Advanced Topics](./advanced-topics/README.md): Go beyond the basics.
3+
In this documentation we refer to the team working on an engagement a **"Crew"**. This includes the dev team, dev lead, PM, data scientists, etc.
4+
5+
## Why agile
6+
7+
- We want to be quick to respond to change
8+
- We want to get to a state of working software fast, and iterate on it to improve it
9+
- We want to keep the customer/end users involved all the way through
10+
- We care about individuals and interactions over documents and processes
11+
12+
## The fundamentals
13+
14+
We care about the goal for each activity, but not necessarily about how they are accomplished. The suggestions in parenthesis are common ways to accomplish the goals.
15+
16+
- We keep a shared backlog of work, that everyone in the team can always access (ex. Azure DevOps or GitHub)
17+
- We plan our work in iterations with clear goals (ex. sprints)
18+
- We have a clear idea of when work items are ready to implement (ex. definition of ready)
19+
- We have a clear idea of when work items are completed (ex. definition of done)
20+
- We communicate the progress in one place that everyone can access, and keep the progress up to date (ex. sprint board and daily standups)
21+
- We reflect on our work regularly to make improvements (ex. retrospectives)
22+
- The team has a clear idea of the roles and responsibilities in the project (ex. Dev lead, TPM, Process Lead etc.)
23+
- The team has a joint idea of how we work together (ex. team agreement)
24+
- We value and respect the opinions and work of all team members.
25+
26+
## Links
27+
28+
- [What Is Scrum?](https://www.scrum.org/resources/what-is-scrum)
29+
- [Essential Scrum: A Practical Guide to The Most Popular Agile Process](https://www.goodreads.com/book/show/13663747-essential-scrum)

docs/agile-development/advanced-topics/README.md

-8
This file was deleted.

docs/agile-development/advanced-topics/backlog-management/README.md

-5
This file was deleted.

docs/agile-development/advanced-topics/collaboration/README.md

-11
This file was deleted.

docs/agile-development/advanced-topics/collaboration/teaming-up.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Some potential steps in this phase may be as following (not limited):
1515
- [Working agreement](../team-agreements/working-agreements.md)
1616

1717
- Identification of styles/preferences in communication, sharing, learning, decision making of each team member
18-
18+
1919
- Talking about necessity of pair programming
2020
- Decisions on backlog management & refinement meetings, weekly design sessions, social time sessions...etc.
2121
- Sync/Async communication methods, work hours/flexible times
@@ -50,7 +50,7 @@ Just as an example, agility debugging activities may include:
5050
- Are Acceptance Criteria enough and right?
5151
- Is everyone ready-to-go after taking the User Story/Task?
5252

53-
- Running [Efficient Retrospectives](../../core-expectations/README.md)
53+
- Running [Efficient Retrospectives](../../basics/ceremonies.md#retrospectives)
5454

5555
- Is the Sprint Goal clear in every iteration ?
5656

docs/agile-development/advanced-topics/collaboration/virtual-collaboration.md

+20-29
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ Pair programming works well under the correct circumstances, but it loses some o
77
Virtual work patterns are different from the in-person patterns we are accustomed to. Pair programming at its core is based on the following principles:
88

99
1. Generating clarity through communication
10-
2. Producing higher quality through collaboration
11-
3. Creating ownership through equal contribution
10+
1. Producing higher quality through collaboration
11+
1. Creating ownership through equal contribution
1212

1313
Pair programming is one way to achieve these results. Red Team Testing (RTT) is an alternate programming method that uses the same principles but with some of the advantages that virtual work methods provide.
1414

@@ -23,19 +23,16 @@ Red Team Testing has the same philosophy as any other Test-Driven Development li
2323
## Steps
2424

2525
1. Design Phase: Both developers design the interface together. This includes:
26-
* Method signatures and names
27-
* Writing documentation or docstrings for what the methods are intended to do.
28-
* Architecture decisions that would influence testing (Factory patterns, etc.)
29-
30-
2. Implementation Phase: The developers separate and parallelize work, while continuing to communicate.
31-
* Developer A will design the implementation of the methods, adhering to the previously decided design.
32-
* Developer B will concurrently write tests for the same method signatures, without knowing details of the implementation.
33-
34-
3. Integration & Testing Phase: Both developers commit their code and run the tests.
35-
* Utopian Scenario: All tests run and pass correctly.
36-
* Realistic Scenario: The tests have either broken or failed due to flaws in testing. This leads to further clarification of the design and a discussion of why the tests failed.
37-
38-
4. The developers will repeat the three phases until the code is functional and tested.
26+
- Method signatures and names
27+
- Writing documentation or docstrings for what the methods are intended to do.
28+
- Architecture decisions that would influence testing (Factory patterns, etc.)
29+
1. Implementation Phase: The developers separate and parallelize work, while continuing to communicate.
30+
- Developer A will design the implementation of the methods, adhering to the previously decided design.
31+
- Developer B will concurrently write tests for the same method signatures, without knowing details of the implementation.
32+
1. Integration & Testing Phase: Both developers commit their code and run the tests.
33+
- Utopian Scenario: All tests run and pass correctly.
34+
- Realistic Scenario: The tests have either broken or failed due to flaws in testing. This leads to further clarification of the design and a discussion of why the tests failed.
35+
1. The developers will repeat the three phases until the code is functional and tested.
3936

4037
## When to follow the RTT strategy
4138

@@ -47,20 +44,14 @@ RTT also works well when there is complete consensus, or no consensus at all, on
4744

4845
RTT has many of the same benefits as Pair Programming and Test-Driven development but tries to update them for a virtual setting.
4946

50-
* Code implementation and testing can be done in parallel, over long distances or across time zones, which reduces the overall time taken to finish writing the code.
51-
52-
* RTT maintains the pair programming paradigm, while reducing the need for video communication or constant communication between developers.
53-
54-
* RTT allows detailed focus on design and engineering alignment before implementing any code, leading to cleaner and simpler interfaces.
55-
56-
* RTT encourages testing to be prioritized alongside implementation, instead of having testing follow or be influenced by the implementation of the code.
57-
58-
* Documentation is inherently a part of RTT, since both the implementer and the tester need correct, up to date documentation, in the implementation phase.
47+
- Code implementation and testing can be done in parallel, over long distances or across time zones, which reduces the overall time taken to finish writing the code.
48+
- RTT maintains the pair programming paradigm, while reducing the need for video communication or constant communication between developers.
49+
- RTT allows detailed focus on design and engineering alignment before implementing any code, leading to cleaner and simpler interfaces.
50+
- RTT encourages testing to be prioritized alongside implementation, instead of having testing follow or be influenced by the implementation of the code.
51+
- Documentation is inherently a part of RTT, since both the implementer and the tester need correct, up to date documentation, in the implementation phase.
5952

6053
## What you need for RTT to work well
6154

62-
* Demand for constant communication and good teamwork may pose a challenge; daily updates amongst team members are essential to maintain alignment on varying code requirements.
63-
64-
* Clarity of the code design and testing strategy must be established beforehand and documented as reference. Lack of an established design will cause misalignment between the two major pieces of work and a need for time-consuming refactoring.
65-
66-
* RTT does not work well if only one developer has knowledge of the overall design. Team communication is critical to ensuring that every developer involved in RTT is on the same page.
55+
- Demand for constant communication and good teamwork may pose a challenge; daily updates amongst team members are essential to maintain alignment on varying code requirements.
56+
- Clarity of the code design and testing strategy must be established beforehand and documented as reference. Lack of an established design will cause misalignment between the two major pieces of work and a need for time-consuming refactoring.
57+
- RTT does not work well if only one developer has knowledge of the overall design. Team communication is critical to ensuring that every developer involved in RTT is on the same page.

docs/agile-development/advanced-topics/collaboration/why-collaboration.md

-3
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ Knowledge sharing and bringing ISE and customer engineers together in a ‘code-
7474
## Resources
7575

7676
- [How to add a pairing custom field in Azure DevOps User Stories](./add-pairing-field-azure-devops-cards.md) - adding a custom field of type _Identity_ in Azure DevOps for pairing
77-
7877
- [On Pair Programming - Martin Fowler](https://martinfowler.com/articles/on-pair-programming.html)
79-
8078
- [Pair Programming hands-on lessons](https://github.com/The-V8/pair-programming-sessions) - these can be used (and adapted) to support bringing pair programming into your team (MS internal or including customers)
81-
8279
- [Effortless Pair Programming with GitHub Codespaces and VSCode](./pair-programming-tools.md)

docs/agile-development/advanced-topics/effective-organization/README.md

-4
This file was deleted.

docs/agile-development/advanced-topics/effective-organization/delivery-plan.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ One approach you can take to accomplish is with stickies and a spreadsheet.
2222
Step 1: Stack rank the features for everything in your backlog
2323

2424
- Functional Features
25-
- [Non-functional Features] (docs/TECH-LEADS-CHECKLIST.md)
25+
- [Non-functional Features] (docs/non-functional-requirements)
2626
- User Research and Design
2727
- Testing
2828
- Documentation
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# Scrum of Scrums
22

3-
Scrum of scrums is a technique used to scale Scrum to a larger group working towards the same project goal. In Scrum, we consider a team being too big when going over 10-12 individuals. This should be decided on a case by case basis. If the project is set up in multiple work streams that contain a fixed group of people and a common [stand-up](../../core-expectations/README.md) meeting is slowing down productivity: scrum of scrums should be considered. The team would identify the different subgroups that would act as a separate scrum teams with their own backlog, board and [stand-up](../../core-expectations/README.md).
3+
Scrum of scrums is a technique used to scale Scrum to a larger group working towards the same project goal. In Scrum, we consider a team being too big when going over 10-12 individuals. This should be decided on a case by case basis. If the project is set up in multiple work streams that contain a fixed group of people and a common [stand-up](../../basics/ceremonies.md#stand-up) meeting is slowing down productivity: scrum of scrums should be considered. The team would identify the different subgroups that would act as a separate scrum teams with their own backlog, board and stand-up.
44

55
## Goals
66

77
The goal of the scrum of scrums ceremony is to give sub-teams the agility they need while not loosing visibility and coordination. It also helps to ensure that the sub-teams are achieving their sprint goals, and they are going in the right direction to achieve the overall project goal.
88

9-
The scrum of scrums ceremony happens every day and can be seen as a regular [stand-up](../../core-expectations/README.md):
9+
The scrum of scrums ceremony happens every day and can be seen as a regular stand-up:
1010

1111
- What was done the day before by the sub-team.
1212
- What will be done today by the sub-team.
@@ -15,11 +15,11 @@ The scrum of scrums ceremony happens every day and can be seen as a regular [sta
1515

1616
The outcome of the meeting will result in a list of impediments related to coordination of the whole project. Solutions could be: agreeing on interfaces between teams, discussing architecture changes, evolving responsibility boundaries, etc.
1717

18-
This list of impediments is usually managed in a separate [backlog](../backlog-management/README.md) but does not have to.
18+
This list of impediments is usually managed in a separate [backlog](../../basics/backlog-management.md) but does not have to.
1919

2020
## Participation
2121

22-
The common guideline is to have on average one person per sub-team to participate in the scrum of scrums. Ideally, the Process Lead of each sub-team would represent them in this ceremony. In some instances, the representative for the day is selected at the end of each sub-team daily [stand-up](../../core-expectations/README.md) and could change every day. In practice, having a fixed representative tends to be more efficient in the long term.
22+
The common guideline is to have on average one person per sub-team to participate in the scrum of scrums. Ideally, the Process Lead of each sub-team would represent them in this ceremony. In some instances, the representative for the day is selected at the end of each sub-team daily stand-up and could change every day. In practice, having a fixed representative tends to be more efficient in the long term.
2323

2424
## Impact
2525

@@ -29,8 +29,8 @@ When choosing to implement Scrum of Scrums, you need to keep in mind that some t
2929

3030
## Measures
3131

32-
The easiest way to measure the impact is by tracking the time to resolve issues in the scrum of scrums backlog. You can also track issues reported during the [retrospective](../../core-expectations/README.md) related to global coordination (is it well done? can it be improved?).
32+
The easiest way to measure the impact is by tracking the time to resolve issues in the scrum of scrums backlog. You can also track issues reported during the [retrospective](../../basics/ceremonies.md#retrospectives) related to global coordination (is it well done? can it be improved?).
3333

3434
## Facilitation Guidance
3535

36-
This should be facilitated like a regular [stand-up](../../core-expectations/README.md).
36+
This should be facilitated like a regular stand-up.

0 commit comments

Comments
 (0)