Why there are so many frameworks and libraries?
To understand why there are so many frameworks, tools, and libraries for developers to use, consider the following analogy:
Imagine first that you’re in a video game world. In this world, there are 7 clans. When you play the game, you must first pick which of the 7 clans you’re going to start the game with. For example, the choices are “elf, “dwarf”, “human”, “orc”, etc. (edited)
So say you decided to play the game as an elf.
Once you level up (say to level 20), you can start driving a car. There are dozens of cars you can choose from and each clan has their own unique cars that only the same member in the clan can use and drive.
Once you pick the car you want to drive, there are hundreds of other accessories you can add to your car. For example, you can use an accessory to make the tires larger, change the steering wheel, change how the light looks, etc.
Say when you level up even further (say to level 30), you can create your own accessory for any car you want to drive, as long as that car is one of the cars that can be driven by your clan.
Say when you level up even further (say to level 50), you can now create a new car and allow other people in the clan to drive the car you created.
In this scenario, with millions of people playing this game,
- how many cars would you expect to see in this world? Remember that only those with same clan can drive the cars made for the clan.
2. how many accessories would you expect to see in the world?
This analogy explains why there are so many frameworks and tools.
Clans, represent, 7 dominant programming language used to create web applications
Cars, represent major frameworks to create a web applications.
Accessories, represent additional frameworks, tools, and libraries specific for that framework which is also specific for that language.
With 7 dominant programming languages, 10 most popular frameworks, and 100 accessories for each framework, that’s a whopping 7,000 list of technologies.
Now let’s go back to this analogy.
Imagine that there is a recruiter in this game world.
Can you imagine that they would look for “someone from clan A, who knows how to drive a car “CZ”, and who also knows the following accessories: “ABC”, “DBA”, “DBS”, “CAS”.
They put an ad out and waits to find someone with that specific criteria.
How many people do we think they will find if they had the ad out?
If the level 50 person who created that car applied for the role, and say didn’t know any of the accessories that other people built for his/her framework, would that person even get a job (with the ATS system filtering out resume based on keywords)?
Let’s take this analogy even further.
Say that it took people usually 5–10 years year to master and become level 50.
Therefore, in the beginning of the game, say in the first 5 years, all cars made for each clan were very different with very different opinions about how a car should be made.
But as advanced players from one clan, restarted the game again but this time joined another clan, can you imagine what happened to the cars in all the world? They started to mimic each other, as the masters in the game, brought best practices from one clan to another.
This is what’s happening in the web applications world. In the early days, major framework (cars) for each programming language (clan) were vastly different.
Since it took a long time for a developer to get familiar with that programming language (clan), a given framework (car), there was not much cross-pollinations between these frameworks.
But now, as developers have gained more experience and jumped from one language to another as well as one framework to another, things are shaping up where the best practices have really been applied throughout all the eco-system.
So now think whether posting a specific job ad that says, “we are only looking for an engineer who knows X, Y, Z, A, B, C, D, E, F” is smart.
That ad might as well read: “we are only looking for a player, from the elf clan, who knows how to drive car X, Y, Z, and who has experience using the accessory A, B, C, D, E, F, G that are used for car X, accessory E, F that is used for car Y, and accessory G, that is used for car Z.”
If the level 50 people applied for the role, they would probably get filtered out by the resume filtering system and not even show up on the hiring manager’s desk!
What does this mean?
If you’re a developer, strive to get to the point where you’re not just using a framework and being good at it, but where you can create additional libraries/tools for other people to use (level 30 talent). Once you do this, also get to the point where you can create an entire new framework from scratch (level 50 talent).
If you’re a hiring manager, really think hard whether you really need someone who has X, Y, Z, …., ZZ on their resume. First test the programming IQ (which determines how quickly they can put things together). Plus, if you’re interviewing someone senior, don’t pay attention to whether they have prior experience with X, Y, Z, etc, see if they are a level 30 player or a level 50 master. These level 50 masters can easily pick up any of the keywords you have in your job description. Even the lower level players, with high PIQ, can very quickly learn and master any of the frameworks or accessories listed in your resume.