WARNING: This article is a rant about frameworks; so if you're a fan of popular frameworks and wearing their T-shirts, this article may not be for you. I'm only expressing my opinion which could be wrong.
I've been in the industry for quite a while. I've worked with all kinds of projects, from small 1 file projects to large projects compromised of 100s of classes.
One of the things, I've been able to test in real life is the claim that basic programming knowledge/skills are more important than frameworks which turned out to be CORRECT.
One of the things which I believe many Devs got wrong, is the importance of having prior experience with framework ABC or XYZ (not going to dive into the specific frameworks). While, I do agree that having prior experience or knowledge with a popular framework definitely would make life easier, it doesn't make you really a better Developer.
I'm going to breakdown what most of the popular frameworks today are.
In a nutshell, frameworks are a collection of packages and helpers that use different strategies to save you time of writing everything from scratch made by a Developer just like you. However, this comes with a catch, where you will need to do everything, even simple calls, the way that the Developers of that framework expect you to. That means, you are no longer in control of your code 100%, but you're still dependent on someone you don't know or have no connection with to finish your job and there will always be some issues/bugs here and there whenever modernization comes into play.
What bothers me personally is when the Framework is used for the wrong reasons or when a skilled Dev with good amount of experience/knowledge, gets discarded for not having the same level of obsession with a framework while completely forgetting the fact that the framework on it's own is built using a programming language in which the Dev is actually fluent.
One of the arguments I hear is that the frameworks have become complex enough for someone to have the expectation of having some sort of experience or knowledge of that framework.
My counter argument to the above, is, why use a framework if it's complex? Now I understand that it's become a trend across the industry and that certain frameworks earned reputation,etc... but I still prefer to have control over my code instead of relying on a framework to do all the work for me.
I noticed that certain frameworks' developers, have been listening to our complaints and working really hard to address all the complaints; but I got disappointed with the fact that they haven't yet understood the core problem with their implementations.
Developers want to feel that they have control over their code, and want to have control as well over it's behavior. I haven't found so far, any framework that offers possibility of customization without bringing a plethora of complexities because it's like this by design. Empowering the Dev using the framework and making customization, simple, self-explanatory was not in their calculations because their core focus is basically, giving us Devs a template that addresses most of the common problems.
I conclude my rant with the following.
Before you rush in to setup this bulky framework, ask yourself whether or not, the project will require it, and whether or not, maintenance, customization are in the formula.
If this popular framework is gone in a few years or replaced with a better framework, does it matter how much experience or skill you gain on this framework right now?
Can we achieve the same features without the framework within reasonably the same or similar amount of time that it would take us to deal with the complexity of the framework?
Finally, one of the reasons why I'm not a fan of frameworks is because, one of the reasons I love programming, is the fact that I'm able to send instructions to the processor directly instead of using someone's code to do that. You can argue with me that it's not; but there will always be a difference between writing code via programming language versus a bulky framework.
What do you think? Share your thoughts, comments with me below.
Top comments (0)