To establish authority why you could probably consider my advice, I'll list a few things:
- I run a 140K+ YouTube channel where I have seen and learned a lot by interacting with people and how they learn things.
- I run three codedamn 1337 mentorship groups with 150 people right now, and I see people repeating many mistakes all the time.
- I have been a freelancer on Fiverr for a very long time (actively for 3-4 years), and have seen some horrible codebases along the way.
- I am a college student and have seen my peers learn from different places/resources and how they approach things in a short time. I have their experience and methods to compare to mine.
- I am the author of two books - Learning ECMAScript and Advanced Web Development with React - both available on amazon.
#1: Trying to master overlapping libraries/frameworks
It might sound stupid to master 2 ways of doing one thing, but you'll be surprised how many people try to learn React and Angular both. Or Angular and Vue. Or as a matter of fact any combination of modern frameworks and libraries.
In my personal opinion, you should not do this. A few reasons which come to my mind:
- You will need a lot of time and practice with the individual framework/library you choose, like React. This will involve the library itself and choosing the right suite of tools to go with it (framer motion, react-query, material UI, typescript, etc.) Learning the equivalents for the other framework, with the framework itself, say Angular, is a waste of your time, which you could use to improve your React skills alone.
- No company should require you to master more than one such library or framework. Products are never built with Angular/React/Vue all 3 together, or any combination of these two. You almost always need only one field of expertise.
- Going deep into a library/framework like this is much more important than going wide across multiple frameworks. If you own a little tech stack using which you can build anything, you are much more powerful than most people.
As Bruce Lee said:
I fear not the man who has practiced 10,000 kicks once, but I fear the man who has practiced one kick 10,000 times.
This applies very much to programming knowledge too. Knowing about many things is fine, but you should never be/attempt to be the master of a lot of things in the overlapping space.
#2: Algorithmic practice hell
You have heard about tutorial hell, meet algorithmic hell. If you're trying to crack an interview where you will be asked difficult algorithmic-based questions, then it is fine. If you are focusing on becoming a better developer, alongside basic algorithm and logic building, learn to also use your tools. Your tools (prettier, webpack, npm, devtools, debuggers, etc.) will help you be much more productive and you will learn a lot of things that applies to real-world job work too.
You should absolutely have a good amount of data structures and algorithms knowledge to build your logic. But if you find yourself spending a lot of hours on leetcode solving problems for weeks, you are going way deep into DSA than required. Again, one man's p.o.v.
#3: Not focusing on basics
#4: Not eventually using TypeScript
TypeScript can behave very very close to how a statically typed language works if:
- You always operate TypeScript in the strictest possible mode.
- You do not lie about your data types in code.
Point 2. is especially important because unlike other languages, your TypeScript program (which eventually runs as JS) will not crash if the types mismatch, because types are never checked at runtime.
You cannot, and should not optimize to learn JS completely in a small time-frame. There's just too much, even for web development front - Node.js and browser JS. Instead, you should focus on the things you want JS to solve and learn APIs/practicing around those.
You see, the more you will learn, the more you will realize there is so much more you can learn. According to me, aiming to learn 100% should not be the initial goal. Start small, and then learn parts of ecosystem as you need, i.e. start with browser JS, move to Node.js servers (while learning browser JS too), maybe then try out NativeScript or React Native to build mobile apps, or try out Electron for desktop applications. But I wouldn't try to learn everything at once.
In this article, a fair amount of text is for 13-year old me, who had no direction and was learning things, not in the most optimized order. Sure, it took me a lot more than some people to know, but I always enjoyed what I did (of course, except for the peaks of crazy frustration when code doesn't work). This was not mentioned as a point, but probably the most important point is to enjoy what you do. There would be highs and lows always, if you don't enjoy what you do, I fear you might give up in your lows.