Taking back control over an outsourced development project
Our client had everything in its power to take over the development of their outsourced diabetes platform. They had the talent but were missing some of the skills required to do it alone. While migrating their legacy system, we also played an essential role in ensuring the team could take the development forward independently.
Strategic dependency
Our client wanted to lower the development costs of its diabetes platform and, most importantly, reduce cycle time since they were responsible for developing all client applications. They were ready to take back the development from their current maintainers. Since our client already had ongoing development projects, they had almost everything they needed. They had a CTO, project managers, developers, and quality assurance. They only needed the required skills to design and migrate such a large web-based infrastructure.
In addition to architecting and developing their new diabetes platform, our task was to provide their team with everything they needed to maintain it independently following the one-year collaborative work.
Showing the ropes
Besides the implementation, we worked hard every day since day one to prepare the in-house team for the time we were no longer available. We applied the following tactics to leave a confident and capable team as the sole maintainer of the renewed platform.
Shadowing
We invited multiple members of the in-house team to early-stage meetings. This helped them understand our thought process regarding planning new features, their place in the system, and their impact on architecture or security.
Scheduling
After LevooLabs laid down the foundation of the new backend, we started working together using the technologies that the development team was most comfortable with. This contributed to team integration and reduced the in-house team's initial stress regarding the project.
Pull requests
Pull requests are not just for quality assurance. They are a powerful tool for learning from each other. Obviously, we grow by taking feedback from others, but it is also essential to examine other's work to learn from them. So, we made sure that everyone took part in the review process.
Regular knowledge sharing
When we work on a challenging project, we will inevitably face difficult obstacles that require research and unique solutions. When someone on the team had a similar experience, we scheduled a meeting (usually on Friday afternoons) where they could share their findings regarding their problem.
This helps distribute knowledge among team members, making them more competent in the project and making the presenter closer to an expert on the subject as they prepare.
Documentation
We made detailed and meaningful documentation regarding our custom solutions in the form of markdown files next to the source code.
Crash course
Since our client had never worked with modern front-end technologies and declarative rendering was also new to them, we decided to give them a week-long crash course about these subjects. During the course, we covered the basics and advanced subjects of Vue.js. On the final day, we had a challenge in the form of an example application they had to develop alone to put their knowledge to the test.
On-demand meetings
Anytime someone got stuck on a problem in the early stages of development, we never hesitated to jump into a one-on-one meeting to help them solve their issue. Later, we tried to encourage them to try solving their issues alone and only gave them advice or hints to build up confidence for the time when we were no longer available.
Regaining control
Together, we established a software development methodology that suits them best, which they have since applied to other in-house projects.
Since the grand release of their new platform, we have occasionally teamed up with our client to help with significant feature updates and the integration with Hungary's official Patient Health Record (EESZT PHR) system. As time goes on, their team becomes increasingly confident in their craft, and they need less and less help from our end.
Finally, as planned, our client has complete control over its intellectual property. Throughout the development process, they acquired all the necessary skills and knowledge to support their platform in the future.