Computers Are Hard

Wojtek Borowicz
Computers Are Hard
Published in
4 min readSep 27, 2020
Illustration showing hammers smashing a computer screen with the shrug icon on display.
Illustration by Gabi Krakowska.

Everyone has heard that the most terrifying words in the world are supposed to be ‘I’m from the government and I’m here to help’. But I’ve been doing tech support for several years now and I can tell you there’s nothing more dreadful than when a support ticket starts with ‘I’m a software engineer myself and…’

From there, it can go one of two ways. The customer either is going to prove patient and understanding, or they will ignore everything I say and will then proceed to pronounce me and the entire company I work for a bunch of lazy morons who don’t know what they’re doing.

I get the customers’ frustration. Software can be maddening even when it works as expected and much more so when it doesn’t. But as much as some days it feels like apps exist just to spite us, they don’t. Software users, even savvy ones, often lack understanding of how complex things can be under a sleek interface. It takes you a second to click ‘Log in’ on a website, but that second triggers a cascade of processes. A signal from the mouse to the computer, an HTTP request, an authentication handshake, fetching assets from the CDN. And everything is in a continuous deployment and connected to systems that are also in continuous deployment. Then on top of that there are humans making decisions about the way to put these pieces together. And those decisions can take weeks of deliberations because when you pull what looks like a loose thread on a simple feature, layers upon layers of intertwined systems start unraveling.

Or, as a software engineer Steve Klabnik put that, ‘motherfucker, some of us ran fucking in-person mediation to try and resolve the intense disputes around this decision’.

The sentiment of people mad about something they don’t fully understand but perceive as simple is all too common. I catch myself doing that more often than I’d like to admit. And I wish to change this. That’s why I set out to interview a group of software engineers, each specializing in a different aspect of the field. The goal was to explore and explain why software is more complicated than it looks even to a trained eye. Some of those reasons are technical, while others stem from human fallibility and how the discipline of software development bears the consequences of these failings. Each conversation started from the same premise. I asked my interlocutors questions that were simple to an expert, but with one caveat:

‘Explain it to me not like I was five, but like I was a reasonably smart 30 year old who doesn’t know anything about what you do’.

Welcome to Computers Are Hard.

Below you will find eight interviews. In the first one we dive into the thorny questions around why software breaks and how engineers approach fixing bugs and outages. In the three conversations that follow, we dive deeper into the guts of apps and websites to investigate different components that make them work (or not): networking, hardware integration, and security. From there we move on to talk about how engineers work on ways we perceive and interact with software. We discuss speed and performance, accessibility, and representing different alphabets and languages on screen. Finally, we go all the way back to how software is made and why the mainstream approach to software engineering might not be the best there is.

Thank you for tagging along. I hope you enjoy the journey. I’d also like to thank the eight people who agreed to be interviewed for Computers Are Hard, Gabi Krakowska for drawing the illustrations, Rafał and Pikor for their advice when I was starting this project, as well as Karen for proofreading.

P.S. Software permeates our lives, politics, and economy. And it’s not neutral. Spread of misinformation, demolition of privacy, upheaval in labor and housing markets: these are all consequences of how software is made, by whom it’s made, and what incentives and values drive people to make it. These are important conversations, but they often lack nuance. Discourse around the problems plaguing the tech industry — and problems the tech industry brought upon us — doesn’t distinguish between malice, incompetence, and lack of foresight. And we can’t engage in those conversations productively if we don’t understand what we’re talking about. I purposefully focused Computers Are Hard on the technical aspects of building software and I hope it will make understanding this weird, complex world a little easier.

--

--