I spent most of my younger years playing with code and learning a lot of things about software. You don't have to anymore, because here are the 4 most important lessons I've learned in teaching myself how to code for more than a decade.
I didn't just focus in one discipline, I explored multiple disciplines and tried all of them.
Was I good at them? Hell no I was shit, but it was all worth it because it taught me a lot of things early in life.
Learning how to Learn is your Best Asset
People don't realize how powerful it is to learn how to learn.
Learning how to learn means getting used to the initial hump that comes with venturing into uncharted territory. The pain and mental stress of searching for that information and trying to make sense of what it means.
It gets stressful and takes a lot of time, but getting used it means eventually having comfort in going through the pain.
Learning how to learn also means making progress in knowledge even if you don't have someone present to teach you. You don't wait for anyone to explain anything to you. Instead, you jump into another resource and see how it can add into your knowledge and help you in understanding the concept.
It's seeking for that information and continuing to do so until you find the answer, even when no one is there to spoon feed you with information.
This means that you are also willing to test things out, if no one can provide you with answers.
Is that all? No, it gets better.
The more you go through the motions of learning, the more you realize: "DAMN! I can learn anything."
Eventually, you develop steel balls for learning and get into any challenge because you understand deeply that no matter how hard something is, you will eventually learn it by putting in time and energy.
You develop this unshakeable confidence in facing the uncertain, because you are 100% certain that you can learn it.
Now that's powerful.
Don't Predict. Learn as you Go.
What most people would do in order to git gud at programming, is to learn a lot of things ahead.
They'll do marathons to go through bootcamps, data structure books, coding problems, and a whole lot of other things.
That's inefficient. Trust me. I've been doing this for more than a decade.
Yes, the fundamentals matter, and you should at least know enough of them to build something and make progress.
Why is that?
The best way for you to know what to study is to start building now.
As you build your app, website, game, algorithm, etc. you will always hit a wall that I call: the ridge of stupidity. (Boy it sounds nice, but I just came up with it just now hahaha)
The ridge of stupidity is a gap in knowledge that you realize you have as you build.
You want to build a rotating loading icon, but you don't know how to?
Yes that's the ridge of stupidity and you know what? It's okay to be stupid. It means you're not in a place of comfort, but in a place of growth.
You see, this ridge of stupidity is your signal to go and learn something! It is in fact your road signs showing you the way!
Once you hit that ridge of stupidity, go out there and learn what you have to learn in order to make more progress with what you're building.
In essence, programming is just a cyclic finite state machine of build, fail, learn, repeat.
- Build and make progress until you hit stupidity ridge
- Fail is the state where you realize your gap in knowledge
- Learn is the state where you go out there and learn more in order to make more progress
Why is this efficient? You don't spend time learning something you don't have to learn or at least not yet! Instead, you are more efficient with your time because you learn as you go and only spend a lot of time learning things you actually need!
This habit of learning as you go eventually compounds your knowledge and solidifies your confidence in learning!
You will turn into a fearless learner who can do anything he puts his mind to!
Focus on One but Know A Lot
Another thing I noticed is that people would jump from one discipline and another. This is great! This is fun!
Until you have to get clients or look for a job.
In one of WIRED's videos, Mark Cuban was asked this question:
Whether in business or sports... when building your team, are you more interested in getting someone who is an expert at something? Or would you rather have someone with more potential?
Mark Cuban responded to this with:
Everybody's got potential! Everybody! I want someone who knows something. Give me someone who knows their shit. Everytime and then I can turn it into something real.
Think about it, when you're sick who do you go to? The doctor, because he knows how to help you.
So don't spend a lot of time trying to master multiple disciplines! That's a recipe for mediocre-at-everything-syndrome.
Does this mean you stop learning other things?
Hell no! Learn enough of it so you understand the fundamentals. Learn enough of it so you can effectively empathize with other disciplines. Learn enough so that you have a different way of thinking.
You're not necessarily a master at those things, but at least you know the options. You have a firm grasp of what is possible.
Wide in perspective, but deep in one skill.
Documentation is Da Wae
Learning from articles and videos is nice, but getting comfortable with navigating different documentations and getting used to how you can efficiently find information in them is the best way to approach your learning!
Code is the first thing updated and documentation will always be second.
Tutorial videos or articles will take more time before decent ones come out. Hence getting used to diving into documentations and finding information within is a valuable skill that will not only speed your learning, but also make you comfortable with technology.
"I don't know, but I'll check the documentation."
Find Comfort in Learning the Unknown
By now you should notice that comfort in the unknown and confidence in learning the unknown are two pivotal things you should learn in your programming journey.
They will not only help you learn how to code, but also teach you how to thrive in an ever-evolving and ever-changing world of technology (Moore's law!).