As Front End developer who worked in Forune 500 companies such as Raymond James financial advisory company and SwissRe leading insurance broker, in this blog we gonna discuss some famous misconceptions among non- Angular developers. This blog should be unbiased and focused on facts only.
Myth #1: Steep Learning Curve in Angular
One of the famous misleading opinions we observe among people especially on Twitter and youtube gurus is ‘Angular has a steep learning curve’. The short answer is yes, Angular has not a small road to learning and master. But let’s first analyze the definition of this concept. A steep learning curve refers to: ‘The amount of time required to learn is big’. Interesting but what makes it BIG? First, let’s point out Angular is a fully-featured framework. It has built-in Routing, powerful Forms, Dependency Injection and it is built-in Typescript. In addittion, when learning Angular you learn also software development principles and patterns which in other web frameworks not required. This knowledege is applied and transferred to other programming languages too(from PHP to .NET). You think Forms is simple to manage? Just try it please with compex projects. See this blog. Let’s compare it with a libary or framework which is easy to learn and does not have any of those bulilt in features. Now can we imagine building a real-life enterprise application without any of those features? Of course No. Unfortunately, the real web application is NOT the promised TODO app you see in bootcamps. It is more challenging and more interesting. Now for enterprise projects, besides UI rendering, calculate the amount of time to learn those missing 3rd party packages and sum it up with the time required to choose the best fit for the company. Now sum it up again with Typescript which is extremely famous and used in most enterprises regardless of which tool you use. We conclude that the learning curve is more or the same. Finally, we are going bust this myth with the below quote:
‘Easy to learn does NOT mean easy to build a real app’.
Myth #2:NPM Stats shows Angular is behind React or VueJs
Another popular opinion can be observed in blogs is that Angular is not popular because it is behind in npm stats.
Let’s first start with the definition of this concept before analysis:
NPM stats illustates the number of downloads of package in a given amount of time.
So you may wonder why the number of Angular downloads is not leading here. Well, let’s first remember that Angular is popular mostly in big and very big enterprise projects. In those big companies with thousands of developers, people do not simply install packages from NPM default registry. Instead, company infrastructure has its own virtual registry which has cache and custom security settings. This means the real number of downloads of package(in this case Angular) is NOT reflected in npm stats. We can confirm that by comparing the amount available of jobs in javascript front end world. It is May 9, 2021, 00:37 in Poland time while I am writing now. I am comparing stats of jobs via indeed.com worldwide. From the results we can observe that Angular has 18,929 jobs, React has 12,096 and Vuejs has 3,204 jobs. So it proves again those npm stats do not reflect the reality.
Myth #3: Angular is changing in every version.
Another interesting opinion we can observe, some developers who are not familiar with Angular think it is new framework on each new version with a lot of breaking changes. But it is far from reality. Angular is focused on incremental improvements and minimal breaking changes. Also, those breaking changes are mostly taken care by powerful ng update (thanks to angular/cli team).
For instance: recently, we have upgraded our project which was part of a leading insurance broker company from v10 to v11. So it took us less than an hour. There was a small routing-related breaking change and it was taken care of by ng update. The other example but much smaller project is my custom library. Roughly 1 hour was spent to upgrade from v6 to v10. There were minor breaking changes and it was migrated by ng update.
Update: Regarding RxJs is overkill reactions. Let's analyze
below screenshot with and without using RxJs.We see that on the top we use pure RxJs, on bottom without RxJs. On Bottom we declared 4 new variables for a simple thing. Each variable comes with maintenance cost especially in complex proejects. The worst part is, it is not even reusable. It is just a simple TODO task that we develop often.
Finally, we have reached the conclusion of the blog. This article was not about bullying Angular but rather focusing on myths and facts. I have worked with Angular, React, VueJs. All have their own advantages and have a bright future IMO. That’s all, hope you enjoy it. Also please do not hesitate to contact me by the article responses or my Twitter ! Cheers!
Top comments (19)
So, I don't agree with the learning curve at all: If you don't know RxJS or TypeScript beforehand, the time to get up to speed with those (especially RxJS) will significantly make it harder to learn Angular. Another thing that makes is a lot more difficult to learn is that there are multiple ways to do things (for example, pass data between components) without clear weigh-in on when you should favor, say, services versus Input/Output decoprators.
Hi. Thanks for comment. This is one of the things I pointed there, even though projects not using Angular, they are using Typescript and it getting more popular. Even Vuejs switched to full Typescript. Many folks who were critizing Angular for using Typescript, they are now happily using Typescript with React or Vuejs. Regarding, RxJs yes, it has learning curve. But what is alternative of that? Promises, thunk, Redux saga? Unfortunately all comes with cost. RxJs takes time to learn and master but as a result the code is neat, easy to read and flexible which is crucial in long term projects. Please see newly added screenshots on post. In addition, you are not obliged to use RxJs, you can convert it to Promise any time with from operator but I haven't seen anyone to prefer promises by giving up RxJs powerful opeators.
You can write async code just fine without a complicated library like Redux Saga or RxJS. RxJS really shines when you have to combine or pick through data in a certain way, but it's total overkill as the base data-fetching paradigm for Angular.
Well in that case don't use RxJs in case of feeling overkill. It is totally fine, but you never know, requirements are rapidly changing so you end up refactoring to RxJs or other libraries.
In some Angular tutorials,
RxJs
is used to make simplehttp
call toAPI
. Is the purposeRxJs
is just to makeAjax
call or there any particular use case to switch toRxJs
?By the way, Below
RxJs
video made it simple to understand.youtube.com/watch?v=eUYigtm3Sdc
I just updated the blog, with and without RxJs example. Thanks.
You cant uncouple RxJs from the Angular HTTP API.
You cant uncouple RxJs from the Angular HTTP API.
Hi Michael, you can convert Angular HTTP to Promise . See getData method in stackblitz.com/edit/rxjs-vs-promis...
Also developers are not obliged to use http, you can use fetch or some techiques. Http just adds additional useful features.
It is really good to use angular http api (rxjs observable) when you want the ability to cancel any request by unsubscribing the subscription
The async pipe IS extremely nice
Indeed
I am really pleased to meet an article that does angular it's justice.
I partially agree with the learning curve discourse but it must be specified that the technologies necessary to use angular's full potential completely change the workflow positively.
Since I learned RxJS I stopped imperative programming completely because ReactiveX is just that good.
Angular is just that productive if you're serious about strong and maintainable code.
I love it 3000
IMHO the greatest benefit of RxJS is that it changes your way to look at data. Without RxJS you've got a "procedural" mindset: first do this, then wait for data, then do that. It's like fetching water in buckets - one by one. But RxJS teaches you that data flows between your components and you literally build pipes, a network of pipes, so that the data automatically reaches all the components it should. It's powerful, elegant, and I'm pretty sure it even makes apps more robust. But boy does it have a steep learning curve compared to async/await!
Nice article... hard to come by those which are not bashing Angular...
Honestly I've started with Angular 2 as my first SPA framework and not sorry about it.
My first project was an online exam platform, which was used by ~50k people.
I would say the advantage that Angular gives you even as a beginner is that it provides structure and implicitly makes you think about it . I've done little with React but my impression is if you haven't done any prior coding it's easy to get it to a spaghetti level.
While the above statement is true with any programming language I think Angular does a good job to provide you with code segregation principles and having the scaffolding more organized to services, components, modules spec etc.
RxJS is just great at any level with great docs and even for a beginner it's easy to comprehend how to use it and how combine/mutate with multiple sources, streams etc.
There are a lot of misconceptions about Angular in non-angular communities because some referring to Angular when really still thinking Angularjs (v1.x.x). You can also checkout frontendwatch.com for more details about Angular and other top front-end frameworks.
Nice 😄, I think
Angular
is used to build enterprise level and large apps so its easy to maintain the code base.There is a saying : "Use right tool for the Job".
Which means
Angular
andReact
are not the right tools for every Job. Sometimes the right tool for your project can beAngular, React, Java, Node.Js, .NET
etc...Before 10 years it was
PHP
, NowAngular, React
etc , Who knows what will be in future ?Hope you understand the point. 😄
PS: Some interesting posts:
dev.to/rohitrana/why-react-is-winn...
dev.to/ben/which-javascript-framew...
dev.to/cadienvan/the-best-way-to-l...
Really great detailed explanation. Yes most of the enterprise applications prefer Angular. But IMO... In React it is very clear and straightforward to pass data and functions to child components, dynamically rendering child components, to find out why a component is re rendered, how the state has changed etc. But in Angular I don't think it is that easy. I feel it takes less time forba react developer to go from a beginner to pro, buy in angular it might take more time.
If you want to add complexity to your stack and make heavy applications use
Angular
.