A Rant about Frameworks


The lonely one on the left is Javascript: A dynamic typed, weak checked, just in time compiled programming language. In layman terms,its a programming language used to create web applications. The jargon i threw above  is not important and not related to what this blog will represent, but it will connect to the point and is crucial. JavaScript is a popular language, and represents a huge chunks of web applications in the web.Talking about its popularity TIOBE is the company that releases  popularity of programming languages index. As of this writing, javascript is sitting on 7th position in its index, a slight decrement for the month of July. With the advent of SSL, better broadband connection  and capable browsers among internet users, All of general computing needs can be fulfilled with web applications. Javascript excels at Web applications and it cover a lot of areas these days. Common examples where javascript is used are social media sites, online office suite of products, online photo and music editor, banking applications and others.  Another reason behind its popularity is frameworks, libraries and resources that makes programmers life easier.

So what are frameworks? Frameworks are the skeleton code designed to create solutions within their particular philosophy. It already has functionality, now its programmers job to add some extra code to fit their needs. A good analogy might be a building structure whose purpose is decided by the company who rents it. It's already a finished building, you can't add or remove features that might make it from building to a rubble just to salvage the parts you need for your task. The core philosophy is that it must remain a building no matter what.  Now one needs to add supporting interiors and banners to publicize what services the office inside the building offers. So in this analogy adding supporting interiors and banners is job of programmers. No need for programmers to construct a whole new building every time. Programmers don't even have to think about how that building was constructed. Just add the interiors and job done. They can copy and paste that blueprint any amount of time they like.

Just as good as they sound, the catch is that Framework have particular philosophy and patterns to follow. If the app your are going to build meets certain criteria or requires particular set of features; that certain framework can fulfill, then only can you use that framework. Even if your program requires a bit of deviation then the framework might be unstable or unusable. And everything is already laid our for you. so there is no real learning there. The particular set of algorithms or system calls or some chaining method is all abstracted out leaving you to some good looking API.  dayssincelastjavascriptframework.com/ is a site that that monitors the rate of publication of Javascript framework.For every 24 hours there is new framework.  i have no problems with framework as they try to fix a particular set of problems and make life easier. The problem is there are too many frameworks rolling out and might act as a hurdle for novice programmers and students who seek to find the path into computer science.

The wiki page describes it as
"
Overchoice or choice overload is a cognitive process in which people have a difficult time making a decision when faced with many options
"
Here is one examole

A general web app has particular sets of features. Let suppose that  A, B, C and D are the general features. where A refers that web app must be progressive. i.e It must feel like native android or ios app, B refers to asynchronicity example being able to keep fetching images in background while also sending message at a same time without one blocking another , C might be a design pattern and D can be virtual DOM.  These features may appear in different combinations. 4C1 + 4C2 + 4C3 + 4C4. Each closed boundary represents a framework that excels at doing that particular task. Yellow one is meant to perform solutions for Task C as its best. There might be one of the framework which might have all the features as required but looking at the sheer number of frameworks one might get overwhelmed. What if you just want a program that is solution for A only, then the blue one might be a good choice. One might argue that why not learn the framework that can implement all the features. Suppose you have to implement Feature A then the blue one is designed to do task A as best as it can be. If you choose light pink or the middle one; then customers won't get smooth experience


Abstraction
Framework are notorious for their abstraction. One does not need to identify or understand the inner workings.You just need to fill your content according to the template. It is a huge advantage for a seasoned programmers and entrepreneurs looking for a quick money.  But for someone who is looking into computer science, it might not be such a good idea to use and not understand the principle in which inner gears shift.There will be times where you might be needed to replicate a small chunk of the framework but you might not be able to do it. The problem solving skills will be below par if someone opts for abstraction only.


Tutorial Purgatory
For someone just starting into programming, looking at tutorials and following someone else project implementation might give some sense of accomplishment but most of the time, in reality there is nothing being learnt there. the real learning starts when someone starts their own project. Giving some random API calls and popping a ray traced sphere, and remembering the api call syntax for it doesn't make for a sensible skill to look for and it invites tutorial purgatory. Given the vast amount of frameworks, there are vast amount of Architecture, idiosyncrasies of framework implementer to understand. Using frameworks without understanding programming language core features is one of the mistakes that should be avoided .The jargon that i introduced while introducing JavaScript in beginning is as good as Chinese words if context is not understood. Using frameworks might blur out the context


I am not against using framework. Use all the frameworks you can, but realize that it is not the perfect solution and, it's not going to be the next big thing as it is promised. a framework might be Jack of all trades but never will be a king. A real example finally...... React JS has support for web apps and native android device but it is never going to replace the experience and optimization possibilities one has with kotlin and ANDROID sdk for building android apps. 

Comments

  1. There are more js frameworks than js developers! 😂😂😂😂

    and I agree with you . If you are beginner then you should learn core of programming language not the frameworks.

    ReplyDelete

Post a Comment

Popular posts from this blog

Post Class Reflection: Week 3

Jay mata Devi Durga Bhawani : Dashain homework

Ethos, Pathos and Logos