With almost all companies experiencing a slowdown and trying to find ways to keep their teams and operations in place, the core activities of many businesses are currently paused. Investments and new ventures may be suspended, but that’s no reason to sit and wait for what happens next.

If there’s one thing the current situation lends itself to, it’s building a more resilient business. That’s it. Resilience will help you prepare for difficulties to come and get you ahead of your competitors. You’ll come out of this in better shape than you went in.

There’s never been a better time to focus on software maintenance and level up the processes behind it. You can finally reflect on what your company has been doing and rethink some aspects.

Also read: Why is software maintenance essential in the current crisis? >>

Here’s what you can do, whether you’re just starting out or want to level up.

Software maintenance strategies you should implement today

The software maintenance strategies I’m listing below will help you when you’re bringing new people onto your team or updating your product. They will also help you reduce software maintenance costs.

Use these separately or together for an optimised software maintenance process.

Review your documentation 

Many developers don’t update their software documentation, or understand how important it is to do so. This can cause issues when you want to upgrade your application or hire new people onto your team. Contrary to common opinion, writing comprehensive software documentation is an important part of the software maintenance process.

The current slowdown is an ideal opportunity to finally get it right. Start by auditing the state of the developer documentation at your company. Are there any parts that are missing? Are there any elements of the software that aren’t covered at all?

Remember that the main purpose of documentation is to show how code should work, with supporting examples. It should also be as useful, understandable, and concise as possible, so make sure it’s free of unnecessary jargon. Use tools such as Tettra, GitHub Pages, or MarkdownPad for ready-to-use templates and guidance on what good documentation looks like.

You can also introduce a developer playground or another form of dynamic documentation that will make the process a bit more enjoyable. These can then be turned into interactive developer tutorials to train your junior developers. 

Migrate your solutions to cloud  

Migrating at least some part of your product or processes to cloud is an obvious place to start. I’ve listed the benefits of using cloud solutions in one of the latest case studies, so I won’t go through them again. In short: they are not only cost-saving but also ideal for keeping your infrastructure light and easy to run remotely. They will also help you prepare for the next downturn.

So, how should you implement cloud solutions at your company?  

One caveat first. Although migration to cloud sounds like a big project to take on, especially during a crisis, it doesn’t have to be. You can start slowly – by moving your services one by one, starting with the less critical ones – so the process stays gradual and more cost-effective in the long term.

So how do you do it in practice?

Start by analysing which parts can be easily transferred to cloud, as these can be the foundation of your hybrid solution. The migration process itself should also be divided into stages, with the infrastructure recreated and set up using AWS or Microsoft Azure. It can then be filled with data as you move closer to the final migration phase.

Going hybrid before going entirely serverless is also a good way to test and optimise your digital product. With a lighter, serverless infrastructure, you will also be able to switch any parts of the application on and off when they’re not needed. Once again, it’s a way to help you limit your spending.

With a cloud-based product, it will also be easier for your remote teams to collaborate on maintenance or DevOps projects. And if you need to outsource some of these tasks, you can share repositories and databases with a group of outsourced specialists.

Invest in quality assurance

Testing and ensuring the quality of the code should be the most important part of your software development process. In reality, that’s not always the case. When you reorganise your processes, take the time to check the quality of your code.

We often think of quality assurance (QA) as a set of tasks for testers who arrive at the very last stage of the project to check whether it’s working properly. The truth is, it should start much earlier than that. Make sure you cover it during each stage of the process:

  • Planning – a QA specialist can prepare a requirements analysis that will shape the later stages of the development process and, arguably more important, head off risks and bugs early.
  • Design – a QA team can also collaborate with your UI/UX experts to create a test plan and review your design from a user’s viewpoint. 
  • Development – test-driven development is an effective method where you write code with unit tests built in and refactor it continuously.
  • Testing – finally, QA specialists audit the product for areas that need to be fixed and optimised.

Quality assurance is also not only ideal for making sure that your development process is (almost) perfect at every stage. It allows your team to gain a fresh perspective on what they do, especially if it’s done by the external team.

Where does software maintenance come into the picture? As you can see, the above points are about reviewing and optimising your current processes. First and foremost, consider your test coverage, think about introducing automated tests, and check whether your software has well-prepared regression tests.

Automate your software development process 

Once your team has worked on the quality of your documentation, it will be easier to automate at least some parts of the software development process. This assumes you already have a shared repository where all developers place the code they write. This is also the single source of truth for your project.

The next step is to set up a standardised process for creating software copies. This so-called ‘build process’ should be followed by every developer and tester on your team, as well as by every script and built-in mechanism.

You can then automate the ‘build process’ – that is, use a script to download the latest software version from the repository. This saves your developers time and removes several manual steps.

Similar processes can be set up for pushing changes to production. Your testing environment should resemble the user-facing one as closely as possible, so deployments can be completed by running a single script or clicking a button.

Rethink your product infrastructure 

Your product infrastructure may have grown organically without a specific roadmap or plan. Audit your current structure and apply process optimisations wherever possible. In the long term, this will not only make your product easier to maintain but also save you money.

Make sure you remove any parts of the product and tools that your team no longer needs. Divide your product into more manageable parts that can be updated and developed independently at any time.

If you’re using customised applications, one way to further limit your costs is to replace some parts of your application with generic software-as-a-service (SaaS) solutions for tasks such as user messaging or performance monitoring..

Also read: Software maintenance in practice: from infrastructure audit to second line support >>

Software maintenance outsourcing

Are you unsure how to implement these software maintenance strategies at your company? You could consider outsourcing your software maintenance processes. At Spyrosoft, we’re ready to support you at any stage, from a one-off infrastructure audit to full second line support.

Get in touch with our UK-based CEO and co-founder, Andrew Radcliffe, using the contact details below to talk through what your software needs most.