DEV Community

Discussion on: Angular struggles in 2020

Collapse
 
thorstenhirsch profile image
Thorsten Hirsch • Edited

The developer experience of Angular isn't that bad at all. I currently re-learn Angular with v9 and v10 and see a lot of appealing features:

  • it's a complete framework with solutions for all my problems (so far)
  • integration of material-ui
  • rxjs (I find observables easier to understand than async/await)
  • good documentation
  • upgrade from v9 to v10 was easy
  • typescript rocks(!)

Well, the upgrade from v8 to v9 was not so easy due to Ivy, but I only had to migrate one library of my app to succeed... and I'm a total noob in frontend development. So should I worry about all this stuff, even though I'm quite happy with my Angular based app?

Collapse
 
otijhuis profile image
Okke Tijhuis

If you're happy, don't worry about it. To be honest, if your app is small to medium size and not very complex it doesn't matter much which framework you choose. People issues (communication, lack of requirements etc) are often way bigger problems than the technology choice.

That said, we started with Angular 2 and are now on version 10. My experiences with it haven't been that good. From build issues to having to write lots of workarounds and custom components because features are broken, half-baked or don't exist. It's quite a big application and a pretty complex one at that. And since the upgrade to Angular 9 the dev server has been incredibly slow.

I see quite a few people mentioning the fact that it's a 'complete' framework as a pro. If it was flexible enough that you could easily switch parts out in case they didn't meet your needs then I'd have no problem with it. The thing is, with Angular you're often stuck doing it 'their' way, otherwise you're out of luck. I like the way how Vue handles this. Vuex/vue-router are maintained by the core team so you know those always integrate well, but if you really want to switch them out you can.

RxJS itself I like. In some cases streams make things a lot easier, but I don't like it when a framework forces me to use them in situations where they aren't adding any extra value. It's also another thing to learn and I find that many developers don't understand them well enough, and do things with them you really shouldn't (subscribe within a subscribe, settings variables outside of the stream, forgetting to unsubscribe when not using the async pipe and so on).

I have to disagree with the good documentation. I find it only covers the basics. Anything beyond that I just google right away because I'm never able to find it in the documentation.

Most upgrades are easy yes. But most of those releases are just minor, not major like the version number would suggest. My main issue with the releases is that I can't even remember the last time there was actually something in there that would make my life easier. I often find that the typescript improvements that come with the upgrades are the ones I'm looking forward to the most, which is sad. Improving bundle sizes and so on is a good thing but it doesn't make the development any easier. I use Vue as well and I feel that team has a much better grasp on what's important to developers. I see quality of life improvements basically every single release.

Typescript is very nice but you can use it with almost any framework these days. It has its own quirks as well though.

What I've never been able to understand is why people say Angular provides more structure. They provide a default folder structure, that's it. The way code is structured is still completely up to the developer. If you don't have developers who really care about code structure/architecture and simple solutions you will inevitably end up with a mess, no matter the framework used. It's a people problem, not a framework issue. I personally find it easier to make a mess in Angular because of all the workarounds needed when the framework forces me into a more complex solution.

I will never choose Angular again if I have a choice. Vue and React can do anything Angular can do, that's not the case the other way around. You just don't have the flexibility in Angular and it especially lacks features when it comes to dynamic components. If I could I wouldn't even use a front-end framework anymore and just use Elixir/Phoenix/LiveView :)

If you enjoy working with Angular and it does everything you want then don't worry about what anyone else says. No matter what you choose there's always a compromise. I've been programming for over 25 years in lots of languages so I've seen my share of code and formed my own opinions. And there's always more to learn. Have fun, learn more about Angular. See what you like/dislike. Do what makes you happy. You'll write your best code when you're enjoying yourself.