As a developer, we need to stay up to date with the latest technology. Time travel like a light and we want to learn all the new cool and exciting technologies and frameworks, But the problem is we can't learn and master every new framework because learning and having experience in technology are two completely different things, you can't build good software or application just by knowing very little about something, you have to have good experience with that framework and experience required time and effort.
So coming back to my initial point we as a developer don't have time to learn every new framework. But we have to catch up with new tools & technologies otherwise we will be left behind.
# Choose and learn wisely
Every day hundreds of libraries get announced on Reddit and other platforms, some of them get recognition and others don't. But how do we know which one we should invest time in learning? When it comes to choosing a framework I usually consider the following important points.
- Productivity and performance
- Mature, stable, and long term support
- Adoption and demand
Let's now try to understand each point in detail.
# Productivity and performance
This is one of the most important point to keep in mind when choosing any framework. If you can't be productive then you can't ship or build software faster, productivity means a lot when your product has a lot of competition in the market, and if your software isn't good performance-wise then unfortunately it will not going be perform well at large scale when you have millions of users. So productivity and performance should be key points you will be looking at before learning any framework.
# Mature, stable, and long term support,
Some of the frameworks take time to get matured and even go through a lot of failure and experiments before they get recognized and adopted. So make sure that the framework you're choosing is stable enough and it has a good amount of contributions and support from the community, otherwise, you will be spending too much time on following things due to lack of support or less content available on the internet.
- Spending too much time understanding and resolving the issues.
- Long waits for a new feature or bugs patches to be released.
- More time and deep-diving into source code to do different tasks which were not clear in the docs.
# Adoption and high-demand
jobs demand in the market for hot skills and frameworks are also one of the reasons you should learn that framework. I remember when Vuejs 1 launched at that time Reactjs was very famous and already adopted by most of the big tech companies and most of the mature products were already using it and because of its popularity and high demand most of the companies were hiring react js developers and on the other people were debating about whether to use Vuejs or not and when Vuejs version 2 came out it got more matured and attention and its adaption rate kept increasing most of the communities like laravel start promoting it by making Vuejs default options for the client-side framework. Now, Vuejs is as popular as Reactjs and has more adoption and demand in the market.
# Stop investing too much time learning frameworks or libraries
The fact we cannot ignore is that frameworks help us to be productive so we spend more time building and solving real problems and it hides the low-level details, otherwise everyone will be building their framework or basic low-level component which are needed to build any application. But on the other end, it steals away all the basic information which you need to know to be a good software engineer. This is a kind of trade-off between choosing or not choosing a framework. I am not saying using a framework is a bad thing all I am saying is that it shouldn't always be your first option because it depends on what you're trying to build.
For example, you are building a small application which is almost 5k lines of code and the framework you're using has 500k lines of code in that case your application has only 5% of the code, and still, the rest of the 95% stays in your application which gives you less control over exactly what you know and what you don't know, which you still have to maintain anyway.
# Story time:
Almost 4 years ago I started my career as Web developer right after finishing my computer science degree. I learn the basics of PHP and then started learning frameworks even without learning the basics of web development because at that time I taught or got the perception that frameworks are everything and to land a job you must learn and have experience with these frameworks.
But later in my career I start seeing my self more of a backend engineer and then I started spending more time on low-level programming and basics concepts like data structure, algorithms, architectures, etc, then I realized I don't even have 30% of knowledge which every software engineer must have. It was kind of embarrassing for me but I didn't give up and start investing more of my time to learn these concepts and acquire a decent amount of knowledge which made me a good software engineer, not a framework-oriented developer.
The past year. I was learning Golang and. I started building a small website in go. and if you ever worked with go you will know, go community prefers standard libraries over using any framework and they prefer to let your application shape by itself instead of using some framework structure approach. while building a website in Golang. I realized how much i lack or forgot the basic concepts of web development.
# Changed the way of learning.
I unsubscribed all of my framework or tools-specific news later and replace all the framework-oriented books with software/programming-related books.
- The Pragmatic Programmer
- Clean Code: A Handbook of Agile Software Craftsmanship
- Domain-Driven Design
- Designing Data-Intensive Applications
- System Design Interview
- Object Design Style Guide
- Cracking the Coding Interview
- Refactoring
- etc...
# Conclusion
Using a framework isn't a bad thing, but it shouldn't always be the first option in your toolbox. Most of the time its depends on what you're trying to build. If you're using some framework then you should learn it because your software depends on it. Do not rush for learning frameworks, libraries, or tools, they come and go, time is precious so spend it where it values the most.
# Final take
Think about it framework is just a tool to solve problems so invest your time learning skills which makes you a good problem solver in general, not a framework-specific developer with limited knowledge.