Why Learning To Code Is So Damn Hard (Review)
Steven Kneiser
7-minute read ⚠️ Work In Progress
“What every beginner absolutely needs to know about the journey ahead”
I used to recommend this
I used to
…until this timeless essay transferred to a corporate blog with a bland redesign that took all of the soul out of it
In the name of what? Brand™? Innovation? This isn’t innovation. It’s a sloppy paint job for a re-brand just because this “digital asset” changed hands. Some teams rush to design logos & T-shirts rather than solve the problem at hand.
I’ll let you judge for yourself 👀
The Day Everything Changed
BEFORE acquisition
AFTER acquisition
You hate to see it, world-class writing that got bought & bent out of shape. Okay enough ragging on the acquisition.
…especially their bad paint job. Below is my curated summary & re-interpretation of this framework, using the images I preserved from the original post.
Learning to code is damn hard
& so is crafting a brilliant essay
(not to mention these illustrations)
Consider this my tribute to someone who actually deserves the credit for something in a league of its own. Great work, Erik Trautman! I hope they compensated you well. You deserved it.
Unnecessary Disclosure: I’ve never met or spoken with Erik
The Big Picture
You’ll recognize this brilliant image from BEFORE the acquisition. It’s the very first thing you see, an elegant puzzle before the author cross-examines every angle. This time we get to admire it up-close with relevant labels before we descend into each component.
(tap to open image in a new tab)
It almost feels wrong, like an unexpected spoiler, but I want you to appreciate that cohesive picture & how much information was packed into that original piece
“that rug really tied the room together”
–Big Lebowski
Why should we care?
What makes this so special?
Why is learning to code so damn hard?
Those are great questions
& fortunately there’s a great essay
Part I: Confidence
Day 1: “wait… I duct-taped together code that actually worked!”
Simply magic
You get this pure bliss. You’re an alchemist, a sorcerer. You not only punched a hole in some clay, but you did something that can repeated again & again & again & it won’t lose shape over time.
Simply magic
Day 2: “With a little elbow grease & a can-do attitude, I can code anything!”
Narrator: *whispers* “they weren’t ready”
You know that elevated sense of self you get to savor right after an expensive purchase? Maybe a nice home workout set? You’ve got peak expectations: your life is forever changed for the better. Definitely. Totally. But the Cliff of Confusion™ is lurking right around the corner. The day you get ambitious enough to bite off more than you can chew–to code something anew with minimal assistance–is the day you ride that rollercoaster deep into the seventh ring of hell.
No tutorials
No tapping on shoulders
No lengthy walkthroughs on the internet
But don’t worry, software isn’t about building things “from scratch” anyways (most of the time). Your end goal isn’t to be so flawless that you type code perfection as if you used a typewriter from 1960 with no delete key (i.e. without consulting other people or resources) …it’s actually quite the opposite!
The Desert of Despair™ is as enjoyable as it sounds: no foreseeable end in sight. You leaped into the deep end of the pool for the first time & now you’re just sloppily flailing around until you get your motions down. Don’t get me wrong: the sooner you boldly try to build something without tutorials, the better. You’re rocketing past the 99% who never tried.
It’s called the Cliff of Confusion™ because your confidence shrinks as your competence increases!
But Google-by-Google
~ you noodle through ~
You start preferring to “read the docs” instead of long step-by-step beginner tutorials, because docs are a denser source of information. You start accumulating a discerning sense of taste when you scroll through StackOverflow solutions: you might not understand every line, but you’re starting to read subtleties behind other’s code. “Oh that person just duck-taped crappy code together, but this solution looks robust”.
You’re starting to see the matrix
“He’s beginning to believe” –Morpheus
Your conversations with your code start to feel like this:
You start to worry less about “what I don’t know” & before you know it: you find yourself ready for a job
Part II: Resource Density
Like we just said,
soon those beginner tutorials run out
You get this bad feeling in your stomach that you may have memorized a bunch of one-off things, but you’re not seeing a cohesive picture. You don’t feel like you’re learning anything “new” as much as learning the same Day 1 concepts over & over again.
You’re stuck in tutorial hell
You start to wonder if there even is a bigger picture, or if you’re just an impostor who will never be good enough for this kind of work (don’t worry, you’re not broken or incapable). I’m not going to pretend that 100% of people can code, but no one would feel deterred if I told them 100% of people won’t be professional athletes (particularly because a considerable portion of people simply don’t care enough about sports to bother). If this is a field you’re even considering, I don’t care what country you were born in or what you look like: you’re almost certainly good enough.
Why the pep talk?
What does Resource Density have to do with this?
Because this is where The Doubt™ creeps in (& if you’re unlucky, it might haunt you a little longer than the others)
The internet is full of 101’s,
but you need to know where to find the reliable, advanced information, no matter the medium.
Part III: Scope of Knowledge
“I just don’t get this stuff”
It feels hopeless:
every concept you painstakingly master
only reveals more concepts you haven’t
Software development is non-routine
It’s one thing to do logic puzzles & algorithm challenges, but what most of us aren’t building from scratch with no scaffolding. A lot of problems are merely gluing two oddly-shaped ends together (emphasis on the “oddly”). There’s a wider language to be grasped if you want to connect pieces together.
On the path to conversational fluency,
you can’t skip vocab & grammar
This fluency is what simplifies all the complexity in the world to just: “oh, yeah I’m really just connecting these two large pieces together in this new way”. The human mind is really really good at computing with 2-4 things in mind. Without this familiarity & ability to recognize the relationships between smaller pieces, what would’ve been a simple 4 + 4 = 8
…implodes into: 1 + 0.5 + 0.25 + 1 + 1 + 0.25 + 1 + 1 + 1 + 0.2 + 0.3 + 0.5
You start small
You learn small chunks
But unlike other skills you’ve learned before, software is a Russian Nesting Doll: the layers of depth keep unfolding as far as you dig. The good news is you can pick which boxes you want to unpack & which ones you’d rather leave on the shelf. Your endgame probably isn’t classical mastery. We’re all specialists these days anyway.
So what?
- Have fun! (seriously ride this out & enjoy yourself. If you feel a deep satisfaction when you make magic happen & are willing to perservere through the doubts to get there, then you’re ready to move on.
- Oh you were serious? Great! try to build something/anything “in your local environment” without following a tutorial (or at very least, following half a tutorial to get started, but taking a complete left-turn somewhere to make something of your own inspiration …not just changing the color or text on the screen). Give yourself just enough leeway to feel the discomfort of not knowing what to do next & googling your way through that confusion (there’ll always be another tutorial).
- Never. Build. Alone.
- The only way you can fail is to quit. Just don’t quit.
Again, all credit goes to Erik Trautman
& I encourage you to read the original
(or what’s still standing)
I used to recommend this
I used to
I’ll savor my own copy from now on
⚠️ Full story: coming soon…