For most of my career I've worked at marketing agencies or SaaS startups so moving into the world of consulting was a big shift for me. I'm a competent developer with 10+ years of JavaScript experience and no stranger to scary legacy code bases (some might say least a 6.5x engineer) but there were some key skill areas I had to grow in to better serve clients.
I've created a list of "13 Things an Angular Consultant Needs to Know to Be Successful" categorized under three broader skill areas - Building a Brand, Understanding the Technology, and Dealing with Other People's Code.
Building a Brand Clients Feel Safe With
Technology can be an ambiguous and scary thing to those who don't understand it, so it's key to build trust with potential clients so they understand you're not taking advantage of them with estimates, quotes, and best practice recommendations. There are some industry programs and strategies that can help you prove your credentials as a great Angular consultant.
1. Join the Google Developer Expert program.
The Google Developer Expert program is way to recognize expert technologists in different areas of Google's technologies. Candidates must be nominated to apply for the program, and face a series of interviews where they are asked to share their knowledge of the technology and the work they do in the community to share that knowledge. Getting Google Developer Expert status as an Angular Expert or Web Technologies expert signifies that members of the Google community deem you an expert in the field capable of sharing knowledge and helping others. You can see a list of all GDEs across the world here: https://developers.google.com/community/experts/directory/, or filter by "Angular" in a certain area to see which Angular GDEs are near you.
2. Join the Microsoft MVP Program
The Microsoft MVP program is a way to celebrate experts in Microsoft technologies and their contributions to the developer community. MVP candidates must be nominated and prove their expertise by speaking, blogging, contributing to code projects, or providing valuable feedback for Microsoft technologies. For Angular Consultants in particular the award category "Developer Technologies" includes JavaScript, TypeScript, Accessibility, and Node.js.
3. Speak at Conferences
Speaking at conference not only demonstrates your knowledge on a topic, but that the knowledge has been deemed relevant and important for the developer community by conference review committees. The "hallway track" networking at conferences provides a great way to hear about the problems other developers face, and use that problem awareness take a more holistic approach to crafting solutions for clients. Conference speaking is also a way to get into the GDE and MVP programs.
4. Write Blog Articles
Most technologies have some form of documentation and limited getting started tutorials, but teams tend to need help in the more complex awkward situations. Writing up blog posts with code snippets & sample projects demonstrating how to handle a variety of code problems or showing a deep understanding of a poorly documented API (like Angular reactive forms, no shade) can help clients see you have the knowledge and skills to help their project be a success. Additionally, writing blogs forces you to think deeply about how you explain programming concepts which will help you excel at coaching and mentoring other developers.
Understanding the Technology Ecosystem
Obviously having the technical expertise to go onsite as a consultant is a big piece of the skillset needed. In my case having Angular AND AngularJS experience as an Angular Consultant is very important. Having a deep and narrow understanding of any type of technology a client is using is beneficial, but not at the expense of having a robust understanding of the general tech ecosystem. Having a wider knowledge base can help spot things the client may be blind to and help them make sure they're choosing the best tools and processes to fit their needs.
5. Create Shared Vocabulary around Single Page Application Concepts
Most seasoned JavaScript developers have worked with a wide variety of frameworks and libraries all trying to help us build better single page applications, but development teams you work with may not have the same level of experience. Being able to break down Single Page Application concepts, like loading content on the hash change and basic DOM manipulation will be helpful to build a shared vocabulary with a less front-end experienced teams.
6. Be Familiar with Different Development Methodologies
Development teams follow a wide variety of methodologies, and the more aware you are of each, the more quickly you'll be able to ease into a teams workflow and help them be more productive. Fellow Bitovian Josh Hoff does a great breakdown of different git workflows in this video:
7. Be an Accessibility Pro
All websites should be WCAG Level AAA compliant, but if your client is a nonprofit, educational, or government entity their websites and applications must be Section 508 compliant or they risk facing heavy fines or having funding revoked. Building Angular applications that are accessible to all of a client's users should always be in scope.
8. Don't Discount AngularJS Knowledge
A large amount of projects are still using AngularJS, even though Angular was released in 2016, so it's important to have an understanding of AngularJS code, how the scaffolding works, and mostly importantly, AngularJS code smells. I often refer clients to John Papa's AngularJS styleguide as an example of how AngularJS apps should be written. If the team is working on migrating an app from AngularJS to Angular, having a good understanding of the "AngularJS way" can help you draw parallels to writing Angular code. For instance, moving from dealing with Promises to RxJS Observables.
9. Know Modern Angular and the Angular CLI
Greenfield Angular projects will undoubtedly be written in Angular 2+. Being familiar with the CLI and teaching developers how to use it will eliminate most of missing import problems, as well as taking advantage of TypeScript to typecheck code and use Interfaces to document Service methods will help clients speed up their development and avoid basic errors. You might also want to jump right into reactive programming with RxJS, but this is an entirely new way for many developers to think and abstract code, and will need a vast majority of buy-in from the team to be an appropriate architectural decision.
10. Know How to Optimize Angular Application Performance
As front-end developers and Angular experts, we're no stranger to dealing with the browser. It's what defines - and limits - our capabilities. We care about what our users experience and how we present it just as much as we care about writing clean and functional code. We know that site bounce rates correlate heavily with page load time, and every little millisecond matters.
Knowing how to assess application performance, what appropriate benchmarks are, and how to optimize Angular code to be more performant is crucial. Working experience and the ability to recommend using audit tools like Lighthouse and measuring First Contentful Paint with perfume.js can make you an invaluable asset to clients. From there you'll be able to find problematic parts of applications and decide where to lazy load resources, when use AoT compilation, and how manage change detection.
Dealing With Other's Code With Empathy
Companies know their code isn't the greatest, that's why they've hired consultants. As an Angular consultant you must approach code with compassion and understand the scenarios that lead to it being written that way.
11. Be Empathetic to the Realities Behind "Bad Code"
Most people don't set out to write bad code, but instead have codebases that have suffered from harshly imposed deadlines, scope creep, poorly documented requirements, or in some cases that one rouge developer who over a weekend rewrote an entire chunk of the codebase in the new technology they just read about. It's good to ask questions to learn about what led to the code and architecture decisions, and understand the team's skill level more.
12. Acknowledge the Wide Range of Experiences of Development Teams
In several of the Angular projects I've encountered the front-end codebase was written by very talented backend engineers that lacked an understanding of JavaScript and front-end development in general but had choices to make and a deadline to hit. Angular offers a lot of architecture "constraints" which can make it easier for less experienced JavaScript developers to build out a codebase quickly without having to write as much from scratch. Angular offers built in separation of concerns, an almost forced modular approach when using the CLI, as well as routing, testing, and APIs for almost any modern web development need. That doesn't make Angular development foolproof however, which is when the Angular consultants come in!
13. Be the Angular Consultant Who Solves the Scary Problems
No matter how bad the state of a codebase it, marching in first thing and proclaiming how badly written it is isn't a great way to start a relationship with the dev team and build trust. I like to ask what parts of the codebase people are most hesitant to work in and ask about things the team hates working on because they know the code is fragile or painfully written there. I then opt to tackle those areas of the codebase first, cleaning up old Angular code as best I can, and then offer to share take-aways during Pull Request reviews. I want to be seen as an ally, not some know-it-all temporary Angular developer there to make people feel bad about the code they wrote.
This is just a small view into how Bitovi approaches Angular consulting among the various technologies we're experts in and passionate about. If you need work on an Angular project, be it auxiliary staff or Angular mentors to lead and architect your projects, we're happy to help!