This past Wednesday, July 16, I flew down to Washington, D.C. to visit a few government IT teams and give a talk on unit testing and culture change. I was hosted by Robert Read from the team known as “18F”, so named because it resides in the General Services Administration building at 18th and F streets. 18F, as I currently understand it, is a team that currently acts as a “production floor” to develop software products for government agencies using industry-standard (mainly agile) practices, and has ambitions to perform outreach to other agencies to improve their development processes. The audience for my talk, however, was primarily to members of the US Citizenship and Immigration Services development team and US Digital Services.
What was supposed to be a one-hour talk followed by a forty-five minute question and answer session turned into a one-hour, forty-five minute discussion, in which almost all of the two dozen or so attendees remained from beginning to end. That was just what I was hoping would happen—I mean, I was parachuting into this environment completely cold. I’d met no one, I’d seen no code, I’d literally only stepped into the office for the first time and gone straight to the conference room. Who was I to tell these folks what they needed to be doing on their projects? Did I even have anything to say that was either interesting or something they’d not heard already? Would I have enough to say? Would I ramble too much?
As it turned out, my approach of just getting the talk going and letting folks ask questions freely throughout got the room warmed up enough to where it wasn’t just me pontificating like an all-knowing so-and-so the entire time. There was real back-and-forth there. Rob and I brainstormed the four main sections the week before:
- Unit Testing Principles, Practices, and Idioms
- Unit Testing Education and Advocacy
- Unit Testing APIs and Legacy Systems
- Rapid Prototyping and Unit Testing Strategy
If I remember correctly (the day was a bit of a blur), we actually decided on the spot to start the talk at the second section, “Unit Testing Education and Advocacy”. From there, the talk naturally wandered throughout the first and third sections as well; we never got around to the fourth, but it’s better to have and not need than to need and not have.
The slides are freely available (yes, I got permission to share them first), but are nothing to be bowled over by. They’re basically just a fancier form of outline that I could use to keep track of the discussion. That said, they did the job more than well enough, and I’m offering them here in case others might be inspired to give similar talks in their own workplaces.
On top of that, I have to say I was stunned at the winds of change that seemed to be blowing through government IT culture. It was a real inspiration to see so many people engaged in serving their country, trying to make a real difference not just in how development is done, but in how the products of their labors can better serve their fellow citizens. It felt positively…grouplet-y.