A few days ago, I finished re-reading Michele Cushatt‘s book Undone, an incredible journey through what she describes as an ‘unexpected life’. I cannot possibly do the book justice, save by telling you to go out and buy it, right now. I was reminded of her book today when thinking about coding and software development (which I do way too much for someone who is principally supposed to be a tool user, not a toolmaker).
Broken
There’s a style of Japanese pottery known as 金繕い (kintsukuroi), in which broken pottery is repaired with a mixture of lacquer and fine-grained gold or silver dust. The first time I saw a kintsukuroi bowl, I must have been about 12. It was unceremoniously stacked among a lot of other stuff in a side room of the Kunsthistorisches Museum in Vienna, which hosted an exhibition on Asian pottery. It was as close to a transcendental experience as I have ever had.
Kintsukuroi accepts brokenness as part of life. It accepts the fact that Things Break, and sometimes not all the king’s horses and not all the king’s men can put what was broken back together again. It is a brutally honest acknowledgement of what it means to live in an imperfect, fallen world. But at the same time, it is an acknowledgement of the fact that yes, sometimes, you cannot put something broken back together again with seams fitting in lattice-to-lattice perfection. But what fills up the empty spaces, what fills up the gaps of what used to be, can be valuable. Just as the few drops of gold lacquer in a kintsukuroi bowl are worth more than the bowl itself ever was, brokenness and healing can make us something more valuable.
Coding is hard. It’s heartbreaking. It’s sometimes frustrating. A few weeks ago, I spent hours trying to figure out what to make of a fifteen-line, completely obscure error message in R citing various Java code citing C++ code… I was near punching the screen.
It turns out it was the system’s way of telling me the server connection timed out. Did it say so? Heck no. It took hours of digging and debugging around to find out how a Java exception in the middle of R code even made sense. Those are the moments you just want to smash some of the objects in arm’s reach.
The only good thing about these moments is that there’s a faint chance you’ll remember them. That, by the way, is called growth.
Mended
Which leads me to the point of developing immunity to heartbreak. I wrote my first piece of code that I actually dared to share with the wider public in 2000. Github wasn’t around yet, so people shared code on mailing lists and messageboards. I posted this snippet of code I wrote to calculate the haversine distance, written in Python, that for some reason didn’t run.
Within an hour, I had 25 comments. They ran the gamut of “just give up already” to “this is some of the worst code I’ve ever seen”. In other words, the kind of feedback you aren’t allowed to give these days. Now, I’m not a particularly thick-skinned person, and it duly broke my heart.
I got upset… until I felt something stir in me, a resolve and an unwillingness to leave it at this. I decided I’m going to work on my code until I could turn out the best haversine implementation that I can. It took me the best part of a month. I posted it to the same messageboard, in the same thread.
The same people I thought were absolute jerks now sent appreciative comments. One even noted he learned a new trick from my code.
That’s when I understood the people who broke my heart only weeks ago didn’t do so out of ill-will or meanness. They did so because they, too, had their hearts broken day by day by the interpreter’s harsh output. And they knew that getting your heart broken by people is a lot easier than getting your heart broken by a machine.
Heartbreak is important. Heartbreak is what happens when you try to scale a mountain too high. Heartbreak is the sign that you’ve gone beyond your comfort zone.
And growth happens in that space. Growth cannot happen in a space of continual heartbreak – that’s just pure frustration, and frustration causes resignation, not growth. But a space without heartbreak has no challenges, no risk, no disappointment, no growth.
If you love something, go out and make it break your heart.
Then stand up, and try again.
And again.