Robots, robots all the way down
I’ve been a software engineer most of my adult life—nearly two decades. And somehow, I still cant explain to friends and family what I actually do at work. It bugs me. I love explaining things. I love the work. So why is it so hard to explain?
Here’s the metaphor I keep coming back to: software is a factory of robots. Sometimes sprawling and multidimensional, but still a factory of robots.
Each robot has a clearly defined job. One translates Spanish into English. Another stores messages until someone asks for them. A third checks that the power’s on before anyone else can work. Each robot only worries about what it takes in and what it gives out. It doesn’t need to know what the next robot does with its output.
Robots behave by following protocols—rules of interaction. For example, two robots following a politeness protocol know that if one says “hello,” the other replies “hello.” Simple, but crucial.
rules of engagement and other behavioral patterns shared between robots
For a slightly more involved scenario, think of the mail carrier. Their protocol is to pick up letters from a box only if they have a particular stamp. The letter, the box, and the stamp are examples of our next topic: objects. Objects aren’=t robots. They don’t act. They’re just things robots pass around.
Often, objects represent real-world stuff—a customer, a ticket. Sometimes they represent data about the world or the system itself. Other times, they’re glue: abstractions that help us coordinate the robots.
things robots pass around; they often represent real-world entities or data.
So you can think of me as a factory floor designer arranging robots to pass objects via protocols. We write new robots, tweak old ones, and sequence them so that, together, they get valuable work done. Think of us less as mechanics and more as designers and overseers of the factory floor. Our robots aren’t hunks of metal or self-aware automata; they’re replicable, flexible, evolving pieces of logic.
The metaphor is simple if you imagine a few dozen robots. In a real application—even a relatively simple one—it looks more like tens of thousands buzzing around at once. To keep order, we group them into types. Each type defines the shape of what goes in, what comes out, and the expectations for how a robot should behave, given those objects and its protocols.
contracts for the inputs, outputs, and behaviors of robots.
And there’s one more key idea: layers. Software engineers spend a lot of time defining boundaries between sets of robots. Layers let us manage complexity and keep track of the whole as the number of robots grows. They can also help dozens or hundreds of engineers work together across sub-disciplines without stepping on each others’ toes. We’ll come back to that.
That’s enough pieces for the metaphor to carry us forward. We’ll use these terms a lot.
There’s an old story: during a lecture on astronomy, a student insists the world rests on the back of a turtle. When asked what that turtle rested on, the student replied: “It’s turtles, turtles, turtles all the way down!” In software, it’s robots all the way down—layer by layer, abstraction by abstraction.
That’s what this blog is about: exploring the hidden, intricate assembly lines of software—the ways robots build robots across code, compilers, pipelines, and tools. We’ll use this vocabulary—robots, objects, types, layers—throughout. In the coming posts, I’ll introduce MyStocks, a project I built while juggling half a dozen new-to-me technologies, including plenty of time getting my feet wet with generative AI tools. Along the way, I’ll also share a bit of my own story, why I decided to start writing now, and how I see our craft and industry evolving.
Welcome to Robots All the Way Down. Let’s see how far we can go.
🤖⬅️🤖⬅️🤖⬅️🤖⬅️🤖⬅️🤖
↙️ ↖️
🤖 🤖⬅️🤖⬅️🤖⬅️🤖 🤖
↘️ ⬆️ ⬆️
🤖 🤖➡️🤖➡️🤖➡️🤖➡️🤖 🤖
↘️ ↗️
🤖➡️🤖➡️🤖➡️🤖➡️🤖➡️🤖➡️🤖
(emoji drawing of robots passing things downward in a spiral)
*While this is my first time actually explaining things this way, I expect we’ll be able to talk about all of the most important topics in my field without doing much more than I can imagine these bots. I’ll do my best not to stretch the metaphor so far that we get stuck in the weeds.