ESG View Platform
The ESG View Platform is a web platform that allows the user to generate ESG content for social platforms and EU regulations. The platform is built with React and uses a REST API built with Nest.js. The platform is designed to be used by the marketing team of a company to generate content for their social platforms and to be compliant with EU regulations.
The challenge
This project was created to become a SaaS product. During the development of the platform, the client decided to change the scope of the project to a utility platform used mainly by the ESG View team. As the scope changed, also the requirements and the features of the platform changed. The project was refactored and changed a lot in a short period, and the team had to adapt to the new requirements and features. Here I found the challenge of working in a fast-paced environment and adapting to the new requirements and features.
The pitfall of the abstraction
Of course, the first thing that you learn as an engineer is to abstract, to be dry, to be efficient. But no one talks about the hidden cost of abstraction. The cost of abstraction is the cost of the future. The cost of the future is the cost of the unknown. The cost of the unknown is the cost of the change. The cost of the change is the cost of the present. The cost of the present is the cost of the past. The cost of the past is the cost of the abstraction. So, the only thing worth optimizing is change. When an abstraction is designed, assumptions are made. When assumptions are made, the future is predicted.
An approach to the problem
If you want you can use abstractions to move fast. But you have to keep in mind that all that you are doing is consolidating the assumptions that the abstraction is based on. You have to be ready to pay that cost in the future and be vocal about it. Clear communication with the product owner and the rest of the management is crucial to avoid breaking expectations and to keep the project on track. Another approach is to limit the use of abstractions only for networking layers and database interactions. Avoid abstracting the business logic and the domain logic. This will make the codebase more maintainable and easier to change in the future. Unfortunately, there is no silver bullet for this problem. The only thing that you can do is to be aware of the cost of the abstraction and be ready to pay it in the future.
Bring me home