Teaching myself Angular, upskilling from AngularJS

This is my story about learning Angular on my own in the hope to find a better job.

Ashnita Bali
5 min readMar 19, 2019
Photo by Hal Gatewood on Unsplash

A bit of background

I worked with AngularJS 1.2.28 for two years at my last company. I didn’t know AngularJS, except for having done this cool tutorial, Shaping up with Angular.JS by Greg Pollack at Code School before starting this role. I had come from vanilla JS and a little bit of jQuery. During the 2 weeks of induction at my company, I spent my evenings learning AngularJS using the Angular documentation and this nifty resource. I am including these links here only for nostalgic reasons! Learning AngularJS was easy and fun, I was able to be productive straight away on my first project and built up my AngularJS skills over the 2 years.

I left my job. My hope was to find a company with a culture of inclusion and equal opportunities which used Angular.

Perhaps I was burned out, perhaps not knowing any of the technologies in the Angular stack made me lack confidence in going through the interview process or perhaps I was scared of ending up in a not very nice place. I took some time out to upskill before looking for another job.

Little did I know that learning Angular would not be as easy for me as learning AngularJS was! With absolutely everything new; all of Angular, ES6, TypeScript, RxJS, NgRx, Angular CLI, Angular Material, the learning curve was pretty steep and it took me much, much, much longer than I had hoped to even learn the basics.

In hindsight, it was my big mistake to leave employment without having secured the next job. It is easier and faster to learn when working on actual real-life projects. Trying to get a job when you are currently unemployed seems to be pretty hard.

Struggling with the culture in IT jobs

It is perhaps not right of me to include this in the article but my experience working as a frontend web developer at three different companies seems to be filled with many of this sort of scenarios. It is not nice when you’re asked to pair at work with someone who wouldn’t discuss with you, would say things like you are to only work on the CSS for this task and not touch the JavaScript as I will do the JavaScript, or gets you to work on a task and without even looking at your code rewrites it, or gets help from you and then pretends that they’re trying to explain to you something which you don’t understand, or to be the only one working on a task not invited to the meeting to discuss the requirements, the meeting seemed to be more a “boys club”. Being included empowers but being excluded hurts! I’m sure nobody likes writing these things and nobody likes reading them but I guess I had to say it once.

Learning the latest Angular stack

There is probably no crying in learning IT ;-). I cried a few times, especially when it comes to TypeScript, testing and NgRx, although I love the Redux pattern and find it intuitive in vanilla JS. It is okay though, I will get there.

Here are some of the challenges I had when learning.

Getting grips with jargon.

Torn about what to focus on. I really don’t want to be behind on too many of the new things so while trying to become fluent at the basics, I picked topics from my pile of must-learn-these-exciting-new-technologies.

Oftentimes, I wondered though if that is not just wasting time as I should really focus on getting more fluent with the core Angular features. If I have strong basic skills I could get a job again.

I now believe that it works more like a spiral, trying out new things, helps identify gaps in my knowledge of the basic Angular features which in turn helps to understand more advanced topics. For example, trying to learn Angular Elements led to discovering Web Components and therefore HTML templates, custom elements, and shadow DOM. When I first tried to learn about view encapsulation, I didn’t quite understand it. I didn’t look up shadow DOM as it seemed a bit out of my scope. Studying Web Components and Angular Elements helped me understand view encapsulation and get a much better understanding of components in Angular. In fact, I also understood content projection better after studying Shadow DOM!

Building fluency. I rushed through the topics hoping to speed up the learning. While the material was fresh in my mind I felt happy that I’d learned so much. This seems to be just an illusion of learning. After a while, I couldn’t recall or apply much of the material I had previously read, understood and experimented with.

What does it take then, to learn in a way that it sticks? I found that reading documentation and articles, following tutorials and taking courses while very important is not quite enough.

I realized and accepted that teaching myself a whole lot of new and complex things takes time and practice and I cannot really rush it.

I came across these useful and inspiring resources about learning and self-learning, How to Learn Without a Teacher by Samantha Brennan and Learning How to Learn on Coursera. Both mention using the Pomodoro technique for focused learning.

This is my tactic now for learning: build my own applications using the techniques learned. Recall what I learned, without referring to the resources. This identifies the gaps in understanding. Refer back to the resources to look up what I’m missing. Keep practicing the things I learned as I learn more things to make sure I have enough practice to solidify the learning.

Too embarrassed to ask questions. It is frustrating not being where I would like to be. While my colleagues progress to more senior roles, I was trying to make it back into a frontend development role. I guess I was embarrassed about exposing my situation and letting people see that I was a beginner and still working on picking up the basics.

Confusion about what programming paradigm to use. ES6 class and Typescript public, private and protected modifiers give the idea of OO programming. Angular uses RxJS, this points to reactive programming. JavaScript is a functional programming language. How do I combine the paradigms in a way that makes sense and stay consistent?

Conclusion

This is more advice to self, but I hope it could be useful to any learners reading.

It is hard to keep up with the latest technologies, especially when you have a job which is stressful and keeps you occupied for extremely long hours in order to meet deadlines. If/when you have a job, it is important to work reasonable hours so you don’t burn out and so you have time for your personal development and learning.

Learning on your own takes focus and practice. Being embarrassed about your knowledge gap is a barrier to learning. It is a good idea to join a local learning group or to form one if there isn’t a local group and if possible find a few mentors who could give guidance.

--

--