On frameworks and libraries in Software Development
I woke up this morning with a link to something interesting trending on HackerNews. One of my mentors, Karthik Nandyal, had forwarded it to me.
I also happened to log on to Scaler, a platform where I mentor software developers and saw a bunch of questions from mentees around how to choose the best framework, which one should they be learning etc.
Both of the above got my thoughts racing. We’re in an information overload era and new developers are assuming that they need to master the frameworks to excel at their jobs. (software development)
Let’s look at the triggers in depth:
The HEY stack:
– Vanilla Ruby on Rails on the backend, running on edge
– Stimulus, Turbolinks, Trix + NEW MAGIC on the front end
– MySQL for DB (Vitess for sharding)
– Redis for short-lived data + caching
– ElasticSearch for indexing
Relational databases are good.
No. That's why I use MySQL
A lot of the above resonates with my long-term thinking of focusing on underlying languages over fancy new frameworks.
For those who don’t know: Hey.com is a brand new privacy conscious email provider with slick UI and an interesting take on emails and SPAMs. They have gained a lot of traction because of the founder’s previous successes. These guys built the RoR stack. The same framework that eventually powers the backend of platforms like Scaler and InterviewBit. They also built BaseCamp – a really popular Project Management tool.
New developers put too much thought in choosing a framework and comparing apples to oranges. It is worthwhile to “build something”. Most modern frameworks and libraries will let you achieve that goal.
React was miles ahead in architectural thought process when it launched. But today, you could build anything using either Angular or React, or as is in the case of Hey, simpler frameworks like Turbolinks & StimulusJS.
If you are a new developer looking to decide on a framework or library then depending upon your aim, you could:
- Looking for a job: Identify popular frameworks – build a side project using that. Try and read up on advanced concepts in that framework. Hit StackOverflow questions for the topic and try to see if you understand the day-to-day problems most developers face.
- Just want to explore: Pick a framework, any framework/library. Build something. Publish on your GitHub. Pick another, repeat… at the end of it, you’d have learned how to build various things using multiple tools/platforms. This is what a true polyglot developer feels like. They might have hands on knowledge of multiple tools and be experts in only a few.
- If the aim is theoretical knowledge by discussion only – you’re doing something terribly wrong. Either do “1” or “2” above and you’d have a good chance at getting yourself a seat at the table.
Remember, the table is large enough to accommodate everyone. Just that, only a few developers actually put in the hard work. No amount of reading about frameworks will teach you anything about the practical aspects of actually building real things.
Knowing a framework in depth, will allow you to talk to other framework folks and work upon your opinion. Having wide knowledge about many frameworks will let you have meaningful conversations with those who have in-depth understanding. It is never a black and white world. There are shades of grey associated with every framework. Work upon your opinions, be malleable at certain temperatures.
If you do not build, you’re just a blank canvas – anyone can throw some paint and change the colour. I’d call that technological-brainwashing.