Let's jump into it.
All tutorials are not created equal
Imagine yourself as a lab rat.
As you learn and experiment, pay attention to the kinds of tutorials that work for you. Many will not work. That’s fine. In fact, that’s exactly how experiments work until you find a solution.
After you strike gold, stick to it, consume it voraciously and then find similar tutorials like that to continue rapid growth.
When I started, I used to bang my head against Head First Java
, the book. But after studying for many hours, I just wasn’t getting anywhere. Yet, everyone online said it was the best book ever. But an old java youtube tutorials did it for me.
I wish I could say this stopped after my 1st year.
Fast forward 2 years down the line when I started learning algorithms and ALL
the blog tutorials I followed just didn’t make sense until I watched Youtube videos on Hungarian folk dance teaching algorithms.
And it just clicked.
Since then, my approach to learning has been to learn the same thing from multiple places until I find the instructor and style that works for me.
Work within fear; not against it
I’ll admit: this one is easier than done.
But you have to master this if you want to last long.
There’s this temptation to fix your fear first before you continue to learn. Unfortunately, it doesn’t work like that.
In fact, you’ll spend a lot of time trying to make your fear disappear that it’ll only double your anxiety. You have to find a way – your way – to acknowledge that you’re afraid, and frankly will continue to be afraid for a long time, then work within that realization. No need to fight it.
Sometimes, this fear disappears as you become more proficient.
Other times, it vanishes for a while and comes back when you get into a new environment, work with smart people, or move to a completely new stack.
It’s okay. This IS the life.
It’s a sinusoidal wave – endlessly going up and down. Don’t take it too seriously or you’ll lose yourself.
You’ll forget a lot of things
Deeply understanding this will change how you learn.
I can’t can’t the number of times I took Introduction to Python programming on Udacity, Coursera, etc and still forgot everything.
It’s so annoying.
But I’ve since learned that you’ll forget anything you learn in isolated exercises because they are stored in short term memory. Neuroscience research shows that this is just how the brain works.
If you don’t want to forget, test your knowledge using spaced repetitions. To do this, build projects.
I’ll give you a concrete example: len(myList) will give you the length of a list in Python. You’ll learn this in Udacity’s intro course.
Come back a month later and you might not remember if it’s len, length() or myList.size( ).
But with spaced repetition through a project, the outcome is different. For example, you work on a 2-month long Django app for new coders where you need to count multiple times the number of users, the number of exercises done, the number of chats, etc. Imagine doing this throughout the span of the project, for two months. it’s hard to forget what len( ) does.
This is a trivial example, but hopefully you get the idea.
New learners can start with simple, isolated examples.
But if you’re not practicing within the scope of a project that makes you use and reuse what you’ve learned, nothing is going into your long term memory;
it’s all short-term. And you’ll forget.
Consistency > hard work
Consistency is king.
When you start learning, you lay down neural pathways that make it easier to retrieve information. According to Neuroscience research, these pathways only get strong through frequency of use, not just intensity. This means 30 minutes a day, for 5 days a week is way better than 2.5 hours one day, only once a week.
Same hours; Different impact.
Don’t just work hard, apply wisdom here.
Talent = hidden practice
It’s easy to dismiss progress as talent.
My first programming class was in C++ and my classmates refused to believe I had never coded before because I was just-so-talented
But what they also refused to accept was that right after class, I would spend five hours typing cout << “this is my first program”,
realize it didn’t run because I forgot a semicolon; retype it and realize it didn’t print out my statement on a new line because I didn’t add endl
This deliberate practice built perceived talent.
Talent is sexier than hustle so no one wants to hear that you worked hard and got here. Just tell me you were born this way - it’s more believable.
But becoming a proficient developer is like playing an instrument.
Only a tiny few are born talented. The majority can only get as good as the amount of practice they put in.
And you can immediately tell a student hasn’t been practicing the moment they sit at the keyboard.
You’ll meet a**holes
I’m not sure what it is about this field that attracts a**holes. Maybe because coding gives the feeling of having a super-power or a rare skill.
If you’re a newbie, you’ll meet those who’ve been coding for years and think no one else should come in.
A windows developer only? You’ll meet linux fanatics that think you’re mediocre.
If you’re a woman, you’ll immediately be dismissed because of your gender. I know this from personal stories from colleagues over the years.
If you’re a minority, you’ll meet people who think you should only fetch coffee; not code.
If you’re coming from another field (particularly not STEM), you’ll meet people who automatically make themselves gatekeepers of the programming community. “We don’t want social scientists here; we’re purists!”
They’re online. At work. And sadly sometimes in your family. It’s not if you’ll meet them, it’s when. Learn to move on.
Things are getting better but there’s still a lot to do to educate people.
But don’t let this deter you. Build your resilience so you don’t quit after you meet these people.
And when you get to the top don't be an a**hole.
Master 1 thing
New devs tend to jump around learning a lot of things.
Okay, it’s not just new devs; it’s also experienced folks.
You learned React for one week.
Then Django for two weeks.
Laravel for three. Stop
You need to wake up and realize that the harsh truth is that you’re simply extending the time it’ll take you to truly learn anything.
“If one is a master of one thing and understands one thing well, one has at the same time, insight into and understanding of many things.” - Vincent Van Gogh
Pick one thing.
Stick with it for a few months – ideally 6 to 12 months before you move to something else.
This has two benefits:
- You’ll go deep enough and hit critical mass that moves you towards mastery.
- After you master one domain, you can transfer knowledge to another.Learn Flask and you can easily walk into Django. Learn React deeply, and you can quickly identify the pros and cons of Laravel within a few days.
Software dev is an ever evolving field.
But if I had to, I’d do it all over again.
Thanks for reading
If you have any questions, let me know.
I’m trying out a new initiative to help new developers feel less overwhelmed and learn smarter.
To be honest, I’m not sure what this looks like yet. But I’m putting together some resources and write-ups based on what people need the most help with.
If you’re interested, I’m @LifeTechPsych
on Twitter. Feel free to DM me what you’d need help with.
Heads up - I love research so I tend to back my advice and approach with concepts from Behavioral Psychology and Neuroscience.
: removed mention of old java youtube tutorial I used back in the day but I see is now discouraged. Edit 2:
This blew up more than I expected. I'll do my best to get to all questions and DMs. There are interesting questions about tutorials and studying patterns that I think others will benefit from so I'll shoot to write posts in the future that specifically address those. The Learning never stops! Let's go!! Edit 3:
I initially didn't link to my blog post with images. But another blog copy-pasted this poorly and w/o credit. So here goes a proper blog post