Not everyone has the luxury of throwing away one years worth of work and choosing something else.
Once you understand how Angular works internally and not just in a tutorial sense, it can be very powerful. Most of Angular's quirks can be worked around using common sense, and as in some cases, using the right tools, understanding Angular isn't a silver bullet goes a long way too. The issues my team encountered won't be encountered by everyone, we were dealing with potentially thousands of items being in the page caused by infinite scrolling.
I get that some people think Angular is difficult, learning the basics is easy, learning how to use Angular the right way is the hard part. I think a lot of the issues people encounter using Angular are due to their own limited understanding of the framework. The documentation leaves a lot to be desired, but there are a lot of good blog posts out there like this which tell you upfront the issues and best practices.
The beautiful thing about Angular is that it is not difficult to get it to shows its warts, so you can work around or fix them. Combined with Batarang, you can get a pretty insightful look into your application and where you can improve it as well. A lot of the issues we've encountered were due to the fact someone on the team did something wrong expecting it to work, not Angular itself. Like a good woodworker, you've got to go with the grain, not against it.
I think if our application were being built from the ground up today, the team unanimously agrees that we would use something like React + Flux. But in our case, the business wouldn't be too happy with us throwing away old unit tested and battle-tested code in favour of something new and lean for the sake of a few milliseconds of browser performance.
I agree 100% with this. Every framework has its pain points - that is why it limits you as a framework, as opposed to homerolling your own solution.
The gain you get is better support for foundational tasks and the ability to focus on the high level business requirements faster. There are very smart people working on the teams of all of these frameworks, available for free with an MIT license and supported for free - take advantage of it, but don't expect any of them to be perfect and expect to still be putting in hard work in understanding the internals of all of them.
There are very smart people working on the teams of all of these frameworks
Dunno, most of the JS frameworks have crappy design and mediocre implementations. Angular is not some shining beacon, it's convoluted beyond belief.
Being a framework, and being from a large company doesn't mean much, nor it guarantees that the result reflects having been worked by "smart people".
The SUN people were smart too, and yet we got the J2EE shit-fest of early to mid 00's. IBM also shipped it's share of crappy frameworks, Microsoft too.
and expect to still be putting in hard work in understanding the internals of all of them.
Also expect those framework based skills to be obsolete 4-5 years down the line, when some other shiny framework comes along.
Also expect to have to rewrite tons of your work, when the developers with ADD lose interest and go to rewrite the framework, like with Angular 2 (and I've relived these all over again with (Java) Struts 2, (Python) Zope 3, and tons of other stuff besides).
Comments
We managed to get a twenty percent speed up in our app that used Angular...
...by removing it and using something bespoke and lean and simple instead!
Not everyone has the luxury of throwing away one years worth of work and choosing something else.
Once you understand how Angular works internally and not just in a tutorial sense, it can be very powerful. Most of Angular's quirks can be worked around using common sense, and as in some cases, using the right tools, understanding Angular isn't a silver bullet goes a long way too. The issues my team encountered won't be encountered by everyone, we were dealing with potentially thousands of items being in the page caused by infinite scrolling.
I get that some people think Angular is difficult, learning the basics is easy, learning how to use Angular the right way is the hard part. I think a lot of the issues people encounter using Angular are due to their own limited understanding of the framework. The documentation leaves a lot to be desired, but there are a lot of good blog posts out there like this which tell you upfront the issues and best practices.
The beautiful thing about Angular is that it is not difficult to get it to shows its warts, so you can work around or fix them. Combined with Batarang, you can get a pretty insightful look into your application and where you can improve it as well. A lot of the issues we've encountered were due to the fact someone on the team did something wrong expecting it to work, not Angular itself. Like a good woodworker, you've got to go with the grain, not against it.
I think if our application were being built from the ground up today, the team unanimously agrees that we would use something like React + Flux. But in our case, the business wouldn't be too happy with us throwing away old unit tested and battle-tested code in favour of something new and lean for the sake of a few milliseconds of browser performance.
Also known as the "sunk cost falacy": we've invested so much in working with the wrong stuff, we can't give it up now...
Sounds like my car. I have spent enough on keeping it running in the last year, I might as well pay for yet another repair.
I agree 100% with this. Every framework has its pain points - that is why it limits you as a framework, as opposed to homerolling your own solution.
The gain you get is better support for foundational tasks and the ability to focus on the high level business requirements faster. There are very smart people working on the teams of all of these frameworks, available for free with an MIT license and supported for free - take advantage of it, but don't expect any of them to be perfect and expect to still be putting in hard work in understanding the internals of all of them.
Dunno, most of the JS frameworks have crappy design and mediocre implementations. Angular is not some shining beacon, it's convoluted beyond belief.
Being a framework, and being from a large company doesn't mean much, nor it guarantees that the result reflects having been worked by "smart people".
The SUN people were smart too, and yet we got the J2EE shit-fest of early to mid 00's. IBM also shipped it's share of crappy frameworks, Microsoft too.
Also expect those framework based skills to be obsolete 4-5 years down the line, when some other shiny framework comes along.
Also expect to have to rewrite tons of your work, when the developers with ADD lose interest and go to rewrite the framework, like with Angular 2 (and I've relived these all over again with (Java) Struts 2, (Python) Zope 3, and tons of other stuff besides).
If all you got for bespoke and lean is a "20% speedup" then I don't think it's worth it.
You should be able to get at least 100-200% speedup...
They are only removing the V and replacing it with another V.