Mastering Angular: A Comprehensive Guide to Beating the Learning Curve

Vu Pham
14 min readMay 10, 2018

--

“Hiker with a heavy backpack looking out at mountains and still water” by Philipp Kämmerer on Unsplash

Learning Angular can be a bit of a challenge, but don’t worry, we’ve got you covered! This post contains a list of resources that we recommend making your learning journey as smooth as possible.

Photo by Redd Angelo on Unsplash

When I first started learning Angular, I had some experience with web development and had used other technologies like HTML, CSS, JavaScript, and JQuery. However, I found it difficult to understand the official documentation and follow along with tutorials. I often felt overwhelmed trying to connect all the pieces and remember what I had learned.

But after working with Angular for over a year and a half, I’ve come to appreciate its power and flexibility. I’ve seen the community continue to improve and evolve Angular, making it an even more exciting tool to work with.

If you’re new to Angular, don’t worry — you’re not too late to the game. You’ll be able to avoid many of the breaking changes and manual configurations that earlier versions required. And if you’re already familiar with Angular, our list of resources may help you discover something new.

We recommend starting with the basics of JavaScript, HTML, and CSS for front-end development, and a backend framework before diving into Angular. And remember, learning is always more fun with a team! Feel free to share your own experiences and learning paths to help others navigate the steep learning curve of Angular.

I’ve learned a lot from Pluralsight. For those who are new to the platform, Visual Studio subscribers can access Pluralsight by activating their Pluralsight benefit at https://my.visualstudio.com/benefits. Or, you can start a free trial to check it out.

JavaScript ES6

JavaScript ES6

To fully understand and master Angular, it’s essential to first become familiar with TypeScript and ECMAScript 6 (ES6). TypeScript is a programming language that Angular uses, and it adds optional static typing, classes, and interfaces to JavaScript, making it easier to write and maintain large scale applications. ECMAScript 6 (ES6) is the latest version of JavaScript that includes new features such as classes, arrow functions, template literals, and more, which are used in Angular.

To get up to speed with ES6 and TypeScript, we recommend starting with the following courses:

By taking these courses, you’ll be able to understand the syntax and features of TypeScript and ES6, which will make learning Angular much smoother.

TypeScript

Angular is a modern framework built entirely in TypeScript, and as a result, using TypeScript with Angular provides a seamless experience. Angular not only supports TypeScript as a first-class citizen but uses it as its primary language.

To get started with Angular, it’s essential to first become familiar with TypeScript. This will help you distinguish between JavaScript and TypeScript and understand the specific role of TypeScript in Angular.

There are many resources available for learning TypeScript, including online tutorials, documentation, and courses. Some popular options include:

  • The official documentation on typescriptlang.org
  • The TypeScript handbook on GitHub
  • Online courses such as “TypeScript Fundamentals” on Pluralsight, “TypeScript Essential Training” on LinkedIn Learning, and “TypeScript: Getting Started” on Frontend Masters.

Once you have a solid understanding of TypeScript, you’ll be well-prepared to begin learning Angular and take advantage of the seamless experience that it provides by using TypeScript as its primary language.

TypeScript “Elevator pitch”

TypeScript is a powerful superset of JavaScript that adds optional static typing, classes, and interfaces to JavaScript. It makes it easier to write and maintain large-scale applications and provides a seamless experience when working with Angular.

Anders Hejlsberg, the chief designer of the C# programming language and co-designer of TypeScript, describes it as “JavaScript that scales.” John Papa, an expert in professional application development with technologies including Angular, also highly recommends learning TypeScript.

I didn’t start with this “elevator pitch” at the beginning of my journey, but I think it’s important for you to understand what TypeScript is and to be motivated to take on the challenge of beating the steep learning curve. Learning TypeScript will help you write better, more maintainable code and make working with Angular a smoother experience.

TypeScript Fundamentals

by John Papa and Dan Wahlin

To learn TypeScript fundamentals, I recommend the course “TypeScript Fundamentals” by John Papa and Dan Wahlin. The course covers the role of TypeScript in modern web development and its key features, such as types, classes, interfaces and decorators. It also covers how to use TypeScript with popular JavaScript frameworks and libraries. Experts, John Papa and Dan Wahlin teach the course, and it’s a great starting point for anyone looking to learn TypeScript and take their JavaScript skills to the next level.

Alternative: TypeScript In-depth by Brice Wilson
For those who prefer a different teaching style or want to review TypeScript, “TypeScript In-depth” by Brice Wilson is another great resource. This course covers the same key concepts as “TypeScript Fundamentals” but with a different approach.

Optional reference: Using ES6 with TypeScript by Steve Ognibene
For those who want to further solidify their understanding of the relationship between JavaScript and TypeScript, I recommend checking out the course “Using ES6 with TypeScript” by Steve Ognibene. This course provides a great way to review ES6 and TypeScript together, as it uses TypeScript as the transpiler for ES6 to ES5 and focuses on general-purpose language features. It’s a great way to check your understanding and solidify your knowledge of both languages.

