What an ending. I've just finished the most interactive training class I've ever taken. I spent much of the last two days on a real Agile team producing a real product in 90-minute iterations. In a word, it was intense. It's ingenious to dangle the responsibility for shipping working code in front of programmers during a training class. It really made the content exceedingly relevant.
After four iterations we shipped a working Java console game that was demonstrated to the class. And I ended up on a development team that, in some ways, is more functional than my development team at work. Seriously, I could take this team back and start solving some real problems very, very soon. At the end some time was reserved for us to express our appreciation for one another. It was a real bonding experience for me. Nerds bonding. What a beautiful, awkward thing.
I've had so many epiphanies and realizations this week. One is that we had been doing Pair Programming wrong at work. First we tried it with too few people, and yes, we got sick of each other. Then we never traded off more often than once per day, instead of the 2-4 hours I heard today. We also felt guilty about pairing up piece-meal, since the books said to do it full-time. When I get back to work I'll be starting this up again part-time on the projects where it makes sense. We've been doing many other concepts like TDD for some time - but we can definitely do better.
One of the most relevant day-to-day things that I'll be changing about my own coding is adopting Simple Design principles. Just last week I was using C#'s ?? coalese operator and PowerShell's % shortcut, even though no one else on the team knows what they do. I confused being current on language specs with being proficient. And I realized that I often - no, constantly - violate the YAGNI (You Ain't Gonna Need It) principle, building in huge overhead even before I've released.
Being Agile is really about reflecting reality. My team doesn't have a dedicated Product Owner due to our focus on legacy systems. Knowing this allows me to push for a PO by justifying it with the efficiencies I've just seen happen. The class also gave me exposure to companies and developers really motivated to be Agile - you can do this!
Thank you to my classmates Anthony, Hieu, Mike, Michael, and Jesse for being so motivated and cool.
"Agile does not require that people be perfect, but deals with the fact that they aren't." -James Shore
Technorati tags: Agile Scrum