Music box, copyright CC BY-NC-ND 2.0 by Lys*

I recently posted about doing the Bowling Game kata in Node.js. On Google+, an online friend of mine Aaron commented:

Not being a software engineer, I just like reading how you write about code development. You’re clearly part of a movement that is about improving your work life’s fluidity. As your writing conveys, this encompasses efficiency and skill, but also has a notable element of beauty. I wonder why this type of movement is not present in more career fields.

I saw this as a strong complement. I’m so glad that Aaron saw my passion for both subjects in my writing. I was particularly taken by his description of the movement, which captured how I feel about my work and inspired me to expand on it.

I see myself as a shaman of sorts, a word that came to me as I’m writing this. I have one foot in the software development world, where I help solve problems for a living, primarily by programming computers. The other foot is in the lean and agile delivery space, which is focused on efficiently solving problems through delivery of incremental value. I see a number of parallels between the two worlds, but many of my colleagues don’t. When I point them out, like the similarities between refactoring and story grooming, and it’s as though I performed magic. Sounds like a shaman to me.

Aaron is right, a lot of lean and agile practices are all about increasing fluidity. We talk about the freedoms that product owners have to change priorities to suit evolving understanding of the customer and the problem. We talk about the freedoms that teams have in ordering their work so that they can develop as efficiently as possible. We talk about supple design, where the product can take a different direction to accommodate the discoveries made while constructing it. All of these are difficult, and all the people I know who do it well are highly skilled in a more than one discipline.

Those people I describe sound like Extreme Programmers. They know how to wear many hats, how to maintain an eagerness to learn and to share solution ownership. From the little time that I’ve spend in an XP shop, I know it’s an environment I’d thrive in. The moments when I can bring those collaborative practices into my day are some of my favorites.

I think those of us who practice software development this way are drawn toward the beauty that Aaron describes. We talk about it more often as “elegance”, admiring elegant designs or elegant solutions to problems. Yet I’m reminded of the book Beautiful Code, which is a collection of essays on how leading software designers approach their, dare I say, art.

Reading his comment, I felt like I was in their company. Thanks again, Aaron, you made my day.