Monday, November 14, 2016

Teaching Agile and Scrum with Legos!

I had the opportunity to act as a "guest instructor" at Array, the brand new code school that just started up this October in Cheyenne.  What an amazing experience! I've been following the development of the school since early on in its inception, but to actually get to interact with the students and with Eric (the dynamic headmaster) in an actual classroom setting was a real treat.




The Lead Up


When Eric asked me to teach a basic introduction to Agile and Scrum, I was pretty excited.  "Great", I thought, "this is something I know!  Whew, piece of cake...".  Little did I know that I would basically be drowning my brain in stress hormones for a week!  I'm not sure what it is exactly, but any time I'm tasked with giving some kind of presentation or teaching some kind of class, I always overthink it and get wound up waaaaay too tight for my own good.

I knew I wanted to do something more interesting and interactive than just talking at them for two hours about Agile and Scrum.  A quick poke at Google yielded a promising solution: Scrum Simulation with Lego Bricks.  I haven't busted out my Legos in years (been waiting for my kids to grow into them), and this just looked like way too much fun!  So I watched a few videos to give me some ideas on running the game (UTS Superhero Island Version, Agile Games 2012 Alien Version), poured over the instructions a couple times, and decided this was definitely the way to go.

The baked in premise of the Scrum Lego game was that we are building a "town".  I busted out my old Legos and built a few house facades, but I felt my old Lego collection was not the ideal fit.  So I got on Amazon and found an inexpensive off-brand set full of bright colors and multiple shapes.  It was a bit heavy on the 1x1 bricks, but overall it wasn't bad.  I ended up supplementing it with some larger, primary color bricks from my existing collection, but it got me about 90% there for a fraction of what "real" Lego bricks cost.

After staying up to the wee hours building houses, trees, flower beds, couches, robots, and all manner of other creations, I decided to tweak the premise a bit.  The "town" would actually be a "set" for a Lego based tv series.  I never really conceptualized this idea fully, only so far as knowing there would be an "outside" with houses and trees and such, and "interior" with furniture, bathroom, etc., and ... something... whimsical.  Fairy theme park or petting zoo... something fun and silly.

Timestamp on this one is about 1am Sunday Morning

My girls were all too happy to help me "test" my new Lego bricks...

Of course, I spent so much time thinking about the Lego exercise, that I pretty much forgot all about preparing to talk about Agile and Scrum in the abstract.  I mean, I knew I had to give some background and motivation.  What I quickly found was that, despite having a pretty decent handle on the history, folklore, motivation, concepts, mindsets, and processes around Agile... I could explain it to save my life.  As an impromptu test I tried to explain the basics to my reluctant wife (bless her heart), and what came out was a barely coherent stream of jargon, buzz words, and sentence fragments.  Ouch!

Life being what it is, I couldn't really sit down in peace to "study up" until about 8pm the night before.  It felt as ill planned and futile as cramming before the midterm.  I re-watched lectures from the Bertrand Meyer Agile course and a bit from the Berkeley Software Engineering course.  I reread my blog post, printed out a copy of the Scrum Guide... reread the Agile Manifesto.  A feeling of impending dread settled over me... this was going to be a disaster.



The Big Day and Rock Bottom


So now that I was practically a nervous wreck, the big day was here.  Naturally, mom and I overslept, so the morning got off to a great start as we scrambled in a half-coherent daze to get the Kindergartner on the bus in time. That done, I made one last furtive effort to scribble down some notes that maybe, just maybe, would be the difference between me being intelligible and being a complete f*ck up.  The hour drew nigh, and I left to meet my fate.

I was a bit early, but ET and a couple of the guys were already there.  The atmosphere was very relaxed as the guys caught up a bit on the happenings of the weekend while I ate my banana and drank my orange juice (I felt physically woozy, probably a combination of nerves and sleep deprivation, a problem I hoped a vitamin packed breakfast would help alleviate).  By 9 everyone was there, and they started with some of their usual Monday morning routine (including a quick game of Pictionary).  We did introductions and then... show time!

Sadly, my lecture skills were just as bad as I'd feared, though I somehow managed to flounder through the most important concepts to give everyone a basic foundation before moving to the fun stuff.  (spoiler alert) This was basically the trough of what would prove to be a super fun morning. ;)



Lego Scrum to the Rescue


The basic spirit of the Scrum Lego game is to maximize participant engagement and involvement.  While I'd seen games run that basically present the "backlog" items already pre-printed, I thought it would be interesting to walk the group though the backlog creation process.  So I presented the "Product Vision", which was basically a lo-fi mock up of what I wanted them to build:

This is pretty much all they got to work with...

"So", I said, "what I need is an outside, kind of residential area with some houses, trees, maybe a flower garden, a car.  And I need an inside area, with a living room with maybe a couch and tv, a bathroom, a bedroom with a bed, dresser, and shelves.  And as a stretch goal, maybe something kind of like, a fairy theme park or a zoo or something, I'm not sure exactly what this needs to look like..."

Based on the mock ups and description, we came up with "user stories", which were basically just individual lego units. So we had "Tree", "Tree #2", "House", "Another House", etc.  They got to see how the overall vision was broken down into units of work that were easier to reason about.  These went on post-it notes and into the "Product Backlog".

We had our backlog items for the "outside" and "inside" epics, and the next step was estimation.  We followed the abbreviated "swim lane" estimation technique described in the game docs, and initially came up with roughly 60 story points worth of work.  As the Product Owner I prioritized the backlog, and now it was time to plan the first sprint.  The sprint goal for the first sprint was a "minimally viable" outside set, so they pulled off the top three items from that epic: two houses and a tree.

The original game calls for one 7 minute period for the sprint. I wanted to include a "stand up" so I could have everyone participate in the whole "what I did, what I'm going to do, what obstacles" ceremony of the Daily Scrum, so I opted for two 5 minutes "days" per sprint.  This gave us an opportunity to have a Daily Scrum after the first day, and then having the sprint review after the second day.  Beyond that tweak (and being waaaay too nice of a Product Owner), we basically just followed the letter of the instructions.

In sprint 2 I held one guy out sick for a day, and sprint three saw the PO add some new "high priority" items to the Backlog, but the team was great and hit every curveball out of the park.







Debrief


The class consensus was that this was a great way to introduce Agile and Scrum in a fun, engaging way.  They'd been hearing about "Agile" from other speakers and this really helped them understand it.  I know I had a lot of fun with the group, and would absolutely use this technique again if a similar opportunity were to arise.  I really can't recommend it enough as a learning tool.

Materials Recap:



No comments:

Post a Comment