We're doing software wrong

I have a friend named Ray, and Ray has a dog named Eula (yes, that EULA, and yes, Ray enjoys making bad jokes). As some of you may know, I also have a dog, whose name is Rover:

A dog sleeps on a bed, hugging a stuffed toy fox

People with dogs must walk these dogs several times a day, and since, as previously established, Ray and I are people with dogs, we walk them several times a day. Sometimes, these walks are coordinated (either by chance or by design) to allow us to chat together whilst we walk. Since Ray lives in Belgium and I live in Stockholm, we must rely on the magic of technology to enable these conversations.

Actually, I was just thinking about that the other day. I spent a year studying abroad in Japan in the year 2000 BS (Before Skype), and whilst VOIP did exist, you either needed expensive hardware or a Linux box with complicated software that only the geekiest of Linux geeks could make work. My parents had neither the hardware nor the Linux expertise, so when I wanted to talk to them, I had to use this legacy thing called a "tele-phone". It's like a phone, but without the screen and the Twitter and all of that. And international calls were bloody expensive! I bought these phone cards for ¥5000–about $50–which had about 15 minutes of credit on them. And now it's just free to call anyone with an Internet connection and an app. 🤯

In any case, Ray and I walk and talk once a week or so, and the conversations go all over the place. There's a lot of Clojure (Ray's also a Clojure dev), a lot of politics, and some existential rambling. It was on a walk a couple of weeks back that we came to the shocking conclusion that we're doing software all wrong. We've been talking it through a bunch since then, and are trying to figure out how to explain this to people who are not us. When we do figure it out, expect a series of blog posts on the subject. 😀

It's really cool to have an opinionated friend that I can talk to who isn't afraid to disagree with me or point to flaws in my reasoning. Disagreements in good faith are one of the best ways to develop ideas, discard ideas, or figure out how to explain ideas. Of course, we don't disagree about everything; in fact, it's more common that one of us says something that the other one has thought a little about, then we riff on it and explore it.

The other requirement for this to work is that both you and the other person have to be genuinely interested in what the other person is saying, and listen actively. It's so common for a discussion to be more like waiting for your turn to talk instead of actually listening. There's this pithy little saying something like "it's the responsibility of the communicator to be understood," and of course I get the idea behind it, but like so many pithy little sayings, it leaves out the context and in so doing, absolves the listener from their responsibility in the conversation.

That's a topic for another day, actually. We have loads of pithy little sayings in software like "don't repeat yourself" and "if you can't measure it, you can't manage it," and I think they do tremendous harm when misapplied, which is most of the time.

That's it for today. Just remember: a stitch in time saves nine!

🏷 waffle
📝 Published: 2022-08-26