After my fourth and final tour stop, we decamped to Mallorca for a week. With no upcoming workshops to polish and no upcoming plans to finalize, the laptop stayed home. Just each other, a variety of beaches, and the annual Les Festes del Rei En Jaume that Bekki and I last saw two years ago on our honeymoon. The parade was perhaps a bit much for Taavi.

Looking away

The just-released episode 99 of Agile for Humans includes some reflections (starting around 50 minutes in) from partway through my coding tour. As our summer in Germany draws to a close, I’d like to reflect on the tour as a whole.

Annual training

I’ve made a habit of setting aside time, attention, and money each year for focused learning. My most recent trainings, all formative and memorable:

I hoped Schleier, Coding Tour would fit the bill for 2018. It has.

Geek joy

At the outset, I was asked how I’d know whether the tour had gone well. My response: “It’s a success if I get to meet a bunch of people in a bunch of places and we have fun programming together.”

I got to program with a bunch of people in a bunch of places. We had fun doing it. Success!

New technologies

My first tour stop offered such an ecumenical mix of languages, tools, and techniques that I began writing down each new technology I encountered. I’m glad I started at the beginning. Even so, this list of things that were new or mostly new to me is probably incomplete:

In the moment, learning new technologies was a source of geek joy. In the aggregate, it’s professionally useful. I think the weight clients tend to place on consultants needing to be expert in their tech stack is dangerously misplaced, but it doesn’t matter what I think if they won’t bring me in. Any chance for me to broaden my tech background is a chance for a future client to take advantage of all the other reasons I can be valuable to them.

Insights

As Schmonz’s Theorem predicts, code-touring is both similar to and different from consulting.

When consulting, I expect most of my learning to be meta: the second loop (at least) of double-loop learning. When touring, I became reacquainted with the simple joys of the first loop, spending all day learning new things to be able to do. It often felt like play.

When consulting, I initially find myself being listened to in a peculiar way, my words being heard and measured carefully for evidence of my real intentions. My first tasks are to demonstrate that I can be trusted and that I can be useful, not necessarily in that (or any) order. Accomplishing this as a programmer on tour felt easier than usual.

When I’m consulting, not everyone I encounter wants me there. Some offer time and attention because they feel obligated. On this tour, even though some folks were surprised to find out their employer wasn’t paying me anything, I sensed people were sharing their time and attention with me out of curiosity and generosity. I believe I succeeded in making myself trusted and useful to each of them, and the conversation videos and written testimonials help me hold the belief.

Professional development

With so much practice designing and facilitating group activities, so much information-rich feedback from participants, and so many chances to try again soon, I’ve leveled up as a facilitator. I was comfortable with my skills, abilities, and material before; I’m even more comfortable now. In my tour’s final public meetup, I facilitated one of my legacy code exercises for three simultaneous mobs. It went pretty well — in large part because of the participants, but also because of my continually developing skill at designing and facilitating learning experiences.

As a consultant, it’s a basic survival skill to quickly orient myself in new problem spaces. As a coach, my superpower might be that I help others quickly orient themselves in their problem spaces. Visiting many teams at many companies, I got lots of practice at both. These areas of strength for me are now stronger, the better with which to serve my next clients.

On several occasions I asked mobs not to bother explaining the current context to me before starting the timer. My hypothesis was, all the context I’d need would reveal itself through doing the work and asking a question or two along the way. (One basis among many for this hypothesis: what happened when I showed up late to one of Lennart Fridén’s sessions at this spring’s Mob Programming Conference and everyone else had already read the manual for our CPU.) I think there was one scenario where this didn’t work extremely well, but my memory’s fuzzy — have I mentioned meeting a whole bunch of people at a whole bunch of workplaces, meetups, and conferences? — so I’ll have to report the details when I rediscover it.

You can do this too, and I can help

When designing my tour, I sought advice from several people who’d gone on one. (Along the way I met several more, including Ivan Sanchez at SPA in London and Daniel Temme at SoCraTes in Soltau.)

If you’re wondering whether a coding tour is something you want to do, or how to make it happen, get in touch. I’m happy to listen and offer my suggestions.

What’s next for me, and you can help

Like what I’m doing? Want more of it in your workplace?

I offer short, targeted engagements in the New York metro area — coaching, consulting, and training — co-designed with you to meet your organization’s needs.

More at latentagility.com.

Gratitude

Yes, lots.

It’s been a splendid set of privileges to have the free time to go on tour, to have organizations in several countries interested to have me code with them, and to meet so many people who care about what I care about when humans develop software together.

Five years ago I was discovering the existence of a set of communities of shared values in software development and my need to feel connected to them. Today I’m surer than ever that I’ve needed this connection and that I’ve found it.

Thanks to the people who hosted me for a week at their employer: Patrick Drechsler at MATHEMA/Redheads in Erlangen, Alex Schladebeck at BREDEX in Braunschweig, Barney Dellar at Canon Medical Research in Edinburgh, and Thorsten Brunzendorf at codecentric in Nürnberg and München. And thanks to these companies for being willing to take a chance on bringing in an itinerant programmer for a visit.

