Why Grace Matters (for Software Development)

Someone asked me why I named my developer training site “Graceful.Dev“, so I thought I’d write about that.

The theme of “grace” has been an emergent one in my work for years. I think that grace is an essential quality of resilient systems, at any level. Here’s an explanation, adapted from one of my talks:

I don’t have a lot of hobbies left, but one thing I still do regularly is take myself out dancing. When I go dancing, I generally go to goth/industrial clubs and electronic dance music shows.

If you’re not familiar with these kinds of events, they aren’t known for their couples dancing. Everyone kind of does their own thing. So while I’ve been dancing for many years, I’ve never learned to dance with a partner.

Every now and then someone will try to dance with me. It’s never pretty when this happens. One time someone tried to dance with me and about 30 seconds in they stopped and said “dude, are you OK?”

But this one time, someone I had just met invited me to dance with them. And I yelled over the music “I warn you I have no idea what I’m doing”, but they were insistent.

It was a fiasco. I really did have no idea what I was doing. But…

Every time I did something clueless and awkward, every time I botched a twirl, they made space for it, they flowed into it, and they came around again with a big, kind smile. And by the end… well, I was still awful. But I was smiling too, and starting to pick up on their cues, and they were making us both look good.

You know, the word “grace” is interesting, because it has two different meanings. On the one hand, it means beauty in lines or in motion. But if you were raised with a religious background anything like mine, you know that grace is also something that saves you.

And in that moment on the dance floor, I realized that these two meanings of grace are really one and the same thing. Because grace is something that makes space for you to screw up, and then turns it into something beautiful.

Grace is taking the random stream of events that are thrown at you and creating meaning. Grace is being embodied, mindful and reflective. It’s knowing where you stand in space. Grace is starting where you are. Gracing is working with legacy, instead of trying to start fresh. Grace is falling forwards and missing the ground.

Grace is extreme late-binding of all things. It’s deciding what to do at the last possible moment. Grace is leaning into the people near you, and trusting them to catch you. Or at least give you a hand up.

Grace is living in the present moment, not the future. Grace is laughing at yourself. Grace is forgetting what you’re “solving for” and just knowing what you’re pulling towards.

And when everything has fallen apart, grace is what saves us.

So live gracefully. Build graceful systems. And don’t forget to dance.

Here’s a video of the talk where (I think) I said this stuff for the first time, along with more about what these things mean when building software systems:


  1. thank you. i really needed to read this and watch that talk from 2018.

    i’m in the midst of yet again seeking employment in a market bloated with engineers chasing too few opportunities, and employers shrinking and cutting losses.

    the opportunity is to handle this with grace as well.

Leave a Reply

Your email address will not be published. Required fields are marked *