Levvel performed an Angular Assessment for a mid-sized financial services company that develops and manages a suite of web applications. The goal was to help increase development speed and lower costs for their new AngularJS efforts. The applications were originally developed as Ruby on Rails (RoR), but were being transitioned to a Single Page Application (SPA) architecture with Angular.
The applications were being converted by separate teams and were in various states of transition at the time of the engagement. This development effort was the organization’s first experience with AngularJS and SPA concepts. Levvel provided the technical expertise, process guidance, and team training required to make the projects a success.
AngularJS has a sharp learning curve and notoriously difficult to navigate documentation. Many developers new to the framework, and even those with significant experience, find that there are many ways to accomplish the same goals. Unlike opinionated technologies like Rails, Angular lacks a well defined set of best practices.
The client had multiple technical teams performing refactors simultaneously and they very quickly found teams making inconsistent architectural decisions. Each team was solving the same set of problems, including testing and devOps support, resulting in slow, expensive, and defect prone development. Developer movement between teams was also restricted resulting in increased maintenance and training costs.
Levvel helped the client identify the processes, code libraries and documentation necessary to maximize consistency and code re-use across existing and future Angular based applications. To do this, we reviewed code and interviewed developers across all projects to evaluate project health in three major areas:
- Code organization and Reusability
Angular code should be organized in a modular fashion that maximizes portability and maintainability. Levvel compared code across all projects against popular Angular style guides and our own best practices in the area. We documented the patterns across all the apps and recommended refactoring strategies to move towards consistency. The recommended patterns also aimed to make a possible transition to Angular 2 as smooth as possible in the future.
- Testing, Automation, and Tooling
Levvel evaluated the test coverage and test tools of each project and reported a score for each. We recommended a set of testing tools and developed a sample unit test and integration testing environment. Levvel also reviewed the Gulp build scripts and made recommendations for improvement and configurability to maximize consistency.
- Process & Collaboration
The heterogeneous code on the projects was a product of siloed team structure. To maintain consistency, Levvel recommended the client create an internal open source governance model. Levvel outlined a developer driven process for identifying shared concerns, documenting standards, and implementing tools to maintain them. This included basic roles and processes for code reviews, documentation, issue tracking, and developer training. It also included infrastructure and tooling to enforce consistency, including a starter project, an internal NPM repository to manage dependencies and versioning and Yeoman generators to reduce boilerplate inconsistencies.