Thanks and apologies in equal measure to Richard Groß, who did all the legwork to have me visit MaibornWolff in Frankfurt, only to have me cancel at just about the last minute. At least we got to enjoy each other’s company at Agile Coach Camp Germany and SoCraTes (the only two people to attend both!).

Thanks to David Heath at the UK’s Government Digital Service for inviting me to join them on extremely short notice when I had a free day in London, and to Olaf Lewitz for making the connection.

Thanks to the meetups and conferences where I was invited to present: Mallorca Software Craft, SPA Software in Practice, pkgsrcCon, Hackerkegeln, JUG Ostfalen, Lean Agile Edinburgh, NEBytes, and Munich Software Craft. And thanks to Agile Coach Camp Germany and SoCraTes for the open spaces I did my part to fill.

Thanks to Marc Burgauer, Jens Schauder, and Jutta Eckstein for making time to join me for a meal. Thanks to Zeb Ford-Reitz, Barney Dellar, and their respective spice for inviting me into their respective homes for dinner.

Thanks to J.B. Rainsberger for simple, actionable advice on making it easy for European companies to reimburse my expenses, and more broadly on the logistics of going on European consulting-and-speaking tours when one is from elsewhere. (BTW, his next tour begins soon.)

Thanks all over again to everyone who helped me design and plan the tour, most notably Dr. Sal Freudenberg, Llewellyn Falco, and Nicole Rauch.

Thanks to Woody Zuill, Bryan Beecham, and Tim Bourguignon for that serendipitous conversation in the park in London. Thanks to Tim for having been there in the park with me. (No thanks to Woody for waiting till we’d left London before arriving. At least David Heath and GDS got to see him. Hmph.)

Thanks to Lisi Hocke for making my wish a reality: that her testing tour and my coding tour would intersect. As a developer, I have so much to learn about testing and so few chances to learn from the best. She made it happen. A perfect ending for my tour.

Thanks to Ryan Ripley for having me on Agile for Humans a couple more times as the tour progressed. I can’t say enough about what Ryan and his show have done for me, so this’ll have to be enough.

Thanks to everyone else who helped draw special attention to my tour when I was seeking companies to visit, most notably Kent Beck. It really did help.

Another reason companies cited for inviting me: my micropodcast, Agile in 3 Minutes. Thanks to Johanna Rothman, Andrea Goulet, Lanette Creamer, Alex Harms, and Jessica Kerr for your wonderful guest episodes. You’ve done me and our listeners a kindness. I trust it will come back to you.

Thank you to my family for supporting my attempts at growth, especially when I so clearly need it.

Finally, thanks to all of you for following along and for helping me find the kind of consulting work I’m best at, close to home in New York. You can count on me continuing to learn things and continuing to share them with you.

FIN


Posted September 15, 2018 at 09:05:42 AM EDT Tags:

The final week of my coding tour came right on the heels of SoCraTes. On Sunday evening I went straight from Soltau to Nuremberg. On Monday morning, when Thorsten Brunzendorf met me in the lobby of my hotel, it was the first time I’d seen him since… Sunday afternoon. Like several other already-familiar-by-now faces, he’d been at SoCraTes too.

This tour stop was different from the start: we’d spend our first three days in one city and the last two in another.

Monday

Tuesday

  • New to me: Dropwizard
  • Discussion (with running examples) about test value, cost
  • Updated xfractint (what a throwback!) in pkgsrc
  • Helped install OpenBSD on spare ThinkPad
  • Biergarten @thbrunzendorf @drechsler talking architecture, coaching

Wednesday

Mobbing in Scala with Thorsten and Martin

  • Updated my local Scala setup
  • More Mars Rover; found a small-step path to refactor Direction to know its left and right
  • Mob Programming, TDD: mapping an old structure to new, then aggregating

Thursday

Introducing ‘Strangle Your Legacy Code'

Friday

Navigating during Lisi's session

  • Talk through @thbrunzendorf’s recent story-slicing workshop
  • Observe a Git workshop
  • Exploratory testing in a mob with Lisi Hocke on her #TestingTour
  • Review the week
  • Board the train

Here are all #CodingTour tweets from the week.

Reflections

Even though the odds keep stacking higher and higher, the pattern of each tour stop varying meaningfully from the previous ones continued at codecentric. For instance, we chose not to do Learning Hours. I think one reason I didn’t particularly miss it is that I was so busy learning. I’d seen Scala once before, for an hour; here we worked in it all week, both in katas and on production code. And property-based testing had been on my long list of techniques I know I need to learn about. Now I’ve had it explained to me simply and well by Thorsten and I’ve used it enough to know some ways it can help me go where I want to go.

Lisi and me

I’m a fan of Lisi’s testing tour and of how she writes about it. The chance to learn with her felt like the perfect ending for my tour. Here’s her post about it. Next week I’ll offer my reflections on the tour as a whole.

