The reason Angular JS will fail

I’m all about new technology, but just like Steve Jobs had put it, it has to be intuitive. It has to feel comfortable, and easy to learn. This is reference to another one of my posts done here: Angular JS Kinda Sucks. The main reason Angular JS will fail is because it’s difficult. Honestly, who likes to make their lives more difficult? Not this guy. That’s not to say I’m looking for the easy way out. I believe in hard work paying off, but to make things difficult just for the sake of saying that I did something difficult that I could have done with ease, other ways? That’s just ridiculous. Yes, I can take a boat across the English channel, but why not make it harder and swim it? Other than getting into the book of world records, there really is no practical reason to do so.

Which brings me to the pattern of ever failing technologies. Remember Moo Tools? Prototype? I do too, and sadly, I use NONE of them in any of my projects. jQuery has evolved with the times. It has gotten better and better, and even with its 2.0 release, revolutionized. All while keeping its key ingredient of keeping itself simple to use and logically understandable. Any one of us who struggled with JS before jQuery came along created our own JS libraries to handle mundane tasks of JS. Class lookups, selecting elements, animation, AJAX, etc. We all wondered if there was an easier way to do repetitive work like that. jQuery came along and helped us out in that department.

Prototype and moo tools tried to be innovative, but they just made things harder. Not only were they not intuitive to use, but referring to the documentation was even worse. Would take hours what jQuery could accomplish in mere minutes.

Don’t look at how many companies use those other tools right now. Wait for it and see how many companies will use those same tools in the future. 5 years, 10 years… jQuery has stood the test of time. And the reason they keep winning is because they cater to the developer, the people who are using the tool the most, and making their lives easier to deal with. It’s a complement to code, not a spaghetti nightmare filled with complexities and high learning curves.

I remember the first time I built a web page using jQuery. It was easy. It was instinctive. It was amazing. It made want to use more of it. AngularJS unfortunately, did not have that same effect on me.

In the end, I guess it’s to each their own, but too many times I’ve come across reviews that are not so pleasant to read about Angular JS. Even doing a google search on “jQuery sucks” vs “AngularJS sucks” shows that there are more results for the latter, and AngularJS has only been around for a few years, while jQuery, almost a couple of decades. You’d think that there would be more results for jQuery since it’s been around for longer, and that AngularJS has been harbored by Google.

