Rise of frameworks & programmers' frustration
Hey have you used this X library/tools/framework it is so awesome that it lets you do Y stuff in less time and with less code and it has so awesome API, I am in love with this and I think everybody is going to use this in future.
It has been caused by three main things
- Github (which made code sharing and so easy)
- Npm (default package manager of node.js)
Bad parts of Modern Front-End Architecture
- bower/npm and finally
Just try to understand a beginner level developer coming into your company he/she would surely get overwhelmed by this.
So should we throw out those frameworks?(and go back to stone age??)
Not really,all the tools mentioned above are tools/frameworks developed by really smart engineers and if you look under the hood the code is well documented ,easy to understand and the engineering that they have done while developing sometimes inspires me. if you have doubts click on the below links to find how many awesome web applications have used these tools/frameworks.
This list goes on and on, the problem that happens most of the time is that developers end up using hammer (not hammer.js!) for screwdriver, we decide frameworks and tools even before we know what exactly what we are supposed to build! That becomes the biggest problem.
I have seen some applications which is a multi page application, has back-end rendering, doesn't really need data binding and still uses Angular.js and I don't know how they have used it and why they would want to use it?
And in the past one year I have seen die hard React fans who have decided in advance that they are going to use React no matter what. Sorry guys but React is not a God tool, It is a very good and has multiple use cases but you don't need to fit your application into the structure of React/Angular/Backbone but it should be the other way around. A wise man famously said:
Know Exactly what are you building before you decide to use any of this cool stuff. (credits : John Doe)
When you don't Exactly know what you are building
"Yes these are some nice thoughts but my friend works at this ACME corp where they have those requirement documents and they know what they are really going to build, but I work in a startup and the thing we are building constantly changes".(said a friend of mine)
Slack/instagram/Groupon/pinterest and many other successful startups have one thing in common they intended to build something and the final product they came up with was something quite different. They failed fast and pivoted to something else and the rest is history. If you are working under such circumstances of uncertainty, MVP or prototyping is your best friend.
Prototyping/MVP(minimum viable product)
Is something that can come to the rescue for all of us. Build a prototype as fast as possible and test it out with your users (not your team) to see if it is actually working or you need to make some dramatic changes in your tech. That is the best you can do but don't try to fit your application inside a framework or you will regret when you will be 60-70 % into your development cycle and there will be no going back.
So which frameworks/tools to use when prototyping or while building MVP?
The tools or technologies that you and your team knows and are comfortable using it and don't use many of them while building MVP only use technologies that if not used will make your life harder!
Is this a full proof way?
No, after you have gone through this process and you still choose wrong technologies to work with then that will be on you and your team(who will blame them on someone else afterwards!) but at least you will have an informed decision, Now if product/service does not work the way it is supposed to you wont be able to blame the technology and wont spread the poison on web with your thoughts on why Angular is bad or why using typescript is too much or why there is too much to do just to start using React!!
Hope you have enjoyed the article, thoughts and suggestions are always welcome
Found this post useful? Kindly tap the ❤ button below! :)
Shashwat, Software Eng. Gridle