Our client, a leading investment bank, operates at the forefront of global finance, handling complex financial transactions and sophisticated data analysis. Recognizing the need to modernize its development environment, the bank partnered with VirtusLab to implement a managed IntelliJ IDEA solution. This strategic enhancement transformed their developer experience, significantly boosting productivity and optimizing build performance.
The challenge
To maintain a competitive edge in the financial industry, the investment bank aimed to future-proof its software development operations. Their objective was to make the development environment more efficient, enhancing the overall developer experience across multiple areas, particularly within IDEs.
As a financial institution, our client lacked the in-house technical expertise needed to achieve such tooling optimizations independently. Their engineering teams faced a range of challenges:
- Inconsistent IDE and tool configurations: The teams struggled with misconfigured environments, causing inconsistencies and complicating workflows.
- Lengthy and error-prone project setup: Engineers were required to spend multiple days configuring their environments before they could begin coding, which increased the likelihood of setup errors and disruptions.
- Poor IDE performance and frequent freezes: The investment bank’s growing and complex codebase strained the default IntelliJ IDEA setup, resulting in long loading times and frequent stability issues.
- Lack of support for internal meta-languages: In-house meta-languages and custom compiler plugins were not integrated into the IDE, limiting developer productivity and creating workflow interruptions.
- Persistent merge conflicts, test flakiness, and code quality issues: Developers encountered frequent issues when merging changes into the main repository, which slowed down release cycles and complicated code quality verification.
These challenges affected productivity and developer satisfaction, prompting the investment bank to turn to VirtusLab, confident in our experience with similar projects.
The solution
VirtusLab stepped in as a mentor and technical partner, devising a solution tailored to the investment bank’s needs.
The managed IntelliJ IDEA tool introduced multiple enhancements to the bank’s development process, focusing on reliability, consistency, and performance. This solution had multiple components that our client was specifically looking for.
- Standardized IDE configuration: A consistent IDE setup was deployed across all developers, complete with pre-installed and pre-configured plugins. This approach eliminated inconsistencies and created a uniform development environment.
- Automated setup: VirtusLab’s tool automated the workspace setup, including IDE download, installation, configuration, source code cloning, and additional tool setup. Backup and migration mechanisms were also included to streamline transitions.
- Custom plugin development: VirtusLab developed a bespoke IntelliJ IDEA plugin to support the client’s internal meta-languages, integrating them with the custom build tools and broader build ecosystem.
- Performance optimization: The solution involved fine-tuning the IntelliJ IDEA and Scala Plugin configurations to boost IDE responsiveness and stability, ensuring that the IDE could handle the increasingly complex codebase efficiently.
- Versioned tools with code: VirtusLab implemented version control for the tool, IDE versions, and related configurations in alignment with the codebase. This ensured compatibility for future code checkouts and maintained tool consistency across all projects.
- Partial repository imports: Developers could now selectively check out and load only the necessary subsets of the monorepo, improving IDE performance by reducing the overhead of loading the entire repository.
- Cached commits: The ability to fetch and check out the latest commit with a pre-populated build cache sped up build times and reduced developer wait times.
- Streamlined code verification: VirtusLab introduced custom tools and platforms to enhance the code verification process, reducing the time required for pull request reviews, testing, validation, and merges.
- IDE support team: A dedicated support team was made available to provide direct assistance, ensuring that issues were resolved quickly and workflows remained uninterrupted.
The results
Implementation of the managed IDE tooling led to significant improvements for our client.
- Increased developer productivity: The number of merged pull requests per month doubled, reflecting substantial improvements in developer output and efficiency.
- Enhanced scalability: Despite a fourfold increase in both repository and team size—due to repository consolidation and additional teams—the developer experience continued to improve. The number of support tickets remained stable, and the average time to merge a pull request decreased from 2.1 days to 0.9 days, equaling a drop of 42.86%.
- Dramatically reduced setup time: What was once a multi-day manual setup is now 90% automated, requiring only about an hour of setup time, with just 8 minutes of manual input. Further, clean setups and subset repository setups are now significantly faster.
- Improved build performance: Clean build times without cache dropped from 90 to 50 minutes.