Nader writes in worried that he started coding too late and his progress is too slow. Here's my response.
First: it’s never too late! Nice thing about programming is that the later you start, the more annoying problems others have solved for you.
Do you use a specific productivity system and workflow when you are watching a course or read a book?
My studying skill is not the best. Never did well on exams and tests of skill. But I’ve picked up a couple of tricks from speed reading back in college.
I try to have a specific problem I want to solve. A goal.
That helps ground your learning and provides motivation. Looking for an answer to a specific question helps with focus and it helps you notice the useful details.
Then I start with a broad map.
Find articles, courses, books, even wikipedia is great. Anything that gives you a broad idea of what’s out there. Basic concepts, general approaches, etc.
Like a scaffolding with lots of holes. Sometimes known as “the forest”
After that jump into solving problems and building apps. When you encounter a missing gap, look for a deep dive resource.
This is where docs come into play, articles on specific topics, sometimes you get so in the weeds you gotta dig through the source code of a library.
You could say my framework is a random walk driven by a central project or idea I’m chasing.
Do you take notes as you watch/read or you finish a chapter/module and then start practicing or reviewing?
When reading for broad understanding, I let books wash over me. Preferrably in audiobook.
If somethign specific sticks out, I write it down as a tweet or a blog. After writing things down I rarely have to look at my notes again. Kinda just sticks.
For resources that I’m reading to solve a specific problem ... I’ve never finished. Usually I run off and start experimenting long before the end. Then refer back to the resource when I get stuck on something.
How do you remember technical concepts for long-term use?
I try not to memorize anything.
You can look up details with google as long as you remember a rough map of where to find them. If it doesn’t stick on its own that means it wasn’t useful yet. When it’s useful and solves a problem, it sticks around.
Or as I like to say: "The good shit stays"
How much does it take you to finish a course or read a book? (I'd like to know a metric to see how fast I should learn)
Depends on the book or course.
There's business courses I’ve been poking at for 2+ years as I encounter new challenges and refer back. Or use them as a guide every time I’m doing the thing they’re teaching.
Then there’s audiobooks that I breeze through in 2 or 3 afternoons and their underlying idea sticks. But I won’t even know which book it came from.
Some 1000+ word articles I scroll through in 2 minutes, read 3 paragraphs in the middle, and use that to solve a problem. Don’t even read the whole thing :)
How do you get better at a skill when facing challenges and frustration?
Remind yourself that it’s all part of the process. You’ll never learn how to bomb a hill on a longboard without a gnarly new scar or two.
How do you learn a new tool/concepts in computer science?What is your approach to improve your skills in terms of practice?
Use it. Solve problems. Play around.
Programming is a lot like cooking: you can’t learn squat by reading. You gotta get your hands dirty. Practical hands-on experience is all that matters.
And hey, I learned about functions and procedures when my programs couldn’t jump more than 4096 lines in Pascal when I was 12 or 13. I thought “what the fuck this is dumb, surely there’s a way to write bigger software than this!” and dug into the help files.
My English wasn’t great back then so it was interesting. Helped me learn lots of English! And I learned that yes indeed you can write programs longer than 2*4096 lines.
What separates excellent developers from the rest in your opinion, when you can get things done using nmp packages nowadays with so much abstraction from writing codes?
Why would using npm packages be a bad thing? Your job is to solve problems. Users don’t care how 😉
Excellent developers know when a solved problem isn’t worth solving again. There’s enough domain- and problem- specific details that only you can solve.
Fundamentally I encourage you to just try. Don’t worry about learning everything. Learn enough to get started and go from there.
Cheers,
~Swizec
Continue reading about Reader question: How do you learn programming topics?
Semantically similar articles hand-picked by GPT-4
- I've hit a glass ceiling of coding productivity. Now what?
- 25 lessons from 25 years of coding
- Why senior engineers get nothing done
- A holiday CompSci reading list for you 🎅
- Why I still haven't learned Haskell
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below 👇
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails 💌 on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. 👌"
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 ❤️