Building a LEGO model is like learning programming

Last night, I finally started putting together my LEGO birds set. I mentioned this in a Recurse Center post recently, and now I have put together the robin (a proper one, as one finds in Europe, not the North American one, which Nathan taught me was so named because of its superficially similar appearance, and it turns out the similarities end there). Two more birds to go.

Also, it’s awesome. Check it out! You can also enjoyed horse-tailed desert-ponytail mustachioed person, who is hanging out on the robin’s tail! (What’s the fun of awesome minifigures if you don’t mix them up in ways not originally intended?)

And then I opened my mouth and said this:

And it turned out that people were curious about this thing I find fascinating.


As I was putting together this first model last night, the first of my adult life, but also the first LEGO kit I have ever built in my whole life (although we had a big bucket of LEGO as kids; my brother and I fought over them regularly), the following kinds of thoughts kept occurring to me:

  • I should be learning more about how these pieces fit together. There are techniques I could use later.
  • Something isn’t quite right. Oh crap; did I just forget a piece? I did. Time to take another look and check my work.
  • I’m just copying what someone else has already made, but it feels like I am building something myself?
  • I can’t possibly learn all of these methods tonight. I don’t even remember what I did two pages ago.
  • I am definitely missing a necessary piece. I’m completely blocked. Oh no, wait, it’s right there.
  • I don’t know how to make a bird. I only know how to snap two pieces together at once.
  • Holy crap; I built a bird?

All of the italicized ones above are thoughts I have had while learning to program, too (especially at the Recurse Center, where it is cool to understand why and how things work, not just that they work). Some of them are a little more metaphorical when we bring them back to programming (I have yet to build a literal bird in code), but they’re still true, and this occurred to me by the time I was building the bird’s invisible innards.

What’s interesting is I felt very sure about the fact that I was building something myself, and that when it was done, I would feel confident saying, “hey, yeah, I made this thing!”

I often don’t have this feeling with programming (at least, not yet). When I build something, it’s because I’ve taken someone else’s instructions and made more or less the same thing (lately).

I’ve done a bunch of awesome tutorials lately (I built a Pebble Time watchface that tells the weather! I set up a Twilio number that I can text! I set up a Heroku app, and now the Twilio number talks to it!). But I still have this nagging suspicion that I’m cheating somehow, because I didn’t greenfield them.

The analogy is easy, though: this is essentially the same experience with a LEGO kit.

I’ve been ruminating on why it’s so hard to take the LEGO lessons and let myself feel more accomplished with what I’ve built in Python (and C/JavaScript) so far. Perhaps because it’s not a physical thing, because it feels like something that I could have sloppily copied without any input of my own, it’s hard to take ownership.

But LEGO? I touched every one of those pieces, and I made them work together, and it did not end in a maelstrom of suffering.

And I know that I made something.

Now to figure out how to replicate that feeling with computers.

4 thoughts on “Building a LEGO model is like learning programming”

  1. Builders almost never build something completely new, and they even less often use procedures or techniques that no one else has made or done. In my view, your programs are no less a Thing You Did than the Lego robin. Yes, someone else could have done it, and some could have done it faster or cooler or more fancily. But almost no one does what no one else has ever done. Just as the builder uses saws and cement and window panes that someone else invented and perfected and manufactured, you use guidelines and programming tips and language compilers and libraries that someone else created. That’s the real secret, in my view: that we do things not only as New (to us) Things, but also as Old Things that Others have Done. In learning a new skill, we step up into the long line of folks who know that skill. If we are lucky or really good, we add a bit to the overall mass of knowledge about our new skill, but just plain learning to use it, and learning to use it to do useful things, qualifies us a People Who Do This. You are a Programmer and your things are Programs. <3

  2. Also, did Nathan tell you that the proper European robin has the mellifluous name of Erithacus rubecula, while our not-really-a-robin goes by the far less mellifluous Turdus migratorius?

    1. Yes! So spectacular. I’m pleased they went with the darling little European one with the lovely name.

Leave a Reply

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