Let me preface this by saying that I understand why frameworks exists. They solve repeatable problems in application development in a team environment by maintaining consistent development standards with tried and tested techniques that stood the test of time against thousands of projects and developer input that’s supposed to ultimately save the developer time. That’s great, that’s all really great. But, if it takes the user longer to develop the application with the framework than without it, then you have a framework deal breaker.
I don’t know if I’m stupid with an inability to parse an incredibly large amount of information in a short amount of time but I have incredibly bad luck with frameworks.
Here’s my process in learning a new stack/language/library. Build an application as bare bones as possible. Have a good time reading the base documentation. Finish the application and learn about the basic elements of the application stack. Move onto learning popular framework of that stack/language/library.
- Follow the installation documentation and run into errors building/installing/initializing the framework (MeanIO).
- Framework requires me to fiddle with infinite XML files of configuration before I can get started on actual development (Spring)
- Only documentation is sparse, splotchy, or an encyclopedia.(Locomotive, Play, Spring)
- Get overwhelmed from the amount of features I’m not going to use in the framework.(Spring)
- Further down the line, framework goes against principles/expected behavior of base stack/language/library(Locomotive)
These are all framework deal breakers and are absolute frustrations. Granted, getting overwhelmed and having encyclopedic documentation are my fault. Feature rich and extremely well documented frameworks are great (to a fault). That’s great. It’s just a little overwhelming to newcomers whom I imagine, the documentation was made for the most.
I’m trying to be more efficient by adopting a framework for my projects but it ultimately just makes me take up even more time. I understand that the point of learning a framework is to do it for the long haul rather than the immediate gratification but I feel like all the people who recommend their brand of framework only do so because that’s the one they randomly started with or were recommended and are now proficient in it. I find it hard to believe that there are framework tasters that have enough experience with all these different ones with all their different functionality and configurations to actually make an informed decision made purely by themselves about which one truly is the most time-saving with the most features. I know it’s a silly thought but I’m almost convinced that nobody actually wants to use a framework but are indirectly forced to due to constraints that involve working with a team. My distrust for frameworks can probably be explained by my relatively newbie view on the world of software engineering but when there’s so many frameworks to choose from and new ones popping up every day for every language, there’s a point where the expectation to jump on to the next great thing is ridiculous and the fact that it happens so often is already ridiculous.
What I’m essentially trying to say is, investing your time into adopting a framework for your favorite language or stack is a gamble of your own time and I don’t like that. Its impossible to foretell how much time you’ll need to invest in learning the workings of it before actually getting dirty into the business logic rather than framework configs. By the time you actually learn enough about it you’ve already spent a week or more on a simple project before you realize you don’t like it.