Context
A complex technical legacy in need of rethinking
After the departure of the original developers, a startup was left with a vast C++ codebase developed over several years—overly complex in places and rarely documented. With no knowledge transfer from the previous team, the project had come to a standstill:
-
No one really knew where to start when it came to making changes or improvements.
-
The current team was losing valuable time deciphering redundant functions and navigating an often oversized architecture.
With the need to evolve the product, it became essential to audit, document and test the software to ensure better maintainability and prepare for future developments.
Our approach
To get the project back on track, we started with a deep analysis of the existing code, identifying complex areas and clarifying the overall logic. We then reorganized the system into smaller, more focused modules—each with a clearly defined purpose and lifecycle. This modularization made it easier to reuse code in other projects and allowed components to be updated or replaced without disrupting the entire system.
In parallel, we addressed the lack of information by writing comprehensive documentation, including a technical guide for developers and an overview of the architecture and key algorithms.
To further reinforce the foundation, we introduced Conan as the dependency manager, providing a clean, consistent way to handle both external and internal libraries.
Finally, we implemented a suite of unit and integration tests, integrated into a CI pipeline to automatically verify the stability and quality of the code with every iteration. This ensured that all modifications met the expected reliability and performance standards.
Results
A sustainable and reusable codebase for future projects
The codebase is now clearer, more robust and well documented. Thanks to Conan, dependency management is streamlined, reducing version conflicts and speeding up deployments. The modular design enables the reuse of software components in other projects, while the documentation and quality control tools ensure continuity even when team members change.
In short, a well-structured and well-documented codebase not only improves performance but also builds confidence in the product’s stability and in the team’s ability to make it evolve over time.