Fundamentals

April 1, 2024 (2mo ago)

Archive

Without a foundation to connect concepts, Your brain neurons struggle to connect and make sense of scattered information, leading to frustration, boredom, thus failure.

Software development is primarily about problem-solving, just like maths. Before you attempt to solve integrals and differential equations, you must assess your current knowledge level first. If you know absolutely nothing about math, you must start with basic arithmetic and go from there.

The question is, how do I learn or where do I even look ? The answer is simple: we live in the internet era, all information is free (even paid ones) so start learning how to look for shit on your own, you don't need to get pampered!

Getting Duped

You know what was the best way to make money in the gold rush? Selling shovels. In the 21st century, it's selling dreams. Bootcamps do it the best.

Stop falling prey to the false promises peddled by individuals and institutions eager to take your money by selling you unrealistic dreams. Just as you can't expect to achieve six-pack abs and bulging biceps in four weeks, with a magical training program advertised by some juiced up dude on Instagram, when you haven't stepped in the gym for a day in your life, you shouldn't expect to become a "full-stack" developer in 3 months through a bootcamp promising you that.

Connecting some JavaScript CRUD APIs together does not make you a "full-stack" developer, no one on earth is full stack, you cannot be at all places at once, you cannot be an expert at literally everything at once ESPECIALLY AFTER 3 MONTHS!

It only means you've memorized some broken English to create another useless todo app (at least be creative). These advertised programs always overpromise and underdeliver, setting unrealistic expectations and leaving many aspiring developers disillusioned and frustrated and definitely not ready to deliver in the market, well a marked that is drowning in mediocre talent anyway.

Take the time to critically assess your goals and the feasibility of achieving them within a reasonable timeframe, rather than succumbing to flashy marketing tactics promising quick and effortless success.

When you focus on mastering the core concepts, you're building a strong foundation. This foundation allows you to adapt to new technologies RAPIDLY with EASE because you comprehend the fundamental principles upon which they're constructed.

Sure, you can learn to drive in a couple of weeks and pass the exam, but true proficiency goes beyond memorizing the sequence of which 3D objects have to move in a 3D plane in order to make a vehicle take you from point A to point B.

What I mean by that is, sure, you can learn React in 3 months too, but did you learn it? or memorize it? Did you learn programming or have memorized some language specific APIs? In my opinion, before you can use a tool, you should be able to build a prototype of it, understand how it works under the hood. Trying to use React? Build a rudimentary version of it. Trying to use an ORM? Build one. What about trying to use the new trending web framework which literally does the same thing all the other ones do? Build it. Blast some raw TCP connections until you have something. All I'm trying to say is that tools come and go, your favorite blazingly fast, easy to implement, easy to learn framework comes and goes, it's literally an implementation of the same RFC made with different programming languages. You don't have to know such and such library to be an expert, that thing is ephemeral, if it disappears or goes out of fashion, there goes you expertise with it, congrats! you've wasted your time.

Understand that true engineering means going beyond memorization and instead comprehending the fundamental principles that govern a system. It's about understanding the "why" behind things, which in turn makes you more versatile and effective problem solver.

When you start asking "why", you'll gradually connect the pieces together, starting from bottom and working your way up to abstractions NOT THE OPPOSITE! Even creating them yourself. Eventually, you'll have the full picture.

Be an engineer not a frameworker, so think like one.

I Get It, But What Should I learn ?

I can't precisely outline a roadmap for you because the field is vast. If I lay out a plan, you might quickly lose interest, feeling overwhelmed by its enormity, you might even focus more on unnecessary topics while leaving more important ones without much attention, because all of these concepts I'll be mentioning will sound like a foreign language to you. Instead, I'll suggest an approach:

Just pick a thing, complex or simple, anywhere that you think might be interesting, then keep asking why does this thing exist? What problem is it trying to solve? and follow the trail. By doing so, you'll find yourself going deep into the rabbit hole. It is an intricate journey, but after such a deep dive, you'll find yourself surpassing 99% of individuals out there who don't ask questions and don't even put in any effort at all, just accepting the information as is, and that goes out for everything not just software engineering.

The Backwards Education System

Unfortunately, education that's most marketed out here often falls short of its ideal purpose. It tends to prioritize surface-level familiarity with an array of tools and technologies—many of which are ephemeral, destined to fade into obsolescence within a few short years, just to make a quick buck off of people that lack guidance. Genuine mastery, however, requires transcending the superficial and understanding the fundamental principles that underpin the field. Rather than merely focusing on the latest trends, you should grasp how technologies truly function and question the abstractions provided by these different tools, isn't this what colleges are for? As you dive deeper into the journey, with time, you'll inevitably begin to question the validity of certain concepts you've came across along the way. When you find yourself forming your own opinions and insights, it's a sign that you're quite advanced in your mastery of the craft.