Beginner's Mind

This is the last day of my six week virtual stay at the Recurse Center. I don’t really feel like taking stock of what I did, mostly because it would make this feel too much like an ending, and also because there’s already some other posts here, so I thought that, instead, I’d try to write something about the idea of Beginner’s Mind and how it relates to programming.

Join me in a little experiment

Let’s first try to experience together what Beginner’s Mind feels like, with a little experiment.

  1. First think of a thing:
    • that you know nothing about and
    • that you think you would find really interesting.

    Your thing doesn’t have to be anything very specific or well-defined, it can be very broad (maybe “Python”, or “perspective drawing”, or “folk music”, or “meditation”).


    Got something? Good.1

  2. Now imagine yourself beginning to learn more about this thing.

    Don’t actually do it. Just imagine yourself opening a browser and searching for information, or opening a wonderful book about the topic, or buying your first drawing set ever, or listening to a meditation expert. Go ahead. Just imagine it for a couple of seconds. Maybe thirty seconds. I’ll be here, waiting.


  3. How do you feel? Write down three words. Okay, you can have five words. Or ten. Write down as many words as you like.2

If nothing else, I hope this little experiment helped you remember how a beginner’s mind feels, in case you’d forgotten.

Here’s a bit more reflection on how this relates to my experience over the past six weeks.

Applied Beginner’s Mind

This beginner’s mind feels pretty great, if you ask me. Someone who is first learning something can often be eager, curious, open-minded, full of energy. If you feel like you’re a “beginner” at something, then, generally speaking,

  • it feels OK to make mistakes (because you’re just starting out),
  • relatively small achievements can lead to great joy (because you’re making quick progress),
  • there is no pressure to remember stuff you learned before (because there isn’t any),
  • you’re not worried about things being really hard to attain (because you haven’t even tried).

Now here’s the big magic trick:

You can bring a beginner’s mind to things you already know something about.

In at least some views of Buddhism, this is the main idea that meditation teachers try to teach, because, they write, “in the beginner’s mind there are many possibilities, but in the expert’s there are few.” There you have something to put on a tile.

Star battle: an actual beginner among experts

Just last night, I attended a “puzzle party” event with several of my fellow batch-mates who had gotten really good at the Star Battle puzzle. I had never seen this puzzle before, but I liked it a lot, a sort of Sudoku but all stars and no numbers. ⭐☆✰⛤

I spent about 1.5hrs with them, during which we first did a supposedly “easy” one (which I found to be pretty hard) and then a hard one (which I then found to be do-able, with a little help from my friends). I learned so much about this puzzle, just by “osmosis” from the experts (virtually) around me.3

I think it was a big help for me that I was coming at it as a beginner, but surrounded by experts. It made me feel at the same time curious, excited, and also totally OK to say I wasn’t getting something, asking for help, asking the experts to slow down. The fact that the topic I was learning was “just” a puzzle and not something more “serious” like, oh I don’t know, CSS, also helped me feel comfortable. Which brings me to:

Asking for help and saying that you don’t know

If there’s a favorite meta-skill I got better at during my batch, it must be asking for help. Here’s some honesty (I think you deserve it if you made it this far through this post): when I feel confident about a topic, I like to talk about it and help people with it, but when I feel uncertain or don’t know much about something myself, I do not always find it easy to say so and ask for help.

This gets way worse when it is something that I feel like I’m “supposed to know”. Fortunately, the Recurse Center has created a culture and community where it feels genuinely OK to ask, ask again, no stupid questions, explain like I am five, and then ask again. Often, the questions I have that I think are the most stupid turn out to lead to the most interesting or fun results, like the time I asked if there was a way to make C compiler messages friendlier, it seemed like there wasn’t, and so I ended up making a (tiny) prototype (which incidentally also taught me something about how to make emoji appear in the terminal):

friendly compiler

Compilers: from superficial to in-depth

Speaking of compilers, I sort-of knew what a compiler was doing before I started my batch, but then during my batch I did two projects on writing compilers from scratch (the second still very much work in progress). Even though I already knew something about the topic going in, it was so much fun and I was so eager to Learning what is involved for the computer to “understand” the Python or Javascript or C code I write is something that helped me get a much more in-depth mental image of how programming works, by seeing how things work “under the hood”. This post by Julia has a lot more to say about that, also about asking questions, and it served as an inspiration for this post.

  1. When I did it myself just now, I thought of DNA, mRNA, Crispr, all things bio-tech. What did you think of? Leave comments below. Oops, there is no comments section yet because I know nothing about how to go about coding a comments section on the web. That could be an interesting thing too. 

  2. Here’s what I wrote: “curious, excited, a little scared, open minded, energetic”. What were yours? (… I really need that comments section.) 

  3. I tried just now on and was able to solve an easy 5x5 one in 1 minute 10 seconds. I doubt that I would have gotten anywhere under 5 minutes before “pairing” on this puzzle.