My experience with Angular


I have spent quite a while developing some Angular applications for work and personally. So I thought I would shed some light on my experience in using the technology. Firstly to put simply Angular is a platform that makes it easy to build applications with the web. Its growing popularity is evident through what Google trends show. As Angular is in its 6th version I thought I would evaluate what I like and dislike about the technology.

First off the bat I really enjoy Angular’s component-based architecture. It is similar in this way to AngularJS’s MVC (Model-View-Controller) architecture but provides a much greater improvement in my opinion. Components act as small pieces of interface which can be combined together on a single web page. This enforces such core object orientated principles such as single responsibility and reusable code. This makes development a lot easier to understand, manage and be more efficient. It also allows for code to be maintained easily as code can be changed in one place as components are easily decoupled from each other. As well as this having independent components lends itself well to unit testing.
Another great pro for Angular is its use of RxJS which allows Angular to handle asynchronous data calls. Although the library is difficult to learn and believe me as I am still learning how to use the library. RxJS provides a great pipeline of functions that help reduce code and simplify the process of handling asynchronous calls with multiple events. It manages to turn a complicated series of actions into concise, simple code which is easy to change and manipulate. Another advantage of using this library is that all observables take the same shape, therefore integrating observables allows for similar implementations. A slight drawback I would have of RxJS is its error messages can be too cryptic to understand which again hinders the already steep learning curve. In summary the RxJS is great for simplifying a complex process which can be understood in a few lines of code.
However a drawback I have felt with using this technology is that because it is being developed at a rapid place, there is always changes to versions. This is no bad thing, but from my experience of projects being put on hold and then coming back to Angular after it has been updated 3 times can be unsettling and disruptive. Often more time is spend updating and changing packages than developing. For example Angular 6 was rolled out in May 2018 and Angular 7 is planned for October 2018. However with the introduction to the new ng update <package> command, updating packages may become easier. As well as this I feel the Angular CLI documentation lacks documentation. I couldn’t put it any better than what I found in this excellent blog post “While the command line is very useful and loved by Angular developers, you aren’t going to find enough info in their official documentation on GitHub and you’ll spend some time exploring threads on GitHub to get answers. Luckily, the community is there to help”. You can check that awesome blog post out here:
Another great feature of Angular is Typescript which is basically a superset of Javascript. I really enjoy coding with it, it’s clean, it’s fast, and it’s easy to code with. I have had limited experience in using Javascript however I find the syntax of typescript so simple and intuitive. It was easy to pick up and start implementing big changes to my projects fast. As well as this its seamless integration with Angular functions is brilliant. The language is open source and developed and maintained by Microsoft and from a personal point of view I am struggling to find any faults with it.
In conclusion I really enjoy working with Angular. Its ability to build and scale enterprise applications at a rapid rate is quite astonishing. It’s backed by Google and is constantly being developed so it’s here to stay. The ease of use and design features it provides allow me to make some really slick web applications with reducing a lot of the code that would have been needed traditionally. My only slight niggles is that the CLI interface can be frustrating with updating and modifying packages. This has led me to getting frustrated and spending longer than necessary on Stack Overflow trying to fix these small problems. However in terms of development I have no major complaints and would recommend the technology to anyone.

Comments