Originally posted on 04/07/2015 on the Neutrondrive Blog
All the rage lately is to trash frameworks and to profess how smart you are and show you can do the same development with libraries and/or micro frameworks. You also show that you are a real developer by coming up with your own abstractions and algorithms. With all this hate going around for big frameworks, I wanted to come out and say: “I like big frameworks and I can not lie, You other brothers can’t deny”.
Yes frameworks can suck because instead of coding, you often feeling like you’re fighting the framework and having to learn a very specific way of coding. However, I think it you find a good framework, this is minimized and the benefits are great.
Me Not So Smart
Frameworks give you abstractions, best practices, and a direction of how you should architect your application. All of this I’m very grateful for because number one I don’t want to come up with this my self and number two I’m not smart enough to come up with all of this myself. I may have some good ideas but probably not as many as a framework that is vetted by a big community. Frameworks give you great ideas on how to get things done and when you don’t like a particular thing, remove it and come up with your own solution. Don’t reinvent the wheel especially when there is a good chance someone invented a wheel better than yours.
It’s Not All About You
Frameworks really aren’t about you. They are really about the other people on your team. If you create your own abstractions, best practices, and architecture that is great, you’re a rock star developer! But many things can go wrong in regards to your team that has to use your creation. First, maybe you’re not as smart as you think and your solution sucks. Now your team is stuck with coding using some Frankenstein code you came up with.
Second, learning your custom framework or architecture is probably going to be harder than learning an open and public framework. You probably aren’t going to document things as well as a public framework and make endless videos and talks on the subject of teaching people how to use your abstractions and best practices. With a public framework you may also be able to hire people who already know the framework and can come on your team and make an immediate impact with no training. So unless you’re in a big company that can handle these costs, using a custom solution is really going to slow down your team.
Community Abstractions and Best Practices
Lastly, using frameworks helps to bring out discussions about the best abstractions and practices. If I were building an abstraction about a duck billed platypus where I abstracted it as furry duck and this abstraction really worked well for my company and project, that is great. But really it would be easier to train my team if I used the better classification of the platypus as a duck billed mammal. I may have been really smart to come up with the original abstraction but until I discuss this with others in my industry or community does it become easy common knowledge. Of course there are other ways to discuss these issues without a framework, but having the framework helps facilitate the discussion because I think it is always good to see these abstractions and practices in action in a way that many people can implement easily. It gives the community an easy way to grok new ideas in terms of something they are used to. A good framework will know in addition to suppling code and tools for development, one of its core duties is to facilitate community discussions about the best shared practices.
So with all that said, sign me up for the next big framework! Every new framework gives me new ideas and teaches me a few new tricks.