EnergyIQ marked its entrance to the energy sector with the flagship "Trusted Data Manager" (TDM) application. This app was specially tailored to cater to the unique data analysis requirements of the oil and gas industry. It came packed with diverse features and functionality that bolstered its reputation in the market.
As time progressed, the app expanded its feature set but, concurrently, got ensnared in the complications of technical debt. The architecture became bulky and less manageable, the UI became dated, and the effort for change rose exponentially. The need for a streamlined and efficient structure was evident.
To address the burgeoning concerns, a strategic decision was taken: transitioning to a micro-service back-end structure. This approach aimed to compartmentalize code, features, and responsibilities. Such isolation would be pivotal in ensuring that future development and maintenance became more structured and efficient.
On the front-end spectrum, we adopted the Angular app framework for its inherent flexibility and scalability, as well as familiarity for our back-end developers. By incorporating a base set of styles and shared Angular components, we established a common design language that could be reused across our applications, ensuring consistency in theme and layout. This foundation of reusable code empowered us with agility, facilitating the rapid development and deployment of new apps and services when the need arose.
We chose to retain a semblance of the initial IQinsights design—a contemporary take on Material Design, aligning it with modern design sensibilities.
The current status of our endeavors is a suite of modern Angular applications and services tailored to facilitate our users' daily tasks. This suite currently includes:
This is an ongoing effort, with several applications & services in the pipeline, either under development or in the planning stage.
With a modular product suite in place, a new challenge emerged: ensuring seamless interaction and communication between our applications. Recognizing this gap, I proposed the integration of a common navigation system and notification mechanism. This initiative aimed to create a cohesive user experience, enabling users to navigate effortlessly across our suite of apps.
The journey, albeit rewarding, was not devoid of challenges:
Upgrading Dilemma: A primary pain-point is consistently upgrading Angular and our front-end libraries across all applications. Although it's crucial for security and compatibility, updating and upgrading takes time and effort away from the main objectives of our roadmap. A potential solution may be for a "monorepo" approach, but upgrading may just be a worthwhile investment to avoid similar technical debt issues that plagued TDM in the first place.
Style Consistency: As the suite grew, maintaining standards became challenging, especially with the introduction of new designs and design patterns in upcoming apps. Our shared Angular components and base CSS files act as our defacto "design system" for our small team, but it was easy to stray from it while working to solve new problems. Additional effort was required to consolidate new patterns, and continued maintenance was necessary before our apps become inconsistent and unruly. Implementing a proper, well-documented design system would be a beneficial approach in the future.
In conclusion, the evolution of EnergyIQ's application suite from a single, cumbersome application to a modular and streamlined suite stands testament to the power of forward-thinking and adaptability. While challenges were part and parcel of this journey, the learnings derived have been invaluable, laying the foundation for future innovations.