We all know the saying: “If it ain't broke, don’t fix it”. This mindset is detrimental to a DevOps way of working.
I believe that the best and most effective way to incorporate continuous improvement into software maintenance is to take a Master-Apprentice approach.
We have used the Master-Apprentice model with great results: we rotate our strongest experts from one project to the next to support maintenance teams in developing their operations.
This approach has been transformative and brought forth significant advantages in implementing a DevOps culture, ways of working and tools.
We’ve had especially good experiences when we’ve paired the Master-Apprentice model with an intensive three-month transformation programme.
During the course of three months, our top experts analyse the situation together with the maintenance team, and they jointly agree upon the team’s competence development needs and what development activities should be carried out. Our experts then work together with the team and help them deploy a new operating model and tools – and map the way forward in terms of future development work.
A recent software project transformation provides a good example of how we put the Master-Apprentice model to work through our three-month transformation programme:
The system had been deployed in 2018. Due to a lack of knowledge of modern tools and platforms the system maintenance was based on outdated tools and processes, and the development and test environments were also already at the end of their lifetime.
The development approach had a lot of manual steps in terms of build, testing and deployment. The development approach was also very rigid: changes were made only once in each quarter within a separate update window – during which the system could not be used.
After our three-month transformation programme, the whole system was published in the cloud as code (infrastructure as code, build, test and deployment environments). All the manual steps of development had also been removed. Now, when a developer makes changes, they go through automated tests and quality gates to the customer's test environment for the customer’s acceptance testing.
The team's efficiency and work motivation increased hand in hand with the decrease of manual repetitive tasks and reporting. Automation freed up a great deal of time that can now be used directly to create new functionalities. The team learned new skills, and through regular retrospectives, the team's backlog now also includes continuous improvement activities.
The use of public cloud and automation also decreased the costs of development and test environments, and the release cycle of new functionalities and versions accelerated considerably.
Although the benefits of incorporating continuous improvement into software maintenance are obvious, existing practices are not always easy to change.
Critical requirements for success include:
We are convinced of the effectiveness of the Master-Apprentice model and will definitely continue to use it in developing our maintenance services and teams in the future. The Master-Apprentice model is an integral part of our way of working – and whenever we take responsibility for the maintenance of new systems, the teams get the support they need right from the start.
Follow Mikko Lampinen on LinkedIn.