Thorsten, Martin, and I got together Friday afternoon to share some of our highlights from the week. Have a look.

Posted September 1, 2018 at 06:13:22 AM EDT Tags:

On Thursday, August 30 in Munich, I attended Munich Software Craft and presented Strangle Your Legacy Code. We split into several mobs to practice adding features to an old SMTP server without modifying its code.

Abstract:

Given an ancient codebase that makes refactoring risky and expensive, how do you clear a path to continued delivery? The old wisdom says the best time to plant a tree was 20 years ago, and the next best time is today. But if you already have a gnarled old source tree, preserve your software investment by planting a Strangler: a pattern for reaping continuous value from your existing system while growing new functionality alongside it.

We’ll take a quick look at a Strangler, demonstrate the basics of Mob Programming, then split into small groups to test-drive new features into the system. You’ll leave with a powerful strategy for extending the useful life of working, valuable software — especially when it’s hard to change — and with a free bonus development practice to accelerate your team’s learning. For a limited time only!

Posted August 30, 2018 at 04:15:48 PM EDT Tags:

I’d been hearing great things about the International Conference for Software Craft and Testing for years. Last year, I narrowly missed it. This past weekend, I finally made it to the 8th SoCraTes. “Craft” isn’t exactly my thing, but the people who congregate around it are often exactly my people.

Before arriving, I’d only experienced Open Space at Agile Coach Camps, or as a portion of a regular conference. I was excited to see what might happen when programmers get a hold of the idea.

Dragan driving, Daniel navigating

What happened was, two dials on this conference were turned way up:

  1. Inclusion
  2. Geek joy

They had been turned up with intention by the organizers and facilitator. And they stayed up because of a positive feedback loop: mostly geek joy amplified by people feeling included, but also inclusion amplified by people feeling joyful.

I convened three sessions:

And enjoyed many others. Someone expressed appreciation for my being an international bumblebee, cross-pollinating ideas from far away. Next month, back in the States, I’ll complete the international-Open-Space-bumblebee round trip at the 10th anniversary Agile Coach Camp in Ann Arbor.

Posted August 29, 2018 at 03:17:03 AM EDT Tags:

[Update: Barney wrote a few words about our week together. They’re quite nice.]

Water of Leith

This week, the Octoberth of August, was my first ever visit to Edinburgh. It was also the first of my tour stops to be scheduled. I’d met Barney Dellar a few months ago at the Mob Programming Conference. When I announced my coding tour, and he realized the best week for his team would be during the height of the Edinburgh Festival Fringe, he moved quickly and decisively to book my lodging and travel. I was grateful to know well in advance that I’d get to visit at least one company — Canon Medical Research Europe — and that as such my tour would, in fact, exist.

Monday

  • Joined a mob (2.5-minute rotations!)!
  • My worst-facilitated Gilded Rose ever: OS+keyboard mismatch, AND language (C++ version wouldn’t build in IDE beforehand, so… Java)
  • Took in Barney’s talk at C++ Edinburgh
  • Ate irresponsibly
  • Walked lots

On the way back from Barney's talk

Tuesday

Learning Hour: Gilded Rose kata

Wednesday

Thursday

Learning Hour: Intro to TDD

  • Paired with junior developer (with extremely Scottish name)
  • Test-Driven Development intro: 3 slicing options, then Roman numerals
  • River walk with tech lead concerned with how new hires learn
  • Dependency setup hell
  • Nap and dinner chez Barney, beach walk and 🍻

Friday

  • Mob 2 refactoring in smaller steps — 3 commits in an hour!
  • Use whiteboard to write observations down and stay focused
  • Learning Hour: “Strangle Your Legacy Code”
  • Tech lead’s exercise: practice code design skills
  • Review the week

Here are all #CodingTour tweets from the week.

Reflections

After my visit here, which needed to be planned well in advance, I’m also appreciating the corresponding just-in-time planning that made sense during the week. Rather than choosing all five Learning Hours up front, each morning we selected what sounded best to us that day.

Another useful contrast with my previous tour stops: this week I programmed with a total of two teams. Mostly with Barney’s team, and also twice with another that’s newer to mobbing. I found it easy and comfortable to get to spend more time with fewer people, to get to know each other better, and to accumulate more solved problems together. If I were staying longer, I’d really start to feel part of the team.

Neither team followed a strict Driver-Navigator rule, and in neither case did it seem important to ask about it or otherwise draw attention to it, because there was never much crosstalk or persistent disagreement about where to navigate. Barney’s team rotated especially smoothly and frequently (every 150 seconds!), pausing after each Mobodoro to retrospect and take a short break. I’m a fan of extremely short, on-the-spot retros whenever we notice something. Now that I’ve seen Mobodoros up close, I’ll likely adopt this practice as well.

A bunch of us got together Friday afternoon to share some of our highlights from the week. Have a look.

Posted August 17, 2018 at 12:46:40 PM EDT Tags: