William Dunn is a Senior Developer at Intellishift. He has over a decade of software development experience across a variety of industries.
Choosing a development framework for a new application can be a tough decision for many developers when there are so many factors at play.
With any project, the first step is to define the necessary application requirements to best support the company and its clients’ goals. At IntelliShift our mission is to provide a unified operations intelligence platform that can be configured to each client’s business needs and KPIs. We offer a suite of application-based solutions within our platform to meet a range of needs for businesses with connected field operations.
We chose Angular to build our applications to achieve numerous goals that allow us to meet our mission.
Page load speed is the first thing a user will notice if its slow and will be a huge pain point and barrier to adoption. As such, we wanted to give our users a native application experience by decreasing the number of page requests made to the server. In modern web development, this means we needed a single page application (SPA), which is a type of website that loads a single page. While it may seem like you are moving to different pages on the website, in actuality the display for the one page you have already loaded changes instead of going to the server and requesting a different page each time. A user’s browser can continually re–render that one page, making an otherwise bulky process seamless and speedy for the end user.
In the past, devices were not necessarily fast enough to load an SPA without the help of the servers themselves. However, newer devices are so powerful we can now easily move some of the work to the client’s device (including storing a page locally for later use), making for a much more fluid experience. This makes transitions from page to page nearly instantaneous. Angular is an SPA framework and fulfilled this first requirement.
It is important that we are able focus on the product, and not the framework, in order to deliver a product and subsequent updates to clients faster. We did not want to spend significant time building our framework, cobbling together libraries, designing the build process, creating a development environment, or implementing a test platform. By reducing time spent creating and testing a framework, we skipped straight to developing product.
Because Angular has a Command Line Interface (CLI), developers can access a variety of built-in tools within the framework. Everything from compilation, code coverage, and testing tools are readily available. Most alternatives to Angular do not have a CLI, nor the features provided by the Angular CLI, as a core component of the framework. Angular allows us to build new products and features faster from day one which, in turn, helps our clients improve their operations and bottom line faster.
Another requirement was having the ability to only send the part of the platform to a client. For example, if a client only subscribes to IntelliShift Inspect, then they should only receive the portion of the platform necessary to use that product. This is called lazy loading and it is built right into Angular.
Angular chops up our application into bite–size pieces that are only requested from the server when needed. In addition, it has options for us to predictively preload parts of the application in the background. Most alternatives to Angular do not have a built-in feature that meets this requirement, but it can often be tacked on.
Angular’s CLI also offers the capability to build a mono-repo, allowing us to have many projects in a single repository. Essentially, this gives the development team the flexibility to split up individual application features if we choose. Achieving this with another framework would require many manual steps, adding more development time, and extending product launches.
Because Angular was designed with large–scale applications in mind, its scalability is near infinite. This means that regardless of how large the clients we serve are, or how many features we have, our application will remain responsive to user interaction. Its lazy loading and preloading system means we can have an SPA of any size and the end user can grab pieces gradually, shortening the time between when a user starts the app to the time it appears on the screen.
Even the development system is designed with scalability in mind. While running in development mode we can easily make changes to the application without needing to recompile the whole application, instead only the section you edited is recompiled. This makes development much quicker and, in turn, means we can add features faster. Benefits like this are hard to mimic in other frameworks since it requires advanced knowledge of build tools and a lot of time to piece them together.
These tools are standard with Angular.
When we first started building the IntelliShift platform, we were a small team but knew we would be ramping up our development team and product offering quickly to support much larger clients. With the CLI, we can onboard new developers very quickly as there is just a single toolset to learn and the development environment can be spun up with a single command.
Most of our new developers were making commits on their first day because development environment ramp-up took minutes, not hours.
Lastly, we need to ensure the framework is secure, sustainable and would continue to be supported. Because Angular is widely used, we are confident that it will be continuously updated and improved, receiving prompt security updates and performance optimizations.
A long lifecycle means we can add features rather than perform significant rewrites to decrease technical debt. Angular was developed by Google and Microsoft and its codebase is written in TypeScript which is also developed by Microsoft.
Angular is much newer than the other major frameworks and while many of them do support TypeScript with some modification, Angular was built around TypeScript. Angular has built–in support for newer development concepts like Web Components, making it near future–proof.
When we considered our requirements, Angular became the clear winner. It has proven itself to be the robust framework we sought when we were able to release our new product, Inspect, in months rather than years. By providing a streamlined path to scalable product development, Angular allows us to continue to bring greater ROI to our clients on a shorter timeframe.