CSD and #SGCAL Review

On April 2, I flew out to San Diego to attend both David Bernstein's Certified Scrum Developer Essentials course as well as the Scrum Gathering. These two weeks were pretty magical -- knowledge gained, people met, connections and plans made...How refreshing!

CSD Course

Back in November 2016, I flew to Orlando for the TechWell conference. I had started a blog post on that one, but then life got in the way, so I abandoned it. Anyway...One of the people I met while out there was David Bernstein, the author of Beyond Legacy Code. We had a couple of long conversations, and he's a really smart and engaging guy.

I knew for a while that I wanted to take the Certified Scrum Developer course, and David mentioned that he teaches them. The next public course that he was teaching also happened to be right before the Scrum Gathering, in the same town. WHAT A GREAT IDEA! With this confluence of events happening, I signed up for the course and the Gathering, and AWAY WE GO!

The Learning Objectives for the CSD course include:

[...]the learner will be able to perform test-driven development, acceptance test-driven development, refactoring, and continuous integration in a course-provided sandbox situation. The learner will be familiar with the terms and practices involved, and [know] why these practices are important. They will have taken the first steps toward becoming expert in Scrum-style iterative and incremental development.

David covered these topics and more.

The first day, we learned the basics of Scrum, Agile, and Extreme Programming. This included writing user stories, breaking down user stories, the syntax of Gherkin for writing Acceptance Tests, and a workshop on User Stories. On Tuesday, we dove deep into software Design Patterns and other code principles, and the day ended with another workshop, this time on designing a sofware system to include different design patterns. A discussion about how and why we might choose one pattern over another was very insightful.

Wednesday through Friday were basically "morning of book learning, and afternoon of coding." All coding was done using the practices of TDD and strong-style pair programming. My programming partner was Sunil Kumar H A, and it was his first time doing TDD and pairing. We learned a lot together. The lab that we worked on was basically a simulated auction program. User stories were handed out and worked on in order. It was important that we "do the simplest thing that could work" and not think too far ahead. All refactoring of the program was done using our existing unit test harness, which helped ensure that we were always "in green state" while refactoring.

Free Day

I had the weekend free, so I met up with a couple of friends who also happened to be in town on separate trips of their own. My old roommate Bob Wen was in San Diego with his family, so we went to the USS Midway Museum before they went to LEGOLand. I then had tickets to the Padres game, and met up with Adam Kalsey for a beer after the game.

Scrum Gathering

For me, the Gathering started on Sunday, with a full-day Visualization Workshop led by Stuart Young. This workshop taught me not only how to include different ways that I can use visualization in workshops and other Agile activities that I run, but it also taught me that I CAN DRAW! All the attendees got a sketch book and were active participants throughout the day. Many of us who were there had a great time, and all of us who I talked to were impressed with the speed with which we picked up the material.

I can draw

Monday was the official start of the Scrum Gathering, and it was kicked off with a keynote by Jeff Sutherland talking about using Scrum to enable very large organizations to release products from software to fighter jets very quickly. Then it was off to sessions. I went to sessions by Jeremy Clark, Diana Larsen, and Woody Zuill. My favorite on Monday was the Mob Programming talk given by Woody.

Tuesday's complete schedule was that of an Open Space "Un"-Conference. Here, the participants are encouraged to schedule their own talks on things that they're passionate about. I led a roundtable discussion on being an independent consultant. There were around 25 attendees, and I feel like most of them gained some useful knowledge out of the session. I also was an active learner during the session, for I don't have all of the answers about being an independent consultant. The other two sessions I went to on Tuesday were about becoming a [CST][], which is something that I would like to do. Sicne I'm not afraid of standing in front of a room of people and teaching, and I think I know Scrum pretty well, that's another tool that I could add to my kit that would help advance the state of the industry. Too many programmers are stuck in waterfall modes of working, and the more trainers there are who can spread Scrum and Agile, the better off we'll all be.

Wednesday, I started the day by attending the Lean Coffee breakfast table. We had a few interesting discussions around the table, and everyone who was there both contributed and learned. See the picture below for our topics and take-aways.

Lean Coffee Take-Aways

The other sessions I attended were by Ron Jeffries and Chet Hendrickson, Jan Beaver, and Zach Bonaker. The best one here is a close race between the one by Ron and Chet, and the talk by Zach. Ron and Chet give great talks, and their topic of "Implications of Enterprise Agile for Teams" was spot-on and extremely useful, but much larger-picture than Zach's. Both Jan's and Zach's talks gave me useful tools that I can start using right away to help the teams I work with.

Of course, there was much "hallway track" time throughout the conference, and the number of people that I met and connected with was simply amazing. Sure, the Scrum Gathering is a bit of an expensive conference, but I feel that attending these kind of events is thoroughly worth the investment.