noun_Email_707352 noun_917542_cc noun_Globe_1168332 Map point Play Untitled Retweet

A journey toward an agile and DevOps way of working, culture and tools in software maintenance

We all know the saying: “If it ain't broke, don’t fix it”. This mindset is detrimental to a DevOps way of working.

Mikko Lampinen / April 27, 2021

Without continuous improvement, software decays. But continuous improvement is easier said than done if your software maintenance team lacks certain insights and capabilities. When you don’t understand what you don’t know, how can anyone assume that you would be able to fix it?

How do you achieve world-class software maintenance?

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.

 

Fast results with automation and public cloud

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.

 

How to incorporate continuous improvement practice into software maintenance?

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:

  1. You must allocate enough time for developing the way of working. Even if experts help update the team's operating methods, the system owner must also reserve a certain part of the team's working time for developing the way of working.

  2. The maintenance team must be willing and able to learn new things. In general, this is an inbuilt quality in people working in our constantly changing industry.

  3. You need competent support for the team. We provide the maintenance team with the best possible support from people who know the agile and DevOps models and technical tools throughout. The best way to transfer expertise to the maintenance team is to use the Master-Apprentice model.


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.

Want to stay up-to-date?

Follow Mikko Lampinen on LinkedIn.

 

Mikko Lampinen
Head of Custom Software Development

Author

Mikko Lampinen

Head of Custom Software Development

Related services

DevOps and agile services

Share on Facebook Tweet Share on LinkedIn