How Do I Master Angular?

An Interview with Doguhan Uluca on His New Book

What inspired you to write Angular 6 for Enterprise-Ready Web Applications?

Years of experience and best practices piling on my mind inspired me to write this book. I needed an outlet to lay out what I’ve learned and share it with the wider world. I've always felt it wasn’t enough to write a blog post or give a talk or two. I wanted to show the ease with which you can accomplish really complicated goals and be able to deliver them as one person, without necessarily needing a huge team. Through writing a book, I saw this interconnected way of describing not just how to create an application, but how to create it in a certain way, using the right kinds of tools and processes, and eventually publishing that to production.

It can be very daunting as a Developer to approach an environment where dozens of people are involved from ideation to deployment of an application. In my book, I wanted to show that with publicly available tools, most of them free, you can actually simulate this process on your own in creating your own application or idea, and be able to deliver the application so that it is enterprise-ready.

Who is the book’s target audience?

The book targets both beginners and experienced Developers who are not familiar with Angular. Readers will get a chance to learn how Angular works. They will gain an understanding of the context in which their Angular application exists in terms of how to connect to APIs, and how to post data to a server.

What questions does the book answer?

How do I create a full-stack web application?

A lot of Developers focus on the front-end or the back-end. However, something that I really wanted to emphasize in this book is that having a good understanding of how the full-stack works can make you a better front-end Developer or back-end Developer. Specialization as a Developer is a very valuable thing; we can’t be great at too many things at once because it requires too much focus. However, having an understanding of how the other side of the equation works is really valuable. This understanding will make you more proficient in your portion of the work, whether it be front-end or back-end development.

Where do I start? / How do I start?

I talk about a “value first” approach to delivering your application. At Excella, this is something we do quite frequently at our client sites. In the book, I highlight a similar approach which I call “Router-first Architecture” which enforces high-level thinking and introduces methodologies to ensure consensus about which features should be built before coding starts. “Router-first Architecture” emphasizes being cognizant that the code you create is written in a way that allows for your team to grow. Even if you’re a team of one person, while you code, you should always keep in mind that your team could grow. It is preferential that your code wouldn’t have to be re-architected to accommodate this change. “Router-first Architecture” also emphasizes avoiding over-engineering by keeping your engineering overhead low. Part of how the book explains these concepts is by focusing on Angular fundamentals, RxJS framework, Command line (CLI) tools, unit testing, GitHub and Docker.

I gave a five minute talk at NG-Conf called "Do More with Less” on one of the most prevalent issues I see, which is that Developers get carried away with the new “flashy” framework of the week, without understanding or mastering the tools they already have. Jumping from framework to framework carries a maintenance burden, having to keep track of twenty different things, for example, instead of having to keep track of five. Frameworks change a lot, week by week, month by month. From a Developer's perspective, this leads to burnout. This is why I recommend three tips: think, wait and fast:

Think three times before you actually write a piece of code, and really question if you should be writing it a certain way. Ask yourself: “Is what I'm about to do really necessary?” For example, a client may be asking about a feature, and the solution may not be technical at all. To uncover the intent behind your task, ask questions such as: “How often is this used, and by how many people?” Sometimes you'd be surprised that something you thought was a really technical feature will only be used once or twice a year by one or two people. In that situation, you should not be approaching the project as a coding challenge. The solution to your task could be that the client spends half an hour on the phone with someone to resolve their issue once or twice a year. This solution could avoid expensive work, so that's where the thinking portion comes into play.

Wait means be patient, don't jump on the newest framework just because it the talked-about latest release, as discussed above.

Fast means reduce the gluttony of constantly bringing new technologies into your life and work. If you can wait for things to mature and slow down the pace of your own learning, you will actually improve your technical skills.

What was your experience with the publishing process?

It turned out to be a very ambitious outline which included full-stack development, and a portion about creating a Java server that would power this Angular application. Once I started writing, within the second chapter which is the meat of the content, I realized the way I was writing was tripling and quadrupling in size compared to my original estimate. It looked like the book would be about 1000 pages rather than the initial estimate of 300 pages. It was a process to go back to the publisher and renegotiate to take out certain content and still maintain a good story.

The first section of the book gets beginners up to speed. Once you are familiar with the technology, the second section presents more advanced patterns and best practices. The third portion is about highly available cloud delivery analytics, the cost of hosting, and the operational DevOps side of things. I had to take out content selectively while keeping the original structure in place which was pretty tough. At one point, I was simultaneously working on six chapters at once because that was how my brain was working at the time. I had to take a step back and reorganize content into new chapters. It was a lot of pressure to create the book in a timely manner because Angular updates every six months. The more you delay the finished product of the book, the more of a burden you put on yourself to potentially have to rewrite sections of the book. From start to finish it took ten months total to complete the book. It ended up being 500 pages.

What feedback have you heard about how individuals are using the book?

I have received fan mail directly via email. One was from a volunteer firefighter who is using my book to build an application for his local fire department. It was pretty awesome to hear that he used my book not just to create a web application, but that he put the application to production and shared it with his colleagues at the fire station, which will ultimately help improve lives.

Building Large-Scale Web Applications with Angular: Your one-stop guide to building scalable and production-grade Angular web apps, which is the newer book, has been the greatest form of feedback from the publisher for the first book, Angular 6 for Enterprise-Ready Web Applications. The publication of the second book was a recognition of the quality of work that went into Angular 6 for Enterprise-Ready Web Applications. The publisher felt comfortable taking a lot of content from my book and merging it with great work from other authors to put together this larger book. This in itself has been a confidence-builder for me, and a great form of positive feedback from the publisher.

Another piece of feedback I received involves one of our clients who was developing an Angular application for about a year. The company started having issues with architecture and scaling. Their team was working with Developers at different skill levels, but they were not able to make enough progress and match a high level of quality with their delivery. They tried online classes, blog posts, and standard training, none of which was able to provide substantial help.

The company was looking around for resources, found my book, and really liked the content. They actually reached out to Excella to see if we could help them out. We engaged with them for a couple of months and had about ten coaching sessions with them. They were able to rearchitect and rewrite major portions of their application. Additionally, within a thirty-day timeframe, they were able to “turn the ship around” by following the concepts in my book. The company saw immediate results in their metrics. They were able to develop faster and had a large reduction in bugs. It was a great experience to leverage the work that went into my book, in the context of Excella, and help a team of eighty people turn around the direction of their project towards a positive path so they could complete their project in a timely manner.

You can learn more about Doguhan's book on https://AngularForEnterprise.com.

Listen to Doguhan demystifying CI and Delivering Web Apps to the Cloud on the Real Talk JavaScript podcast with John Papa, Ward Bell and Dan Wahlin at https://bit.ly/2TPC0QZ.

Catch up with Doguhan at XP2019 in Montreal, Canada talking about The Agile Way to Architect Web Apps on May 24, 2019. More details at https://xp2019.sched.com/speaker/duluca.

Expand your Angular knowledge at Angular Mix 2019. Doguhan will giving two talks, Minimal MEAN: Full Stack TypeScript on June 12th and Angular: Reactive Forms on June 13th. More info at https://angularmix.com.