- DE
- Services
- Our service portfolio
We bring your digital product vision to life, from crafting real-world testable prototypes to delivering comprehensive product solutions.
- Collaboration models
Explore collaboration models customized to your specific needs: Complete nearshoring teams, Local heroes from partners with the nearshoring team, or Mixed tech teams with partners.
- Way of working
Through close collaboration with your business, we create customized solutions aligned with your specific requirements, resulting in sustainable outcomes.
- Our service portfolio
- About Us
- Who we are
We are a full-service nearshoring provider for digital software products, uniquely positioned as a high-quality partner with native-speaking local experts, perfectly aligned with your business needs.
- Meet our team
ProductDock’s experienced team proficient in modern technologies and tools, boasts 15 years of successful projects, collaborating with prominent companies.
- Our locations
We are ProductDocic, a full-service nearshoring provider for digital software products, headquartered in Berlin, with engineering hubs in Lisbon, Novi Sad, Banja Luka, and Doboj.
- Why nearshoring
Elevate your business efficiently with our premium full-service software development services that blend nearshore and local expertise to support you throughout your digital product journey.
- Who we are
- Our work
- Career
- Life at ProductDock
We’re all about fostering teamwork, creativity, and empowerment within our team of over 120 incredibly talented experts in modern technologies.
- Open positions
Do you enjoy working on exciting projects and feel rewarded when those efforts are successful? If so, we’d like you to join our team.
- Candidate info guide
How we choose our crew members? We think of you as a member of our crew. We are happy to share our process with you!
- Life at ProductDock
- Newsroom
- News
Stay engaged with our most recent updates and releases, ensuring you are always up-to-date with the latest developments in the dynamic world of ProductDock.
- Events
Expand your expertise through networking with like-minded individuals and engaging in knowledge-sharing sessions at our upcoming events.
- News
- Blog
- Get in touch
BMS CS KBM: Codebase revitalization.
BMS Corporate Solutions GmbH oversees the corporate customer segment of Germany’s cooperative banks.
In collaboration with their architect, we identified and solved issues together, contributing to improving the codebase’s quality.
About.
What does the client do? What industry are they in?
BMS Corporate Solutions GmbH – a subsidiary of Atruvia AG and BMS Consulting GmbH – is responsible for the entire corporate customer segment of the cooperative banks in Germany.
Initial situation.
What was the initial state?
We joined the already established team, which consisted of two frontend and two backend developers, two business analysts, two architects, a scrum master, and a product owner. We additionally brought two frontend and two backend developers.
The tech stack consists of Angular (frontend) and Java Spring (backend).
We were responsible for the part that deals with organizing appointments/meetings of bank employees and their customers.
We implemented services from the previous team into our ownership.
Since BMS CS nurtures an Agile methodology, our team has been working within the Scrum framework for two years now.
Problem space.
What problem did we want to solve?
BMS-CS inherited a less-than-ideal codebase from another company. We partnered with their architect, identifying and solving issues together, to enhance the overall health of the codebase.
The first problem we identified concerned the speed and reliability of the existing applications and services. With response times often exceeding five seconds and numerous unsuccessful requests, their reliability was significantly compromised.
While BMS-CS and ProductDock already employed Agile methodologies, the real challenge lay in growing together as a single Scrum team. Our goal was to optimize our collaboration to deliver maximum value for our customer.
Solution.
What did we do? What technologies did we use? How long did it take?
To solve the first problem, we needed to identify tech issues. Since we are just a small part of a very large company, we could not change the tech stack, but that was all right since the tech stack was not the problem.
We solved the problem with slow response time by changing the way the backend authorizes frontend requests. It took us several sprints to make this possible, and it was an effort of the whole team.
Refactoring most of the client interface is another improvement we made, and it was a gradual process. To enhance the quality of the codebase, we adopted several clean code practices such as SOLID principles, avoiding redundant code (DRY), and eliminating unnecessary features (YAGNI).
Also, we implemented the Onion architecture in some parts of the backend system to improve the system’s testability, maintainability, and dependability.
Furthermore, we introduced unit tests as a must, which led to average test coverage of 70%. Automatic linting was applied in all our artifacts, which is the usual practice at ProductDock.
We adopted an agile mindset as a team, incorporating the Scrum process into our daily operations. For instance, this meant preparation for every refinement event, ensuring all team members understood the objectives of each feature under discussion. Our daily meetings became concise and productive, and planning events were used optimally.
Over the course of two years, our team increased in size a lot. So, to make our daily work more efficient and have more focus on specific business contexts, we eventually split into two teams.
Currently, our team consists of the following roles:
Team members from the client side include a product owner, Scrum master, QA tester, business analyst, a frontend developer, and a backend developer.
As for the ProductDock members, they include three full-stack developers, one backend developer, and one frontend developer.
Results.
What was the outcome? What did we learn?
In the end, all the things we implemented greatly increased customer satisfaction. Moreover, we were able to drastically reduce the number of reported bugs and ease up the development process, which enabled us to onboard new team members much easier in terms of initial project setup.
All the changes we introduced increased our team’s confidence and enabled us now to be responsible for making architectural decisions as well.
The outcome of our team’s improvements (enhanced quality, performance, and new functionalities) are highly significant to our stakeholders as well. With our ability to plan sprints effectively, we can now complete all the tasks outlined for a sprint (90% of the time). Moreover, we’ve become adept at responding to changes in requirements and handling incidents in production.