Building sand castles on a rising tide
Grabbing a handful of wet, saturated sand, I let it dribble through my finger tips. I watch each drop pile on top of the previous, draining away the water and leaving a new building block of solid sand. Too much water and the previous drip will be washed away. Too little and the sand cracks and refuses to hold together. I watch the sand grow, getting into a rhythm that ensures just the right amount of water, without thought.
My thoughts are not on the mechanics of building a drip castle with sand. Instead, I’m thinking of the spire that I’m building. Can I build these two spires toward each other and form an arch? Can I make this slender spire taller?
Frequently I fail and a part of the castle slides down, becoming part of the landscape again. Or becoming a foundation for a new part of the castle. No matter. It’s the building of the castle that brings me joy–not the owning of it. For I will never own it. The sea soon comes and takes it away.
Last weekend, I drove six hours down to Floyd, Virginia for a Code Retreat organized by Gustin Prudner and led by Corey Haines. There, I joined thirty-some people working in pairs and threes on Conway’s Game of Life for forty-five minutes at a time. Then, Corey would call time, and we would wash away all traces of what we’d built.
Does that sound like a waste of time?
It wasn’t, for we weren’t building code. We were building castles.
We weren’t concerned with completing the program, any more than I’d be concerned with completing a sandcastle before the sea washes it away. Instead, we were paying attention to how it went together. We were noticing how the small choices we made affected the structure that resulted. How the structure made it easier, or not, to build to greater heights.
In my pairs and triplets, I started differently each time. Let’s organize around the cell, and see where that leads us. Now, start with the playing board–a grid of locations. Then with the relationship of neighborhood. In each case, writing a simple expectation of that object, implementing it, repeating, simplifying, making the intent and responsibilities clear, lead to a unique castle of code. We were not so much writing tests and code, as thinking about the problem and expressing those thoughts directly in tests and code.
I noticed that by emphasizing what we were doing, rather than how we were doing it, gave us simpler, more malleable, and more robust code than we might get if we were trying to “get it done.” The awareness of the ephemeral nature of what we were creating freed us from mere concern over the construction–resulting in a construction better suited for an enduring achievement.
It’s a marvel that I’m still pondering.
And while we repeatedly build these fleeting castles of code, I noticed many other things. I noticed how easy it was to share ideas by typing them as code. I noticed how one choice affected the next. I noticed that when my thoughts became muddled, it was easier to back up to a point of clarity and start forward again. I noticed the joy of working together with others, fully engaged in the same endeavor.
While all the code has been washed away, the way I felt and the things I learned remain.
Thanks to all of you at Code Retreat Floyd. My future work will be better for having shared this weekend with you.