The TypeScript strong-typing support

As you learn TypeScript, you’ll not only become familiar with its new syntax but also understand the benefits and mindset of the strong-typing support it offers. The steep learning curve may appear when you start to adopt strong typing in JavaScript, which can be frustrating at first. But it’s important to keep in mind that this is a fundamental aspect of TypeScript and it’s been implemented for a reason.

Anders Hejlsberg, the chief designer of the C# programming language and co-designer of TypeScript, has stated that strong typing in JavaScript is beneficial, even though it may be difficult to see the benefits initially. Strong typing in TypeScript can help prevent a lot of common runtime errors and make it easier to maintain and scale your code.

It’s important to remember that learning a new language or framework can be challenging, and it takes time to understand the reasoning behind certain features. As you work with TypeScript long enough, you’ll start to appreciate its strongly typed nature, and you will see the benefits it provides.

Keep up with TypeScript movement

Now that you have a solid understanding of what TypeScript is and its key features, it’s important to keep up with the latest version and its updates. TypeScript is constantly evolving, and new features are added regularly.

Here are some resources to help you stay up-to-date with the latest TypeScript version and its features:

By regularly visiting these resources, you’ll be able to stay informed about the latest TypeScript version, new features, and other important updates. It’s also a good idea to join the TypeScript community, you can participate in discussions, ask questions, and get help from other developers who are also working with TypeScript. You can find community on TypeScript slack channel, subreddit or meetup groups.

By keeping up with the TypeScript movement, you’ll be able to take full advantage of its latest features and stay up-to-date with the best practices for using TypeScript in your projects.

RxJS Observables

JavaScript and RxJS: Managing Asynchronous Code

by André Staltz

When starting with Angular 2 and RxJS, I found it hard to find resources to learn from. I struggled to understand the concepts behind RxJS, and when upgrading from version 4 to 5, I had to go through all my code to make changes.

But I found that the key to understanding RxJS was to learn about its history and how it evolved to solve the problem of managing asynchrony. By understanding the history and purpose of RxJS, I was able to appreciate its power and use it effectively.

I recommend that you take the same approach. Learn about the history and concepts of RxJS, and understand how it’s used to handle asynchronous data streams. This will help you overcome the steep learning curve and become more fluent in using RxJS.

To start, you can take courses that cover the history and concepts of RxJS, such as JavaScript and RxJS: Managing Asynchronous Code by André Staltz. This will give you a solid understanding of the concepts and how to use RxJS effectively. you can find it on Pluralsight, here’s the link https://www.pluralsight.com/courses/javascript-rxjs-managing-asynchronous-code

Rethinking Asynchronous Programming

by Kyle Simpson

“Rethinking Asynchronous Programming” by Kyle Simpson is a great course that explains the need for managing asynchrony in JavaScript. It covers different async patterns, including Callbacks, Thunks, Promises, Generators, Observables, and Communicating Sequential Processes (CSP) and how they have evolved throughout different JavaScript versions. This course is an excellent starting point for understanding the concepts of Managing Asynchrony and making your way through the steep learning curve. It will give you a more concrete sense of the pros and cons of each pattern and help you to see the bigger picture. You can find it on Pluralsight, here’s the link https://www.pluralsight.com/courses/rethinking-asynchronous-programming

As an optional addition reference, you can also check out the “Advanced TypeScript” course by Brice Wilson, specifically chapter 6, which covers implementing asynchronous patterns. As you learn about different async frameworks and libraries in JavaScript, it can be overwhelming to keep track of all the rules and complexities. TypeScript provides a solution by allowing you to write asynchronous code using its own syntax, which is then transpiled to different JavaScript versions. In chapter 6, you will learn how to convert from callbacks to promises and chain promises using async/await syntax in TypeScript. It’s important to keep in mind that asynchronous code in JavaScript is generally single-threaded, but it can still run efficiently by quickly switching between tasks. You can find it on Pluralsight, here’s the link https://www.pluralsight.com/courses/advanced-typescript

Asynchronous Programming in JavaScript (with Rx.js Observables)

by Jafar Husain

Another great resource to learn about asynchronous programming in JavaScript is the course “Asynchronous Programming in JavaScript (with Rx.js Observables)” by Jafar Husain. This course demonstrates the use of up-to-date RxJS Observables for asynchronous programming and helps you to avoid common mistakes made by many JavaScript developers. It covers reactive programming concepts and the use of RxJS Observables in depth, specifically in handling events and HTTP requests. This course is particularly useful for understanding and adopting a reactive programming mindset and the latest version of RxJS. You can find it on Pluralsight, here’s the link https://www.pluralsight.com/courses/asynchronous-javascript-rxjs

The fast track to RxJS with Angular

Learn RxJS and Angular in action by watching talks from the leaders and core team of Angular at ng-conf conference. Recommended speakers include Ben Lesh from the core team of RxJS, Sander Elias, Ward Bell and Tracy Lee | ladyleet.

