🤔 "Should I use a framework?"
edit ✏️This is a question that comes up a lot:
"Should I use a framework?"
It's a good question, and something that I've both asked myself and thought about quite a lot over the years.
Here's the thing...
If you aren't using a framework there is a good chance that you are creating an ad-hoc, undocumented, non-standard, can't look up answers on Stack Overflow, bespoke, personal framework.
And that is not always a bad thing. If people didn't do this, we'd never have frameworks in the first place. Somebody has to exclaim "EFF THIS" and sit down to do the work that needs to be done crafting a repeatable system that can be used across (m)any domains and allow for sensible high level work to be done.
👆 they hate React and are about to write a new framework 😂
For me, I've always gone for frameworks directly after learning some language basics.
When I learned Python it was via Django When I learned ActionScript 3 it was via PureMVC When I learned Ruby it was through Rails When I learned JavaScript it was through AngularJS
For some reason, I thought learning vanilla
JS would be a lot easier than it has been. 🤷♀️
For me, learning a language on its own with no framework fundamentally adds to the overall cognitive load of an already overloaded task.
It's too raw. Too low level for me to actually make anything happen.
When I jump into a framework I start learning community vetted patterns and practices that inform those decisions and let me work at a higher level.
For me, this is a huge win.
This isn't to say that we shouldn't learn our programming languages deeply. I'm confident to say I'm an expert, or have been an expert, in several programming languages, but that depth of knowledge is directly tied to the scope of work and outcomes I am trying to achieve.
Frameworks are really useful learning tools to help me meet those goals.
So how do you choose a framework, well for me, I agree with this tweet from Sten:
I want to choose something that suits the needs of my project, has a lot of people vetting the tool, has examples that make sense, and is well documented to suit the needs of my team (sometimes that's just me) and project.