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.
Here's how it works 👇
And get thoughtful letters 💌 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. 👌"
Ready to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz components your whole team can understand with React for Data Visualization
Curious about Serverless and the modern backend? Check out Serverless Handbook, modern backend for the frontend engineer.
Ready to learn how it all fits together and build a modern webapp from scratch? Learn how to launch a webapp and make your first 💰 on the side with ServerlessReact.Dev
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are ❤️