-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAgile-Mar-3-2023.qmd
285 lines (183 loc) · 9.14 KB
/
Agile-Mar-3-2023.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
---
title: "Intro to Kaizen and Agile"
subtitle: "for science teams"
author: Eli Holmes<br>Northwest Fisheries Science Center, NOAA<br>[NMFS Open Science](https://nmfs-opensci.github.io/)<br><br>Fish 549 March 3, 2023<br>[https://eeholmes.github.io/talks/](https://eeholmes.github.io/talks/)
logo: https://raw.githubusercontent.com/nmfs-opensci/assets/main/logo/nmfs-opensci-logo3.png
format:
revealjs:
theme: [sky, custom.scss]
footer: "[Home](index.html){style='padding-right: 100px;'}"
---
## Today's Plan {style="\"position:absolute;" top="20;" left="0"}
- A Kaizen group game! The [Ball Point Game](https://www.101ways.com/agile-games-ball-point-game)
- Learn about the core ideas of "Agile" for team projects
- Intro to the basics of Scrum Sprints
- Demo of Scrum Sprint on GitHub project boards
## What is Kaizen? {.smaller}
Kaizen means continuous improvement but refers more specifically to a cycle of improvement. In its simple^[Kaizen more classically is shown with more intermediary steps] form, it is the Deming Cycle
* Plan
* Do = work the plan
* Check = how'd we do?
* Act (or Reflect) = think about what the results mean and what you should do in response
But Kaizen is more than that. Kaizen also involves flattening team hierarchy to foster improvement and innovation. Kaizen seeks to "empower" the worker/developers and flips the role of the manager from "boss" to coach/teacher/servant.
## What is agile?
A **lightweight** workflow **structure** for software development which is characterized by 4 key features, 2 of which are closely Kaizen related. In this lecture, I'll introduce SCRUM, a very popular agile workflow process.
The term "agile" is traced back to the 2001 [Agile Manifesto](https://agilemanifesto.org/)^[This was a meeting of innovation visionaries who were all exploring similar ideas of how the structure of teams affects innovation, but in different ways.], but the ideas are much earlier and broader. It is very related to Kaizen ideas and "Toyota Way".
## Are these useful for science?
Yes! These are methods for driving innovation and discovery.
Elements of Kaizen and agile can be used in isolation. These are proven methods to improve team collaboration and project workflow.
::: callout-note
Agile methods are ubiquitous in software development. But also widely used in any innovation-driven industry.
Kaizen is a core element of Lean Manufacturing, a very influential methodology in modern manufacturing. Search for "Toyota Way".
:::
## Four elements of agile {.smaller}
I divide the ideas in agile methodologies into four areas that are always present in one form or another.
::: columns
::: {.column width="50%"}
![](images/agile-elements.png){fig-align="center" width="100%"}
:::
::: {.column width="50%"}
- Breaking work into chunks
- Reflection and planning after each chunk
- Radically anti-hierarchical team structure
- Regular facetime
- Respect for the individual (learning focus)
- Early and regular end-user feedback
:::
:::
## Iterative Cycles
A key principle: dividing work into 10-30 day chunks with plan and review (or check) elements
![](images/PDCA-Multi-Loop.png){fig-align="center" width="80%"}
## Flat, self-organizing teams {.smaller}
Flat team structure, team member "agency" and a spirit of cooperation instead of competition is central to Kaizen and agile. Two key agile team habits that support this are:
::: columns
::: {.column width="50%"}
### Task boards
- visualize your workflow
- team awareness
- encourages cycles of work
- encourages intentionality
- helps team not waste time on unimportant things
:::
::: {.column width="50%"}
### Facetime
- short daily check-ins, aka "stand-ups"
- co-working, group or often paired
:::
:::
## Task boards
Here is a task board set up on a GitHub project board.
![](images/GitHub-task-board.png){fig-align="center" width="100%"}
## Why use a task board? {.smaller}
::: columns
::: {.column width="50%"}
![](images/Kanban_board_example.jpeg){fig-align="center" width="100%"}
:::
::: {.column width="50%"}
- team awareness fundamentally changes the team dynamic
- forces work to be iterative and incremental
- helps team define a minimally complete chunk of work that can be reviewed
- quickly reveals bottlenecks and barriers
:::
:::
## Keeping the task board up to date {.smaller}
Keeping the team task board fresh won't happen by itself. Everyone get pulled into their own rabbit hole and then team becomes silo-ed.
::: columns
::: {.column width="50%"}
**Daily Standup**
![](images/standup-cartoon.jpeg){fig-align="center" width="100%"}
:::
::: {.column style="border:4px solid black; padding: 10px; width: 40%;"}
time-boxed 15 minutes
FORM: what I did yesterday, what I plan to do today, any barriers
a designated team facilitator runs this
done around the task board
can be done asynchronously but much better if it is live
gets the team in flow
:::
:::
## Scrum
Most popular and widely used method in software development, but not restricted to software at all.
![](images/scrum-cycle.png){fig-align="center" width="80%"}
Formalizes the workflow cycles and events
## Scrum Roles and Artifacts {.smaller}
::: columns
::: {.column width="50%"}
**Roles**
- **Product Owner**: Job is to decide what the group is doing and curate the backlog of tasks
- **Scrum master**: Facilitator and coach the team
- **Developers**: Do the tasks
:::
::: {.column width="50%"}
**Artifacts**
- **Backlog**: All the planned tasks in various stages of ready
- **Sprint Backlog**: Things to be completed in current sprint
- **Product Increment**: What you will complete in this sprint. Needs to be something you can demo or present
:::
:::
## Sprint Cycle {.smaller}
**Product Owner** Works on the backlog and gets tasks ready for next sprint.
::: columns
::: {.column width="50%"}
**Scrum Master**
- Day 1: **Facilitates** planning mtg
- Day 8-28:
- **Runs** daily standups.
- **Helps** team members with barriers
- **Works with** product owner
- Last day: **Facilitate** Retrospective meeting
:::
::: {.column style="width: 50%; color: blue"}
**Team**
- Day 1: **Sprint Planning**
- Day 8-28: **Work on tasks** with daily standups
- 2 days before end of sprint: **Sprint Review** Show work to "customer"<sup>1</sup>
- Last day: **Retrospective** Team reflects on how their process of work did and picks one thing to do better
:::
:::
::: smaller
1 In a science context, this might be an informal presentation. Formal enough that you need to do a good job, not so formal as to need to spend a lot of time on polishing it.
:::
## I left out some big parts of Scrum {.smaller}
**This is a Lean/Agile/Kaizen methodology**
- radically anti-hierarchical team structure
- rethinking of human agency within team structures
- radical candor and authenticity within teams
**Scrum as implemented in software development**
**User Stories and Epics** How you plan tasks as Scrum is implemented in software development.
**Velocity** Velocity and measuring the size of tasks is a key part of Scrum in software development.
## Next steps to learn
* Watch some of the videos or read a intro book. I found this 3-hr video course most helpful. Free via UW Libraries. [Scrum Fundamentals](https://learning.oreilly.com/videos/scrum-fundamentals/9780133749076/)
* Once you understand the basics, start experimenting with sprints and sprint planning on your own (solo), e.g. for a talk or a class paper. Get used to the plan, work from tasks, review framework before trying with a group.
* Watch me plan a simple solo sprint. 5 minute video. [Simple Sprint Planning using GitHub](https://youtu.be/eit4s9hRwfA)
## Example Sprint with GitHub
::: columns
::: {.column width="50%"}
![](images/simple-gh-sprint-tasks.png){fig-align="center" width="100%"}
:::
::: {.column style="width: 50%; color: blue"}
![](images/simple-gh-sprint-board.png){fig-align="center" width="100%"}
:::
:::
## Videos to learn more
::: columns
::: {.column width="50%"}
### Kanban Boards
Atlassian Kanban video series
[{{< fa brands youtube >}} intro](https://www.youtube.com/watch?v=iVaFVa7HYj4)
[{{< fa brands youtube >}} designing your Kanban board](https://www.youtube.com/watch?v=Bcid33tgq8A)
[{{< fa brands youtube >}} work in progress limits](https://www.youtube.com/watch?v=zEJn6eQO6FE)
[{{< fa brands youtube >}} writing kanban cards](https://www.youtube.com/watch?v=PxXdcQrPIUI)
:::
::: {.column width="50%"}
### Scrum
These cover the basic elements
[{{< fa brands youtube >}} 5 minute intro to Scrum](https://www.youtube.com/watch?v=ZiEcq9uvi4Y&t=12s) Basic Structure of Scrum
[{{< fa brands youtube >}} 12 minute intro to Scrum](https://www.youtube.com/watch?v=XU0llRltyFM) Product development perspective
[{{< fa brands youtube >}} LabScrum](https://labscrum.org/video-resources)
:::
:::
## Some references I liked
* I really liked this video course. You can get it free via UW Libraries. [Scrum Fundamentals](https://learning.oreilly.com/videos/scrum-fundamentals/9780133749076/)
* Scrum: The Ultimate Beginner’s Guide To Learn And Master Scrum Agile Framework by Hein Smith
* Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland *History, won't teach you Scrum*