Swizec Teller - a geek with a hatswizec.com

Senior Mindset Book

Get promoted, earn a bigger salary, work for top companies

Senior Engineer Mindset cover
Learn more

    Why Understanding beats Knowledge

    In one of his best anecdotes, Richard Feynman shares a secret insight into understanding vs. knowledge.

    I often liked to play tricks on people when I was at MIT. One time, in mechanical drawing class, some joker picked up a French curve (a piece of plastic for drawing smooth curves--a curly, funny-looking thing) and said, "I wonder if the curves on this thing have some special formula?"

    I thought for a moment and said, "Sure they do. The curves are very special curves. Lemme show ya," and I picked up my French curve and began to turn it slowly. "The French curve is made so that at the lowest point on each curve, no matter how you turn it, the tangent is horizontal."

    The french curve is a drawing tool from the olden days. Before you could ask a computer to draw any curve.

    A french curve
    A french curve

    All the guys in the class were holding their French curve up at different angles, holding their pencil up to it at the lowest point and laying it along, and discovering that, sure enough, the tangent is horizontal. They were all excited by this "discovery"--even though they had already gone through a certain amount of calculus and had already "learned" that the derivative (tangent) of the minimum (lowest point) of any curve is zero (horizontal). They didn't put two and two together. They didn't even know what they "knew."

    Knowing vs. understanding

    And that my friend is why you should learn to understand not just to know.

    How many things do you know? How many tutorials have you followed? How many disjointed bits of info have you accumulated?

    My guess is plenty. Heaps. Lots. Many more than you realize. Ask you the right question and you'll be surprised to realize you know the answer.

    Ask you that same question in a different way and you have no idea. Never heard of it. This is why whiteboard interviews are hard – questions that you know, but out of context 😉

    Same as Feynman's students who knew the answer to "What is the first derivative of a function at its lowest point?" – zero.

    And if you asked "What is the tangent of a curve when its derivative is zero? – horizontal, d'oh. Every high schooler knows that.

    But show them a random curve and say it's got a magical property that the tangent is horizontal at the lowest point on that curve no matter how you turn it and their minds are blown. What is this sorcery!!?

    How understanding beats knowledge

    Understanding wins over time
    Understanding wins over time

    Understanding lets you transfer knowledge to new domains. With understanding you progress faster.

    Most software engineers learn by inference. Bottom up. You do it, I do it, we all do it.

    You look at the codebase around you, look for similar problems, and cobble together a solution to your problem. A tweak here, a tweak there, an online how-to tutorial or two ...

    You come to a working solution and understand nothing.

    Tomorrow you're back to square one. After hundreds of repetitions, you get faster and search less. No idea why it works, but it does so keep doing the same pattern.

    Fantastic when you're starting out. "A good software engineer is just a better googler", as the joke goes.

    But these baby gains run out my friend.

    You'll come to a point where you are the world's greatest expert at this particular problem. You are the most experienced on the team.

    You are solving problems nobody has solved before.

    When that happens, you can't just know things, you have to understand them. You need to pull together bits of info and stackoverflow answers and google results and random blogs into a coherent whole.

    You need to understand the reasoning behind those answers. The mindsets. The logic.

    Information vs Knowledge vs Insight
    Information vs Knowledge vs Insight

    And that's where learning through tutorials breaks down.

    How to learn for understanding

    We're obsessed with tactics. The knowledge. We shy away from higher levels. Who cares.

    You care. I hope.

    That higher level is what I aim to teach with my courses, articles, newsletters, all the things. I'm tired of boring surface-level tutorials.

    While important for practice and getting your reps in, I think they miss a crucial part of what makes you a great software engineer.

    What I like to do is a combination of top-down and bottom-up learning.

    Top-down learning is about frameworks, mindsets, and deep insights. You learn the structure of how things work. The basics. You'll think it never applies in life, but it's behind everything you do.

    Bottom-up learning are the tactics. The specific techniques. The little tips. You need these every day.

    Where the magic happens is hooking those bottom-up tactics into the mental framework you built top-down. You understand why the tactics work. You can transfer them to other contexts.

    And everyone says "Wow you're so smart! How do you learn new tech so fast??"

    Cheers, ~Swizec

    Published on August 28th, 2020 in Opinions, Learning, Mindset

    Did you enjoy this article?

    Continue reading about Why Understanding beats Knowledge

    Semantically similar articles hand-picked by GPT-4

    Senior Mindset Book

    Get promoted, earn a bigger salary, work for top companies

    Learn more

    Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.

    Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.

    Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help 👉 swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.

    Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers 👉 ServerlessHandbook.dev

    Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization

    Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections

    Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog

    Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com

    By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️

    Created by Swizec with ❤️