JavaScript is the bane of our existence

If you have been following my posts on twitter or instagram, you may have noticed that I am not a big fan of JavaScript Frameworks (React.js, Vue.js etc.). I am going to get a lot of heat for what I am going to discuss below, and that's OK. You are free to shout at me as much as you want on my twitter!

So take a chill pill and take this post with a grain of salt, as it is clearly just my opinion and quite possibly an uneducated and biased one. Also note that I may be discussing JavaScript but what I am going to discuss applies to other modern languages too (I'm looking at you Python, and make up your mind if you are v2 or v3 at some point)

Let's start with why I like JavaScript Frameworks and abstracted languages.

Not everything is bad

Easy to use

JavaScript itself is a language that applies a huge layer of abstraction over what is actually going on, making everything just plain easy. You want an integer, you get an integer, you want to add a decimal to it, you get a float, you want to print it, it's now a string, you want this to be a boolean, it's a boolean. Loose typing is amazing, scrap unnecessary type casts, and do the work that you want to do. No need for the hurdles of early languages like C, where we needed to cast our pointers to what we want the variable to be. In addition, JavaScript is massively extensible, and begs to be exploited by the programming community.

Easy to extend

Since it's so easy to actually start learning JavaScript and writing libraries for it, it's also amazingly easy to have a massive amount of libraries on github and bitbucket, massively available to anyone needs a new functionality for their program. Just

npm install --save react-native-viral

and you instantly have a viral app. That's how easy it is to add new features to your application! (I may or may not be exaggerating).

The more the Merrier!

Finally, it's awesome because we lower the level of tech experience needed to get into programming. We can start teaching programming to an ever younger population enabling them to produce innovation for this world! This is probably the most amazing part of it all.

Now let's get heated. Why I hate JavaScript Frameworks.

Monkey Business

My main beef is that by lowering the skills for level of entry, you get people who do stuff monkey style. Oh he did that, let's copy paste this thing and see if it works. Oh it doesn't work, let me post to StackOverflow, someone is gonna answer my question! By providing "pre-chewed food" straight to digest, people do not actually understand what they are doing most of the times. This leads to a generation of programmers that in their majority are straight up incompetent. We need to provide a framework within which new programmers are able to understand what they are doing and why. How their choices impacts their code and so forth. Which brings me to my second point.

Lack of fundamental CS knowledge

You can code alright, but do you even know what the O notation is? Do you understand time complexity and how to make your application not consume battery like it's a motherducking cucumber demon trying to consume cucumber from a cucumber field? No business today is innocent on this. Most major corporations do not care about hardware limitations, they only want to provide users with an easy way to get addicted to something. Battery drainage? Ain't nobody got time for that! That being said, this kind of coding standards (code fast, as long as it works) are partly exacerbated by the lack of fundamental CS knowledge from new developers. If they cannot understand why it's bad to do 48 nested loops to retrieve an element, by itteratively checking a bunch of lists, then I wonder if they understand limitations. Now to the next point

Hardware exploitation

It's rare nowadays to see people actually understanding how hardware works, even on a high level. RAM? Registers? Cores? What is this? I just want a happy catto to do a thing on my phone screen! Well, let me tell you a thing or two on that. If you cannot understand what an integer is (a couple of bytes, depending on your cpu architecture) and how it differs from a float, then how can you expect to understand why your new application doesn't run on 8GB devices? Abstraction on programming languages, and relying on this abstraction to actually function, has made us oblivious to how hardware works. By not understanding how hardware works, you will never achieve exploiting it to its full potential. Go look up GameHut on YouTube, and check out how his team made an FPS on hardware that barely supported some of the stuff we now take for granted. Only then will you understand how much your hardware can do nowadays. For crying out loud, we got people to the moon on 4.077MHz. Let me put this on the scale that we understand nowadays, 0.004077 GHz. We should be able to do so much more with what we have, but we lost our way somewhere along our path.

Conclusion

To close off this rant, and explain why I do believe that JavaScript Frameworks are our bane of developmental existence, I would like to implore anyone reading this article to start looking into a bit deeper on the inner workings of programming languages, and to not be hindered to actually try something lower level. It is of absolute importance (at least in my opinion) to be able to understand what you are doing when you are doing it. That way you can actually start to better understand why something goes wrong, when it goes wrong on the higher level!

Have a good one!

Share this