Stop Bashing Angular
7th Mar 2015
I appreciate that I'm little late to this discussion. I'm not sure if you may have noticed, but I don't blog as much as some of the other better known developers out there. Why? I'm too busy working contracts and building real world applications, that have real world problems and real world requirements.
So I've spoken about this several times in the past, and I'll speak about it again, but I firmly believe that software development suffers from trend hype lifecycles in a massive way:
Technology Trend Hype Lifecyles
I do however think that there is one key thing missing from the above diagram - the "Anti Trend". Sometimes a technology will come a long that is genuinely popular and useful for a real reason - it actually does a job, is well received and supported and gets pretty popular. In software development, it's something that can make our difficult job easier. The "Anti Trend" refers to the detractors, who I suspect, want to be the first to "bail out" on a technology.
I'm all for critique of a technology or a way of solving a problem, but your arguments need to stand up.
I had a look into this in my post "That CSS / Javascript library isn’t as big as you think", where I pointed out that it was odd that those criticising jQuery and Twitter Bootstrap complained about the size of these libraries, but seemed to be ignorant of the basics - free cdns and gzipping.
I also had a look into the Anti Trend in my post "In defence of the RDBMS: Development is not slow. You just need better tooling", where I pointed out that one of the key criticisms of relation databases was that development against them was slow. This is only the case if you don't bother using any tooling.
Different sections of the of the development community run through the technology trend hype lifecycle at different speeds, and the Javascript community runs through the trend lifecycle at breakneck speeds.
So, right now, the Anti Trenders are having a pop at Angular (a few months ago it was jQuery). The arguments are usually the same and genuinely do not stand up in a real world situation. I've seen blog posts from people that I previously had respected quite a lot, critiquing angular in seriously misplaced manner:
Misplaced critique 1 - Blaming the framework when you should be blaming the problem that the framework is trying to solve
If you don't like how Angular can be used, you probably wont like how Ember, React, and Knockout can be used either. These front end frameworks exist and are used for a reason - to solve the problem of getting a client and their data around an application nicely and seamlessly.
What shocked me about the Anti Trend blog posts was that they revealed a level of ignorance on the side of the authors. For me, someone with over a decade's worth of experience of publishing material on the web and developing real web applications (you know, ones that have requirements, costs and deadlines, and need to actually work and do something), front end frameworks like Angular and Knockout solved a very real problem. Both technologies have helped me to provide a richer client experience that were more testable, and they helped me get there quickly and keep the customers and the users happy.
Misplaced critique 2 - Getting tribal and then blaming the other tribe
It's an age old technique that can be applied to just about any argument. "I'm over here with the cool kids, you're over there with the weirdos". You might be wondering what I'm on about, but it's actually an argument that I've seen in an anti Angular blog post:
I’d say Angular is mostly being used by people from a Java background because its coding style is aimed at them
The above is 100% verbatim from an anti Angular blog post. "People that like Angular must be uncool enterprise developers". Sorry dude, some of us work in the enterprise and build real world line of business applications. We have bills to pay and don't live rent free working on speculative up startup ideas.
The LifeInvader social network HQ from GTA5. Your speculative start up also could get this big
Misplaced criticism 3 - I don't like where it could potentially go, therefore it's wrong now
If you hadn't heard, Angular 2 will bring in some changes. If you didn't like Angular in the first place, why are you crying for the loss of version 1? And why is this such a big issue in the Javascript community? Did you know that ASP.Net will undergo significant changes with the next release (called vNext)? The .net community is generally excited for this release, and isn't mourning the loss of the old versions.
This reddit user summed up this argument nicely:
Misplaced criticism 4 - Pointing out the problems but offering no solutions
One of the best things about being a developer is getting challenges thrown at you every day, and thinking of solutions to those problems. Can you imagine having someone on your team that was 100% negative, and constantly stopped their work to call you over to tell you that they had discovered some problem, and that it therefore was no other way around the problem without throwing the whole thing out and starting again? It would be pretty annoying, right?
Well, if you're going to criticise front end frameworks and offer no alternatives or other solution, I'm going to assume that you are advocating the use of A LOT of jQuery instead (which I'm guessing you think is too bloated, and that you'd tell me to write bare metal javascript).
It's silly isn't it? I'm not saying it couldn't be done, I'm saying it would be hard, your code would suck, would be difficult to test, and would take an eternity to deliver.
Conclusion
Make your own discussion. Talk do devs that you know in your network that may have used the technology in a real world situation. If you don't know any, find your local Web Developer meetup and get talking to people. Build a small prototype and form your own opinion. Don't just follow the trend, or the anti trend. What is your project priority? Delivery? Or something else?
It's not unreasonable to consider blog posts on the subject, but please consider if the author has a valid opinion. Do they actually build and deliver real world apps, or, do they now make their money from blogging, podcasting and running a training company on the side? Some good places to go for some real world insight (as in real actual code problems) into Angular Js are:
In the above links you will quickly discover real world Angular challenges and how they were overcome. It will also give you an indication of how well trodden the road is before you decide to set off down it.
TL;DR
If you're going to bash Angular, think:
- Is what I dislike about Angular a fault of the framework, or of the problem that I am trying to solve?
- Does my criticism apply to all other front end frameworks?
- Am I criticising an Angular antipattern that could be resolved by coding a little more sensibly?
- Can I offer a better alternative solution?
- Am I being an "Anti-Trender"? If you're not sure, recall if you denounced one of the following on Facebook: Kony 2012, the no makeup selfie, the Ice Bucket Challenge.
Form your own opinion from real world experiences.