Don't Be An Engineer; Be a Frameworker
"Don't reinvent the wheel, just re-align it" - Anthony D'Angelo
Source: Jump Growth
“Be an engineer, not a frameworker” this is something I’ve been seeing on my feed too often for the past week and I think it’s time I shared my opinion based on well known facts.
As a developer who once advocated for writing android applications natively in Java without the use of any external libraries (even the android support library for backwards compatibility, mainly to reduce app size though) I know the joys of complexity. I mean who wouldn’t want to spend 5 hours writing 2k LOC that can be written in 1 hour with less LOC with a framework or library?
At the dawn of programming, programmers had to write every bit of their applications mostly until patterns were noticed and that is what gave birth to the concept of Standard Libraries that every programming languages use today.
What was the purpose of this? To reduce copmlexity and help make development faster by reducing the time it takes to write logic and algorithms that are already commonly used anyways.
Anyone can write an algorithm that can check the maximum value between two integers, but should you? My guess is whatever language you want to write that in already comes with it in some kind of Math library, though there are specific cases where it’s best to write your own algo but in cases like this it’s a waste of time. But another question is can you? Can you write an algorithm that does that? If your answer is yes, you’re an engineer, if not you’re a frameworker; an ambiguous statement but you get the idea.
A programming language, especially high level ones is already a framework because it provides you with a specific pattern to build with and also a list of pre-written methods, data types, etc through libraries, and most often you can go beyond the scope of what it offers, so one can argue that a person writing Vanilla PHP and one writting Laravel are both frameworkers.
Personally I build web applications with Laravel, but I can 100% build the same applications in Vanilla PHP, it would just take a longer time, which brings me to the main point— Writing web applications with Laravel, Django or Node.js or writing mobile applications in Flutter or React native is really cool and all, it makes development fast and easy and you can easily escape not knowing how the heck those frameworks actually work under the hood, but should you? My answer is NO.
It is the paradox of learning that the more you learn, the less you actually know.
As I learn new things and advance in my developer journey, I find that having a clear understanding of how things actually work can improve the quality o what you do as a developer, someone who learnt programming from low-level will most likely be better than one who learnt from high-level.
There’s a reason why people like to go for low-level programing languages like Rust for high performance applications and also a reason why two apps written with the same technology by two different developers for the same purpose will have difference in performance. It all comes down tot the developer’s skills and understanding of how things ACTUALLY work, when you have that understanding everything starts to seem less like magic and more like science.
BTW Real Chads code in machine language and that is true engineering.
Thanks. Stay Smart.