Also check out the talk “Reactive Programming with RxJS A Beginner’s Perspective” by Tracy Lee and Ben Lesh at ng-conf.

ng-conf: Reactive Programming with RxJS A Beginner’s Perspective by Tracy Lee and Ben Lesh

ng-conf: RXJS Observables in Angular by Ward Bell & Sander Elias

ng-conf: RXJS Observables in Angular by Ward Bell & Sander Elias

Angular

Once I had a solid understanding of the prerequisites, I began my journey with Angular by taking an overview of the basics. As I progressed through the learning curve, I realized that certain topics were crucial to understanding the framework fully: Angular Modules, Components, Services, and Reactive Forms. After learning and practicing these topics, I look back and realize that I had initially underestimated the steep learning curve of Angular. It’s not as easy as I thought it would be.

Angular: Getting Started

by Deborah Kurata

Start by getting a high-level understanding of Angular by taking a quick overview of its key parts. Instead of diving deep into the details right away, focus on understanding the basics first. Once you have a good grasp of the framework, you can then start exploring the more advanced features and fine-tuning your understanding of the details. This approach will help you gain fluency in Angular more quickly and efficiently.

Alternative references:
To gain a comprehensive understanding of Angular, it’s important to start with a broad overview before diving into the details. Instead of getting too hands-on in the beginning, focus on understanding the basics first. Once you have a good grasp of the fundamentals, you can then dive deeper into specific topics. Here are some alternative resources that many of my colleagues recommend for a more hands-on approach to learning Angular. Keep in mind that these resources are quite comprehensive and cover every aspect of Angular, so they can also serve as ongoing reference materials.

Angular component

When working with Angular Components, it’s important to understand how to design them and how they interact and communicate with each other. The more you know about these techniques, the more fluent you will become when working with Angular. If you are unfamiliar with concepts like Feature and Presentation Component Design patterns, Smart/Dumb Components, Stateful/Stateless Components, or Container Components, it is highly recommended to check out some resources such as:

It’s also worth noting that there are many other resources out there, such as Stackoverflow, Github issues, technical posts, and talks that can help you learn about these concepts. Remember to keep learning and applying new concepts to improve your fluency with Angular.

Angular Module

Organizing your Angular solution can be tricky. Many teams, including mine, struggle with how to structure their solutions and make them easily understandable. These resources have helped me and my team understand Angular’s modular architecture and follow best practices when applying them to our projects.

  • Pluralsight’s Angular Best Practices by Jim Cooper (Chapter: Angular Module Organization)
  • John Papa’s “Introducing NgModule and the Root Module” and “Routing Module” and “Feature Modules”
  • Deborah Kurata’s “ng-conf: Module vs Module”

To further solidify your understanding, I recommend referring to the Angular style guide’s sections on application structure, file structure conventions and naming:

  • Style Guide: Application structure and NgModules
  • Style Guide: File structure conventions
  • Style Guide: Naming

Angular Routing

by Deborah Kurata

Suddenly after having different modules in place and has some different routing, I realized needs to dive into understand routing ability of Angular is important to support more real-world routing scenarios.

Additional reference: N Things You Didn’t Know About the Router by Deborah Kurata

Angular Services

by Brice Wilson

When learning Angular, services proved to be a crucial aspect of architecture. It took some time for my team and I to fully understand the several types of services that can be used for component communication, HTTP communication, or application-based tasks. Additionally, understanding the role of dependency injection in Angular’s architecture and how it works with services and their lifecycle was vital.

Additional learning:

Angular Reactive Forms

Working with forms is a crucial part of any web application, and Angular makes it easy and efficient. Compared to my previous experience with ASP.NET MVC, Angular forms save a lot of development time and simplify the process of building complex and validating forms. To fully understand Angular forms, I recommend the following resources:

  • Angular Forms by Kara Erickson (Angular Core Team): Learn from the experts on how to handle forms in Angular.
  • Angular Forms by Deborah Kurata: This course provides a comprehensive overview of forms in Angular, including best practices and examples.
  • Angular Style Guide: Forms: Learn about the best practices and conventions for working with forms in Angular.

Last thoughts

In conclusion, while the curated list of resources in this post is a great starting point, there are countless other resources such as Stackoverflow, Github issues, technical posts, and talks that I have learned from and referenced throughout my journey with Angular. As with any technology, it is important to constantly learn and apply new concepts to stay up to date and improve fluency.

Personally, I have grown to love Angular and am proud of my ability to self-learn. I believe that the steep learning curve has passed, and I am now enjoying the benefits of fluency. However, everyone’s learning journey is different and I am curious to hear about your experiences with Angular. Please feel free to share your ideas, stories, and feedback.

“A mountaineer on top of a round rocky peak” by Kalen Emsley on Unsplash

--

--

Vu Pham

I’m a software developer. #Family. # Problem-Solving. #Leadership. #Coffee. #Book. #Learning. #Programming.