What are your thoughts?

  • Alyssa-chan

    It seems like I was not the only one who felt something is wrong with AngularJS. I tried to like it… really. While learning it I consumed a lot of resources: books, blog posts, and screen-casts. But my opinion of it still doesn’t change. It sucks. I won’t say the word ‘kinda’ because it is only a softener that attempts to offend people less. I bet the creators of AngularJS can handle it because they are all grown-ups.

    The problem is that it’s backed by Google. Well, Google is composed of many smart people writing complex apps and inventing revolutionary algorithms. The people working there are in the top 1% of society when it comes to intelligence. What about us on the bottom 99%?

    Since you have mentioned Steve Jobs, I remembered the possible explanation why the iPod has been a huge success… It’s because it was intuitive to use, unlike other mp3 players at that time. One might argue that developers like us are smart people, and all we need is patience and persistence in able to learn something new. But times are changing. Things are getting more complicated. Why not make them simpler? As Albert Einstein said, “Everything should be made as simple as possible, but not simpler.”

    • George

      Brilliantly written.

      • Alyssa-chan

        Thanks. BTW you got a nice blog :)

        • George

          Thanks! Glad you enjoy it.

    • George

      And with the dozens and dozens of new languages, frameworks, and other libraries coming out every year, I’ll be spending more time learning new technologies and working less.

  • http://www.sachagreif.com/ Sacha Greif

    It’s not quite the same thing, but you might want to give Meteor a try. It definitely tries to make things easier.

    • imzey benichou

      Meteor seems magic but here is the problem with Meteor, it’s NodeJs. What if I want Golang? Erlang? plus I have to implement my own ddp or stick with mongo.

  • web4future

    Angular will fail because of the community. I asked a questions which many have asked after me, and 3 months on is still unanswered..yet, it’s a simple question, that the documentation or a 3 line example could have fixed. Goodbye Angular, I’ve since redone the work for my client with Jquery and datatables and it was even easier to do then in Angular.

  • dmackerman

    This is the reason AngularJS failed FOR YOU. I’ve built several apps with Angular with a lot of success - more so than if I were to build it with say, just jQuery.

    It’s quite a blanket statement to say that a technology will fail just because it failed for you. There are thousands of developers being productive with Angular. Beyond that, it’s still in it’s infancy. Understanding will improve, docs will improve, and the community will improve - I hope. :)

    Angular is not a fit for every project. Understanding when it’s a fit will go a long way in determining the success of your project. Angular is a fit for my brain, and the way that I think about building web applications. This is not true for every developer, and those certain devs WILL struggle with Angular.

    Just my 2 cents.

  • JonRimmer

    You have it completely backwards.

    jQuery is the equivalent of swimming: Easily understood, not too difficult to learn, and a great and convenient way to cross short bodies of water. However, when you reach a channel, or a sea, or an ocean, and you try to swim across it, you’ll quickly get into trouble, you’ll flounder, and you’ll drown.

    AngularJS is the equivalent of a boat. It requires more effort to acquire it and to learn how to operate it. You might even need a whole crew of people to do it. So why bother, when swimming is so much easier? Because when you do reach a sea or an ocean, and you absolutely have to cross it, you need a boat.

    The people who look at AngularJS are say “this sucks” or “this is way too complicated compared to jQuery” are most likely people trying to use a boat to cross a pond. For sure, they’d be better off sticking with an easier method, but taking that a step further and saying “nobody ever needs to do anything but swim” is a mistake.

    • Keith

      I agree with this. Although I can understand why many people think AngularJS will die as the author mentions. Many tutorials that exist teach us how to do the simplest of tasks that would take jQuery a couple lines to do. Maintaining a large scale jQuery application is a nightmare, but I’ve found that maintaining AngularJS applications is much easier (when structured right).

      jQuery was built for handle simple one-offs that would otherwise be difficult to do (and support a wide number of browsers) in plain JavaScript.

      As others have mentioned, those who write large-scale javascript applications, they will use frameworks like ember, backbone, and angular. Those who only need small dom manipulations will use jQuery.

      • http://marcellusmiles.com Marcellus Miles

        @disqus_pjFymHRlQ0:disqus “When structured right”………

        …and thats just it for me right now! I have yet to see one good comprehensive article showing solid modular architecture (I’ve looked for about 2 weeks now) for an angular application that’s comprehensible, includes testing and includes full runnable source. And I’m not talking about some short and sweet “how to” blog post by joe the coder, but rather something complete.

        I too like the author have been using Javascript/JQuery for years and have been a software dev for about 14 years. I too have seen the community come up with one tool after another only for them to be forgotten too soon. When you are shifting an entire team from one framework to another these decisions have impacts on the team for many years…especially when one works at a place for longer periods of time than those in the valley.

        I do see Angular’s benefit for single page applications, I surely do and have started an architecture myself for one which uses Sinatra as an API for the backend and RethinkDB. I just also need to see some good real world, solid, robust, testable and complete SPA architecture implementations, becuase right now, this Angular learning curve is a real bitch, for those that have done C all you really need to do is see some good damm code and how it was all put together to grok whats going on.

        • http://marcellusmiles.com Marcellus Miles

          I did just find this Yeoman generator, which is more up my alley than the more popular generator for angular as this one has more of an enterprise structure https://github.com/cgross/generator-cg-angular .

        • Neil Moffatt

          I agree. The fundamental problems with Angular are that it is overly technical, it exposes its inner workings as part of the developer toolset, the documentation is terse and severely lackig in examples, and, as you say, there are too few real world model examples. I spent a few months writing http://www.angularbasics.co.uk to cover the basics for newbies, but even now, it feels like a spaghetti set of tools - there is no clear harmonisation of functionality.

    • craigvn

      He didn’t compare jQuery and AngularJs, he compared the complexity of them relative to competing libraries.

  • Guest

    ah, your inflammatory original post got you some views so you’re at it again? Next post “Angular is stupid and so are you for choosing it”

    Angular is dominating the framework landscape in JS land. It also shares key patterns with future web/JS tech. It’s not going anywhere. Not sure why you had such a hard time learning it, either, as I was on a team of twenty that picked it up in a week for a large project.

  • http://antjanus.com/ Antonin Januska

    I get what you’re saying but you’re comparing apples and oranges. Really.

    jQuery is a great wrapper for dom manipulation and is a wonderful for enriching our sites. From slideshows to form validation and all kinds of stuff. It’s great for that. It’s easier than Javascript because you don’t have to understand javascript to work jQuery.

    But AngularJS is a whole other mix. There IS complexity in using AngularJS just like there is complexity in using PHP frameworks, Ruby on Rails etc. Where you have to deal with dependency injections, routing, scope, etc. All of it already present in most other frameworks for the back-end. Angular just brings this extensibility to the front.

    • Daniel Selinger

      Second that. Angular serves a whole other purpose than jQuery. A subset of jQ is actually included (http://docs.angularjs.org/api/ng/function/angular.element). And the docs are not that bad..

      • http://antjanus.com/ Antonin Januska

        Well, I can’t agree with it. The docs are…well, they’re docs. They’re good reference documentation. I would love to see more tutorial-driven docs so that someone can learn AngularJS from scratch.

        • George

          They don’t exist. I’ve looked for them. There was this one video tutorial site that would charge you for viewing. Forget that! Even more of a turn off. Is it really that hard to understand Angular that you have to pay in order to learn it? Geez! I never once bought a book on jQuery and I feel comfortable that I can build ANYTHING with it on top of JS.

      • http://facebook.com/md2perpe md2perpe

        AngularJS can even use jQuery if it’s available.

        • George

          Why use just a library when you can pile a framework on top too? Yikes!

    • Marvin R.

      totally agree. AngularJS is a MVC and a whole framework. jQuery is one part in such a MVC. The better comparison would be comparing Backbone.js + jQuery + ??? with AngularJS. So do not listen to this blog post. Better do your own research and google for backbone.js vs. AngularJS vs. ember.js vs. XYZ ;) jQuery!=AngularJS

      • vandigroup

        +1 for jQuery!=AngularJS

  • Renso

    You are comparing apples and oranges!

  • GonchuB

    The problem here is that you are comparing two things that server different purposes. jQuery is like a toolbelt, allowing developers to do things in an intuitive (now that it has matured and has become sort of a standard) way, whereas Angular was thought of like an MVC framework for js. You should compare it against Ember or others attempting the same thing.

    Yes, Angular is new and is kind of poorly documented, but when you pass the starting point (for some that is harder) you get to understand how good it is, and problems it solves.

    Also, I disagree about the bad community. Check the AngularJS tag on stackoverflow and tell me if it is frozen…

    To the author: have you built a 50+ pages Web app solely with jQuery?

  • http://asko.io/ Asko

    1 decade = 10 years, a couple is 2 and therefore you’re saying that jQuery has been around for almost 20 years. Considering the initial release was in 2006, you’re math is horribly wrong.

    • George

      So is your English.

  • Benjamin Goldberg

    Writing a web app with AngularJS was the first time I’ve ever felt that web development was fun or natural. AngularJS strongly embraces good design patterns and encourages reusable, organized, and well designed modules. My feeling is that new developers from outside the web development community might find AngularJS more familiar than those who have grown up professionally in web development. My two cents, though. I think its great to have so many options these days.

    • khalidmbajwa

      Nailed it. Fun is the key word here. Angular is just so much fun. JOY !

  • khalidmbajwa

    Oh you have it completely wrong. For years i tried to get into jQuery and Javascript and i failed. Coming from the world of flash and flex, it was just too messy. Too much code for too little. It scared me, and yet i tried, again and again, and i just couldn’t wrap my head around how dirty the code got. And above all, it gave me no joy. Programmers love a language/framework which gives them joy, which makes them go ‘Wow, this was so clean and pretty’. jQery gave me none of that. Then along came angular and Holy Wow. Within hours i had built a complete e-commerce app,within a week, a music app with 80% features of groove-shark. Now here was ease, now here was joy. If you make the effort, just spend a few days learning angular, and its admittedly scary way of doing things, just by the virtue of being so different than anything else, i promise you, you too will have joy, and you will realize, there is NO other way to code javascript than Angular. Angular is IT. Angular is joy !

    • http://marcellusmiles.com Marcellus Miles

      This sounds like some scripted religious robotic response from someone at Google.

      Please provide links to these ecommerce in a week apps you speak of as I’m looking for some good examples showing comprehensive and modular angularjs architecture.

  • nbevans

    Somebody doesn’t understand dependency injection and is blaming the world for his IQ problem. It’s a common theme in the JavaScript ecosystem. It’s full of developers who don’t have a sodding clue about software engineering, design or anything. Hackers and hacking is all they are able to do. So when faced with a framework like AngularJS they freak out and retreat back to what they know; which frankly isn’t very much at all.

    • https://twitter.com/albertkoz Albert Kozłowski

      +1
      It’s similar to situation with php few years ago when Symfony2 and other big frameworks were introduced, many people still complain and they use simple non oop php to create websites. Some people will stuck to jQuery but most will move to new mvc frameworks because they are much easier to maintain.

    • http://www.codingswag.com/ Niklas Modess

      The top reason that I’m a big fan of AngularJS is that it pretty much forces you to use dependency injection. That might come out of that I’m a backend developer primarily and have a passion for software engineering. Once you realize that “forced” dependency injection is awesome, you’ll realize AngularJS is awesome (when working on a project that it is suited for).

  • Ben Newton

    I have to disagree with this. Perhaps you need to go back and dive into angular a little deeper. I have built my last few projects in angular with no dependency on jquery except for 3rd party dependencies and they have been the cleanest, easiest to understand projects I have done in a while.

    As others have said, you are comparing apples and oranges. Do a job search for Angular.js and you will see how many companies are quickly changing to it as a preferred platform. It’s here to stay, or until the next great library comes along.

  • http://jcubic.pl/ Jakub Jankiewicz

    AngularJS is as hard to learn as other JS Framework like Ember or Backbone (I even think that backbone is harder), so you think they will all fail? There is no alternative. And also those are framework and jQuery is just a library.

  • Sven

    This graph tells the story about learning angular pretty well

    • George

      Unfortunately, jQuery or even JS is a straight line angled at 45 degrees constantly going up. Looks like Angular is doomed for another trip on the way down after this last dot. ;) JK

  • smsohan
  • http://cheynewallace.com CheyneW

    jQuery is better than Angular for web app development? I had to read that twice to be sure.
    You didn’t even explain why you think so, just that it’s too hard for you. Which means you never completely understood the framework and how to use it properly.
    You must be working on toy sized web applications because you clearly haven’t hit that brick wall DOM spaghetti hell that happens with a large application based on jQuery. I have many times, and it’s nasty.
    JonRimmers analogy was spot on. Angular is the heavy lifter framework, jQuery is a tool. You use the right tool for the job and after your web app grows to a certain scale, jQuery is not the right tool.
    If you had suggested Ember, Backbone or something in the same ball park over Angular I think i would of taken this post more seriously.

    • George

      First of all, I understand what I’m coding, and I structure everything from the beginning. It’s called architecture. I don’t need a framework to force me into a disciplined mind set. You can be a bad coder with any language if you’re not disciplined enough. If your claim is that angular avoids spaghetti code by forcing developers with rules and constraints, that scares me. More of a reason not to try that trap. ;)

      Why would I need to use angularjs as a framework when my code is so well written that I know what’s happening, AND my developers know what’s happening. The difference is that we plan things out before we build them, we don’t just go of running into a project with code from day one. System Design 101 dictates that you should spend as much time thinking out your project as you do developing it. And yes, I’m disciplined enough to actually plan things out before I do them. If that makes me a cowboy coder, then, Yee Haw!

      I could say the same thing to you. Maybe you’re too lazy to actually write direct JS code, so you try to look smarter by learning an abstract layer on top of a perfectly fine language (js) not understanding that you’re actually bloating your codebase with unnecessary code therefore reducing performance on your site overall.

      Lesson: Why use a framework when you don’t need to? The code is fine as it is. I built it and it works. Have not hit the proverbial spaghetti code DOM wall in my,… oh… 12+ years coding.

      • http://cheynewallace.com CheyneW

        I’m sorry, but you say you have 12 years of experience and yet you find Angular too difficult? I too have over 10+ years experience, many of which involved building out large web applications for enterprise companies. I resisted the new breed of frameworks until it be came painfully obvious I was being naive about the topic, which is what I think you are doing right now.
        You claim your code “is so well written” you have no need for these frameworks? What a load of self indulgent crap. And I suppose the rest of the world that uses Angular are just a bunch of hopeless hacks who can’t code, yet seem to understand a framework that you find too hard?
        Im sorry, I don’t buy it. You’re free to to bag out Angular, Backbone or Ember all you want but at least provide a solid case. “Its too hard to learn and my code is already perfect” is just crap.

        • George

          Thanks for your reply. It’s just that in my experience, I have never needed to throw bloatware on top of my code to make it more efficient. My sites load under 2 seconds, most of which under 1 second, and that’s what matters to me. My turnaround time for code is usually in a few minutes, not a few days to wait for some release deployment. I’m just asking the community to explain why use an abstract layer on top of something that already works? JS is fine as it is.

          My question to you is… What’s going to happen when too many people get their hands on the angular js implementation you have now and muck up the code? Are you going to try to fix it by throwing another layer of abstraction on top of that?

          Can’t you honestly realize that it comes down to not what tools you use, but how you use the tools you already have? Browsers don’t understand angular, or jQuery. You need additional libraries on top of your code to make it work. Browsers understand JS. It’s that simple. Why add complexity? I’ll tell you why… because someone thought it was a good idea to layer crappy code with some icing on top. And that icing? You got it… angularjs.

        • George

          Of course I write perfect code. At least I try to. I’m not going to lie about it and say that I suck. I try to perfect my skills, apparently, unlike you guys who will find other ways to bloat your code instead of focusing on the currently existing code and making that better.

        • http://cheynewallace.com/ Cheyne

          Hilarious. George, I think you forget that you have your portfolio listed on this website. You and I have very different definitions of what constitutes a large website or “perfect” code. You clearly do not have experience on large scale websites based on the listing of toy websites iv seen.
          You and I are talking about different worlds i’m afraid.
          I just read another post you wrote that says your code needs no tests because its so good.
          Again .. Just hilarious, you clearly don’t understand why testing in done either and just gave another insight into your level of professionalism. I feel sorry for your work mates.
          That line would get you fired in most large development houses, I would pay money to see the reaction of a manager when you tell him you don’t need to write tests, hah.
          I have no idea who is hiring you, but you should hang on to that job. I would never hire anyone with your attitude towards new technology and delusion about his own perfection. Its fine to dislike frameworks or abstraction, but the other things you’ve said here have pretty much discredited your self and dug your own hole. You should also remember, at some stage you probably resisted, but then eventually adopted jQuery, an abstraction over javascript, now it’s your tool of choice. Do you really think its going to be that way for ever now? Are you going to be the last man on earth still writing jQuery apps in 20 years? Pull your head out of the sand, there is a world of new more powerful “jQuery like” tools out there, you’re just too stubborn to see it.

          • George

            Interesting reply how you try to belittle someone who has a different view than you. And even after I’ve explained why I do what I do, you fail to see those points. Just cherry pick what you’d like. I don’t mind it. You can live in your own world of happiness. That’s fine with me.

            One question for you though. How can I list large scaled enterprise applications that are only accessible through an intranet? You’re a bright one aren’t you? I do have an awesome job with a small enough company. We’ve realized that to keep a site going, you don’t need a team of 1000 developers all not knowing what they’re doing. You just need a few good ones that know what they’re doing. I don’t know how much clearer I can be that what we’re doing works and has worked for years. No need to change or add anything. We get what we need. Fast responses, light loads, happy customers and clients.

            As far as your jQuery comment… I adapted it very soon after it came out because it was the same tool I was building for my sites. A lot of developers back then had a similar library. And a lot of them had crap. jQuery just had similar features and I really liked the. And I’ve used it since, for over a decade. It has stood the test of time for us.

            Do you remember another complex and bloated and hard to understand library, oh… I don’t know… called prototype js? mootools? Not every new thing that comes out is gold, friend. You need to really study what comes out and test it yourself and see if it is better for you or not before you jump into it. We don’t need to re-invent the wheel to make a good application work.

            jQuery was already similar to what we were building, so it was much easier to adapt it. jQuery has proven itself over the years to be the top used library. It should be obvious that it makes sense to use it.

            You seem to like bashing me a lot more than debating my points. Could you knock it off please and show a bit of professionalism on your end? Thanks.

          • George

            And yes, the code is perfect. We’ve tested it over and over against any other methods, formats, frameworks, what have you… It doesn’t get better than what it is. I wish you could see it. It’s beautiful. It’s like Neo in the Matrix. It just makes sense! It’s like the first time Steve Jobs saw his mac up on a stage. It was perfect! It made sense to him, and apparently to many, many people that agreed with him. We’ve reached the point of reusing the way we write code to meet any size website or wep application. You give me the task and we can make it work. And when you look at it, it’s so simple and just makes sense. It’s crazy! I’m telling you. And we’re not using anything outside of a LAMP stack. Apache, Core PHP, MySQLi commands written inside the php files, and templates also written in PHP and HTML. It’s perfect! I can’t describe it any other way. And we’re developing a way to translate jQuery back to JS upon file save, or an IDE plugin. That’s our last step to get rid of jQuery on the client side. So, back to JS. This way, the client isn’t bloated with crap either. I know it’s hard to believe for someone who has been lied to about coding practices all these years… but believe me… it’s not only possible, it’s reality. It’s too bad you’re too stubborn to even try to understand it.

          • http://cheynewallace.com/ Cheyne

            Sorry George, my intent was never to belittle you. You caught me before my morning coffee today and from what’s been said, it’s clear we work in different worlds. I think we’ve both said everything that we needed to. Feel free to delete these messages if you don’t want them on your blog.

          • George

            This, I agree with you. We work in different environments. What I’ve written here is why things work or don’t work for me, not for everyone else. But, I do see that there’s a 50/50 split between the two groups. That’s a lot of people on either side of the fence.

            Haha about the coffee bit… Fortunately, I had mine earlier.

            If I delete any message, it defeats the purpose of commenting. It’s a free for all blog. I actually thank you for your input. I definitely heard what you were trying to get across.

            Cheers!

          • http://cheynewallace.com/ Cheyne

            Haha, well you’re very welcome. Who doesn’t like good internet banter, right?

            Cheers George

      • Guest

        Tell us about how you write tests for your code. How do you handle testing in isolation and mock your dependencies? What tools do you use for providing test data?

        • George

          That’s the beauty of the code I write. No tests necessary. I have multi tier environments set up that I test throughout myself. If the site doesn’t break, it works. I like keeping things simple, if you haven’t noticed.

          • Ag ibragimov

            Hahaha… “No tests necessary”. I am laughing at your face, Sir!

          • http://GlassOcean.net/ Perry Butler

            You must mean writing unit tests, which act like training wheels to help preserve bad code and bad architecture one step at a time, because as long as it “works” then that’s good enough right? Wrong, your architecture should be modular enough to allow re-factoring (improvements) without breaking several other parts of the code or making things so ambiguously difficult to debug. Make a change, test it for real, stuff might break, fix it; you now have a working feature or modification without the unit test bloat and time waste. Of course there are reasons to use unit testing, but for the majority of projects it’s overkill. No reason to laugh.

          • George

            My point was exactly the same.

          • Ag ibragimov

            You like keeping things simple? Then keep them simple. Use angular.js and stop manipulating DOM elements imperatively from javascript where it’s possible to do it declaratively.
            You don’t go to buy a tuna sandwich and ask the guy to make you a meal between two slices of rye bread that consists of mashed meat of atlantic bluefin tuna, condiment creamy white sauce, with melted product of coagulation of milk protein on top.

          • Ag ibragimov

            Unit testing is important and essential part of any system. It’s like a climber’s safety gear. Yes, good climber can do without it and may in fact climb faster and better. Misusing the harness or choosing wrong carabiner though may result in failure. People always respect reckless climbers, but common sense tells you that one always have to check harness and should neither completely trust yourself nor the rope.
            You may not use unit tests but your system should be designed the way that at any point you could implement some. Using unit tests (properly) and knowing how to design testable systems is very beneficial and that’s why it makes angular so awesome, because it’s been built with testability in mind.
            I am not saying that unit tests can completely replace manual QA, no. But in large projects exposed to millions of users manual testing is never enough and even an army of QA testers can possibly miss something. For that reason it’s usually always a good idea to have some automated end-to-end tests as well. Also many times I was in a situation where unit tests helped me to speed up the development, instead of waiting for other parts of the system to “kick-off” I could easily mock them up in a one-time, temporary test. Otherwise I would have to manually click through elements or do something else in order to see how the thing would interact.

  • sgtpep

    Developing of comparable web applications without using tools like Angular is much more difficult. So it worth its learning curve, until a lot of fundamental things in web platform get better.

  • ivanfioravanti

    Difficult??? Like anything else you don’t know. Was it easy reading when you didn’t know how to do it? It has a learning curve, but once mastered is pure power.

  • Callum Vass

    What a poorly written article but thankfully the comments redeem the article by showing more common sense than the author. I hope new developers or developers new to angular read the comments before reading this article..

    • http://marcellusmiles.com Marcellus Miles

      Because one should be persuaded by the masses instead of the few or one? Too much of that logic these days. Read them both and let the reader decide for themselves. I’m not arguing using Angular or not, but I’ve seen these trains before in the web app development community and many never make it to the next station (however, I do believe Angular will do well in it’s space).

  • Lauener

    Have a Look at https://moot.it/riotjs/ Perhaps this is the architecture the author is searching for.

  • Normalised

    for me angular + coffescript is the only thing that has made browser development anywhere near enjoyable. Sure angular is difficult to learn in places and the naming choices could have been better as pointed out by smsohan, but once you get the hang of it, it’s much better in terms of structure, encouraging functional decomposition and hence maintainability.

    Like most development the choice of libraries you use within the stack can greatly help, to get the best out of angular it helps to take the term ‘framework’ for what it means, it wont solve all of your problems but the ones its there for can be solved quite elegantly.
    It might help to take a look at something like Yeoman : http://yeoman.io/ which gives you a nice way to setup angular projects along with the other tools and libraries that complement the framework.
    I’d recommend paying particular attention to learning how to use promises and also underscore / lodash.
    Promises for dealing with data transport, lodash for data manipulation then you have angular for consuming and presenting the data.

    If you are used to other environments where concepts like Dependency Injection, factories, services etc.. are quite normal then i’d thoroughly recommend angular as a way to take away the pain of browser development. Sure it’s worth knowing some jQuery but I find myself using it less and less every day because the apps im involved in are not so much about the DOM and how to manipulate it but they’re all about the data. Most of the code knows nothing of the presentation layer and nor should it.

    Is learning angular difficult? in some ways it is, but are the rewards worth it? for any kind of data-centric app absolutely.

  • Robert Montesano

    Your right the learning curve is horrible and the documentation is unwelcoming, but I prefer angular for large scale web apps and jquery for a basic website build. Angular does use jqlite.

  • Verikono

    I think PrototypeJS didn’t fail but rather the idea of extending native prototypes in the DOM seemed like a good idea until those implementations needed to change (Either through stardardisatoin or vendor implementation); the idea was a good one but counterproductive ultimately to enable javascript to evolve.

  • blueshoes

    I am just now learning AngularJS. I am finding the book Pro AngularJS by Adam Freeman to be an excellent way to learn it. As to comparing AngularJS to Jquery or anything else, I do not know of anything other than Flash or SilverLight that supports 1-way and 2-way data binding and rich controls, which I think is practically a necessity for single-page RIAs. I am guessing that AngularJS is a good solution until HTML5 (or whatever it becomes) evolves to have the power of Flash and SilverLight apps, both of which were ahead of their time and have been mostly rejected because of that (and Steve Jobs). I think AngularJS will be around until the needs it meets are available in some better way.

  • Voice Of Saruman

    I’m late to this post’s party, but I found Angular utterly intuitive, though it is (for the best IMO) a real shift in thinking away from jQuery (and pre-jQuery) style thinking. Maybe there’s a steeper learning curve than jQuery, but it’s apples and oranges. The idea of building a single page web application with Backbone/jQuery is utterly wretched and unthinkable to me now after building one with Angular.

    • George

      How can something be utterly intuitive and have a steep learning curve? If it’s intuitive, it should not need any learning, or minimal learning.

      • Voice Of Saruman

        Well, I said “steeper” learning curve, and that should go without saying, because Angular is made for building complex single page applications, and pretty much anybody can learn to use jQuery to find a DOM element and turn it blue. As I said, apples and oranges. I didn’t think we’d have to split hairs on this, but “intuitive” is a relative term. Programming can be intuitive in a different way than learning how to use an iPhone is intuitive. I’m talking about the (perhaps subjective but self-evident) feeling while learning something that “this idea makes sense” vs. “huh, that idea doesn’t make sense.”

        • George

          So then, does it come down to a comfort level? Use what you feel you’re more comfortable and knowledgeable in? I basically created my own ajax controller that I use constantly without having to change anything in jQuery / JS. Is that something Angular can do out of the box?

          I think in the end, both are layers of abstraction, and until someone can show me actual examples of code that will show me which one is more performant and easy to implement, I’d have to stick to what I feel is the right tool for me.

          • Voice Of Saruman

            That’s fair, so I don’t want to belabor the argument, but I think we would also agree that you choose a tool based on the job at hand, not purely based on comfort. There’s no doubt that Angular isn’t right for every situation. I suppose I just had a different experience than you did with it. I might be missing something re: your ajax comment, but $http is a core service (out-of-the-box) in Angular that is very easy to use to handle AJAX and its responses. It’s incredibly quick to spin up an application that handles routing and related AJAX requests that return data back to the view scope, or external API requests with deferred promises and such. Everything just…seems to work. I guess that’s abstraction, but it’s welcome for me.

  • Jeremy Tellier

    This article is so spot on with my experience I would have thought I wrote it myself. Time and time again I have worked projects where management or architects dictate a micromanagement framework in order to maintain some semblance of standards but if you have been in the industry long enough to track some of these projects long tails we find they grow so large that the Micromanagement framework becomes something that makes simplicity, extremely complicated, simply for the “benefit” of having repeatability….In fact what you have is a slew of boilerplate, useless, code and find your engineers copying and pasting hundreds on top of hundreds of lines of code for no reason other than “that is what the framework requires”…. Great Article!

    Remember ActionScript?… Wonder how everyone with Cairngorm, Swiz, RobotLegs, and Mate projects are doing if they have to be maintained.

    • Jeremy Tellier

      I just read through your comments section and noticed a theme of people questioning your IQ rather than making valid points…. To that I say I was once in R&D where my entire job was simply to prototype one framework versus another…. and what I found is that people who tended to like frameworks similar to how Angular works, are those that came from very specific background, namely Rails or Java, and they create micro frameworks to try and mimic what they are used to…. My example with Flex above was huge with this, Java developers rarely truly got the execution of code along a timeline like executing on a video clip… This is where you had to get your mindset with Flex, but instead we see people making “JavaBean” type functionality inside of ActionScript so that they would feel comfortable operating in unfamiliar territory….. The people opposed to Frameworks like this are used to the “lean” operation of web development and understand JavaScript and how it should be written… We do not need our code to mimic another to be comfortable…. I write in Java, JavaScript, ActionScript, C, C#, PHP, all over in my days and I would consider my ability to not impose the rules of one technology, onto another, a virtue rather than a sin…. I have been known to Pascal Case my JavaScript after writing a C# Api though and I know that can drive you camelCasers crazy. ;)

  • Brdavs

    This is your second rave about angular and it’s shortcomings.
    I can see that you still do not understand angular.
    Don McLean’s Vincent (Starry starry night) comes to mind :)