You can’t let another person’s progression disturb you from yours. There will always be students like Mike; they’re younger than you, ahead of you in class, and smarter than you. Extrapolate this idea out beyond academics. Each one of us is on our own timeline. Taking random samplings of timelines out of context is never helpful. As long as you—and only you—continue to progress, everything is on the right track.
For any field, the people at the highest level are the ones who deeply understand foundation; that’s why they can break it sometimes.
If you find yourself stuck on a particular concept, ask yourself: is there a simpler concept beneath this that you do not fully understand? For example, if you’re struggling to understand how buffer overflow works, is it because you haven’t grasped function call stacks? Train yourself to pinpoint that more fundamental concept quickly. Once you’re proficient at digging down to the simpler concept beneath, you will rarely get stuck and your progression will accelerate.
School fills a short period of your life and the knowledge you gain there will be overshadowed by the knowledge gained later.
You don’t have to learn everything—which is unreasonable—but you need to be aware of everything on a basic level.
Web development is a very small part of application development and application development is a very small part of the software stack. Remember also that our software stack owes its very existence to the colossal hardware stack below it. Web development is a very, very tiny sliver in the mighty stack of computing.
Everything you learn—from low-level digital circuit design all the way up to high-level web development—has a position in the full-stack of computing. We don’t need to be an expert in everything, but we must understand each piece on a basic level.
Don’t go off and learn about the nitty-gritty details of the latest web framework before you understand the basics of the Internet. Imagine a standard breadth-first-search. You start by performing a well-rounded foundation traversal. After one level, you dip your toes into some intermediate topics. Before going too deep, make sure you come back up a level to reinforce the basics—then dip your toes back into the deep end when you’re ready. Before you know it, your baseline level will have elevated and you’ll be conquering advanced topics. Perhaps this is how Elon Musk went from programmer to rocket-builder.
There will never be a silver-bullet path to learning, programming, dating, politics, or life. Be wary of the strong opinions of others; it is impossible for anyone to tell you what is best—there is no best language, there is no best framework, there is no all-or-nothing, there are no absolutes. Everything in life comes with pros and cons that you should judge for yourself. When you’re a beginner and deciding how to learn, do not trap yourself with learning-paralysis. If you catch yourself looking for The Best Way, stop.
Here are two amazing mentors that have helped me—books and YouTube.
If you are going through difficult times, always remember that this moment is temporary; it’ll be replaced by more bad times and more good times.
Whatever you’re going through, I guarantee that someone has gone through it, learned from it, and shared it.
Never compare yourself with others. Accept that there will always be other people, on their own timelines, who are ahead of or behind you. Just focus on your own progression.
You will never—ever—get a perfectly individualized solution from the outside. There is no perfect programming language, framework, or solution.