For many organisations with their own software application, whether it be a website, an internal tool or something else entirely, managing said application can be a source of frustration, particularly in the absence of an internal software team.
For applications built by external teams, what typically happens is the supplier and the customer part ways when the project is deemed complete, and this is where problems begin to arise. The accepted wisdom is that no software application is ever "complete" since, in the long term, both software and hardware technology evolves at a constantly increasing pace, forcing the need for applications to either keep up or become stagnant. On a shorter scale, no matter the application, unforeseen issues will inevitably make themselves known and require addressing. Many suppliers will offer a limited amount of after sales support, either through a retainer or on a case by case basis but, as new projects come in, those suppliers may find their focus being pulled elsewhere, leading to frustration on both sides.
If the application has been built internally, focus, and the connotations of the word "complete", can again be the primary issues in maintaining the software. As the project draws to a close, teams begin to shrink as resources are diverted to concentrate on other business objectives, leaving, at best, a skeleton crew behind to manage things. The application is then at risk of the team either being too short staffed to cope with emergencies in a timely fashion, or becoming apathetic to the project.
One way to reduce the risk of these scenarios occurring is to outsource the management of your application to a dedicated team who'll work with you to keep your application healthy and help it grow.
Reasons to outsource
The most common reason to outsource is to ensure you have a team ready to help improve your application in a number of ways, from adding new functionality and features, to dealing with bugs and issues as they crop up.
Perhaps less well known, but just as important, is ensuring you don't fall prey to "bit rot". Ultimately, dealing with bit rot simply means dedicating maintenance time to making sure the environment your application runs in isn't negatively affecting it, whether it's the browser your users are using to interface with the application, or the software running on the machine that houses your application.
Lack of internal resources
As mentioned above, when an application is built internally and reaches a point it could be considered complete, the team that built it is then typically given another project important to their organisation's goals, leaving the application to grow stale.
Break in case of emergency
Over the lifetime of an application, it will likely encounter a handful of crises that will either severely limit its ability to function, or make it completely unavailable to its users. Whether it's a data center going down, or breaking changes made by a recent update, you need a team to be able to respond to and deal with these situations quickly.
Parted ways with a previous team
When reaching the end of an engagement with the team who've built your application, it's not a given that they'll be able to support it to the level you require. If they don't have the manpower to dedicate to your application, it's likely they'll already be committed to other projects.
On the flip side, if you've outsourced maintenance to an external team, you may find that things simply aren't working out and they're not providing the value you expect. If this is the case, it's time to find a new team.
Finding the right team
So how do you go about finding the right team? There are a number of factors to consider when researching potential suppliers:
There are a lot of businesses out there that offer support services, and it can be tempting to hand responsibility over to a cheaper option. What you need to be wary of is handing it over to a team who'll simply keep your application in a perpetual state of maintenance, and never evolves it into something better. You want a skilled team who have experience dealing with applications like yours, and who can help do more than just maintain it.
Level of service
Find out what level of service you can expect from a potential team, you need to know the number of hours each week your budget will cover, and whether the agreement covers 24/7 emergency support.
Additionally, look for teams who communicate well and often – you're handing responsibility for the wellbeing of your application to a third party, but for the sake of transparency you want to remain an active part of development.
One of the benefits of working in the software industry is the greater freedom it provides in allowing teams of developers to work remotely from anywhere with a stable internet connection, whether that's from a coffee shop, another city or even another country. Unfortunately, this isn't the case in many other industries so, when bringing in a support team, it's useful to know that physical location, or even time zones, won't be a barrier to getting good work done.
Though the team you find will be working with you in a support capacity, it's likely there'll be numerous times when you need to get hold of them at a moment's notice. More than that, you need to know that the team, over time, are delivering results. Find teams who provide an open and active channel for you to engage with them in (Slack, Skype etc) on a daily basis, and who take the time to showcase the work they've done for you every couple of weeks.
When you've zeroed in on a few likely candidates and have begun making initial enquiries, you ought to be looking for a team you can build a relationship with, who'll do more than simply the bare minimum to keep your application functional.
In our experience, getting to know an organisation and understanding their wider objectives lets us make more informed decisions around the work we do with them. For example, in a situation where an organisation wants to add a new feature, we seek to understand what the driving force behind the decision to implement that feature is, and what we can do to better achieve that goal.
Making the decision to outsource management of your application to a third party is an important one, so it's crucial to find the right team to support it. Look for a team who can meet the needs of your organisation and work with you to evolve your application.