Special snowflakes and canonical examples
Posted on February 9th, 2018
I’m proud to be a beginner! But when it comes to the concrete steps of learning something new, I often feel undue shame about my approach.
At first, I thought it was a fear of not knowing things or, more likely, a fear of other people seeing of me as a beginner. This doesn’t add up though. I don’t hesitate to ask questions when I’m stuck, and I pride myself on my love of picking up new skills and learning new things. In fact, going from zero to some knowledge on a topic is one of my favorite feelings.
However, I’m always a little ashamed to follow the canonical beginner resources for a topic. I don’t think this is a healthy mindset and try to overcome it as much as possible, but it’s interesting to consider where it comes from.
When I was learning about how to build basic decentralized Ethereum-based apps, I realized what my hangup is: it’s a hipster impulse, a special snowflake syndrome. I realized this because I ran into a bug my Solidity contract, and I used Github’s search to find another person who had followed the same Truffle tutorial. I pasted in the exact line of code from the tutorial and gasped in horror to discover that there were hundreds of repositories with not only that exact line but the entire identical file. Upon quick reflection, I realized my horror was not that it was a basic tutorial, but rather that I was following along with the same thing that so many others were doing.
This is something I want to quash in myself as much as possible. In this particular instance, the tutorial I was working through was fantastic. It covered all of the key topics I would need in my upcoming project with exactly the right level of rigor. And it was only because it was such a popular starting point for other beginners that I could look up how people solved the problem I was having in the first place.
It makes sense to gravitate towards the most well-known resources for a subject, especially early on in the learning process. For example:
- When you first pick up Lisp, it makes sense to build a little interpreter, because it really does get to the core of the most powerful concepts.
- When diving into urban design, it make sense to read Jane Jacobs—whether you agree with her views or not, they’re going to set the stage for a lot of conversations down the road. An intuitive understanding of how she fits into the world is key for participating in those conversations.
- When you first start playing the guitar, it’s a good move to learn a C scale and the four chords that make up almost every pop song, because you’re destined to want to be able to play something recognizable when your friends bully you into performing for them.
- When you learn Redux, it’s great to build yourself a little connected Counter component, because it illustrates the core ideas of the state container in a minimal example.
- When you start programming, it’s great to start with Hello World, because it’s something everyone can understand, and it’ll definitely be referenced later on.
These are key building blocks as you learn intermediate and advanced concepts later on. They’re canonical for a reason—they encapsulate critical concepts/patterns—and more importantly, they’re shared experiences by the broader community. It’s powerful that people have pointers in their mind that they can use as primitives for describing other things. They build a shared vocabulary that allows the community to collaborate effectively.*
Does anyone else feel this way when learning something new? And is there some reason I’m not thinking of that would support the impulse to branch out to less canonical examples early on?
* Of course it’s also not something to take to an extreme—it’s healthy to have some diversity in the way people learn things, because that probably also leads to a broader diversity of approaches to solving problems—but when you’re first entering a new field it’s invaluable.