Re: AngularJS vs Ember

There's been an interesting article circulated on HN with a pretentious title

AngularJS vs Ember: It's not even close

According to its author, Ember won by a wide margin.

Why Care?

Several MV* frameworks are gaining traction these days. Angular, Ember and Knockout are arguably the most popular.

jQuery is way past its due date, and developers are ready to move on. What should we move to is an open question.

Angular works pretty well for me, but it is not perfect. It's great that people are trying to scrutinize its design, compare with alternatives and exchange general ideas. These things help the community progress forward. However, it's necessary to base discussion on real facts.

Sadly, the aforementioned article is not even close.

Simplicity: The Ultimate Sophistication

AngularJS is hard. It introduces many new hard to grasp concepts. It has many sharp edges, and it is not beginner friendly at all. Tutorials give you an impression that things are smooth and elegant, but you'll spend many days hitting walls in the dark, before your moves become as elegant as you saw in the Getting Started document. After about 6 months I still have a lot to explore.

Can you make judgements about Angular before you've mastered it? I think no, you hardly understand what you are talking about. While it doesn't have to be 6 months for everyone - I am a rather slow learner - you need to build at least one non-trivial thing.

If you think you can read a Getting Started doc, write a Hello World app, and make conclusions about Angular - either you are orders of magnitude smarter than me, or you've been mislead by an exaggerated promise on the Angular's landing page (more likely).

If you've read a couple of tutorials and blogs, talked to some Angular devs and decided you don't like it - chances are you just don't know enough.

We just got another example of that confusion happening to a seasoned developer.

You be the Judge

I wanted to present my arguments alongside the original statements, but that would make the post look like yet another flame war. Instead, I want to try something different.

Below, is the list of the arguments against AngularJS, as pointed by the author (rephrased for brevity). You can view my opinion on those, and decide for yourself who you agree with.

Conclusion

Lion's share of critical remarks are simply an attack on the philosophy of "bring your own" extension. I personally think narrowly focused tools are the way to go in software. Power and popularity of the Unix/Linux command line, slow death of XML and EJB, success of jQuery (a UI library that doesn't have modals or widgets), recent raise of Flask, etc. are great examples of modularity winning over monolithic tools. All-inclusive frameworks have their, often more prominent, place. But to declare them the only true way one should make a stronger case.

Ambition Is The Enemy of Agile

... and the enemy of Lean for that matter.

I once worked on a really ambitious web project. It was called Wave. Don't google it, you won't find its website. One thing I learned in that project and in many other during my career is that it is always a bad idea to add or build a generic framework before it is absolutely necessary. First I prefer to wait until I've violated DRY a couple of times, then wait some more until it starts to hurt. If lack of framework doesn't slow you down now, chances are your beautiful design just wastes everyone's time.

Votes Are In

Angular is OKUndecidedAngular Sucks
{{ count('A') }}{{ count('U') }}{{ count('E') }}

Tweet me your results:

My score is @AngularJS {{ count('A') }} - {{ count('E') }} @EmberJS

Final Note

If you know Angular and I’ve written something wrong here, please contact me to let me know! I’d love to revisit or correct any mistakes or omissions. Evil Trout

Sure! Let me know if you need more help.

Self-Promotion

If you liked this rant follow me on Twitter for more: