AngularJS is a Necromancer

Zack Argyle
3 min readApr 18, 2015

People are complainers. They latch onto things and then continue to piss and moan about them until enough people have validated their thoughts. People complain about AngularJS performance, but it seems to be working fine for high-traffic companies like Nasa, Walmart, and Weather.com. I have a different complaint…it’s a frickin’ necromancer!

I have over 3000 points on StackOverflow from answering AngularJS questions; I have built web apps, games, and chrome extensions using it. And despite all the awesome things that it does, I am terrified by the undead army of developers it is amassing. They hack and slash and don’t know why they’re doing what they’re doing.

It wasn’t built for developers, it was built for designers. That’s why they chose the magical digest cycle rather than the more common getters/setters for two-way data-binding. The problem is that for aspiring devs, it became too magical.

AngularJS is a tool, not a foundation.

All of these new-grads and self-taught javascript developers start out using AngularJS and turn into skeletons. They glory in the magic of life, but never learn how to create it themselves. It’s not the site performance of AngularJS that worries me, it’s the dev performance. It’s creating a bunch of developers that only understand how to write AngularJS code, but don’t understand important core concepts of web development.

When preparing this post I jumped on StackOverflow and looked at the first page of new AngularJS questions. One person couldn’t figure out why ‘angular’ was undefined. The issue? They didn’t know they had to include the angular.js script on the page… Another person asked the same question that has been asked a million times in AngularJS projects, why isn’t my two-way binding updating? The answer was to use $scope.$apply(). Magically it worked. But why did he have to use it!? He still doesn’t know, and he still doesn’t care, because it just works. That is terrifying to me.

If I were to hire someone for a team that would be writing AngularJS code, I would rather find someone with a breadth of web knowledge and absolutely no AngularJS experience, as opposed to someone who knows it like the back of their hand — but doesn’t understand prototypes, closures, or security flaws (like XSS attacks).

We need more people who understand the why, not just the how. We need more people who can implement their own dirty checking libraries. We need more people who can write their own dependency injection tools. Event emitters. Routers. Databindings.

“And so, does the destination matter? Or is it the path we take? I declare that no accomplishment has substance nearly as great as the road used to achieve it. We are not creatures of destinations. It is the journey that shapes us. Our callused feet, our backs strong from carrying the weight of our travels, our eyes open with the fresh delight of experiences lived.” - The Way of Kings

There is more to writing software than the end game. It is an elegant expression of complex needs architected for scalability and maintainability. The building you build is only half of it: the other half is about the road you pave to it. AngularJS may or may not be the right tool for what you need, but unless you have deep roots in the web, you’ll just be a walking pile of Googled bones.

--

--