The options are:
- Automate
- Delegate
- Fix root cause
- Get more people
- Organise
- Skip and take the risk
- Or a combination of the above.
But the first step is to collect some data and then do a quick analysis:
Categorise present and historic issues by root cause, source, frequency and effort required.
When use Pareto Charts to visualise the areas that require most effort or come from the a single source. Paying attention to these areas will give the biggest benefits and will free people to deal with other maintenance problems.
Fix Root Cause
Always aim at fixing the root cause of an issue. The solution need not to be expensive, “the art of engineering is to do with one dollar that any damn fool can do with two”. Use analytical techniques such as Five Whys to get to the bottom of a problem.
Reading the question one of the root causes seems to be related to the current software development process and the pressure that is exerted to add functionality to existing system quickly, which leads to low quality code delivered through a stream of projects increasing the burden of maintenance. This would normally be caused due to an incorrect project planning and budgeting when project budget does not include any maintenance costs and the plan ends abruptly once the change is delivered to the users. The correct way would be to include and track maintenance costs over the lifetime of the deliverable which then would be added to the organisational budget. The figure will give more incentive to deliver robust code in the first place and help making a better choice between various project options.
Try to see if there are any other "hidden incentives" for maintenance growth.
Delegate
IT Department or a project team can often be seen as a free resource within the organisation to train users, run data conversions, reports, do routine system configuration, data corrections and other tasks that could really be done by other departments.
These tasks can be either delegated back to other business units (through providing them with the tools to do the job) or outsourced to external vendors (in case of non-business critical or specific system you might be able to source a better quality service or hosted application from outside the company).
Either simplify the tasks of educate users to carry out more complex tasks. Organise and support user community so they can resolve most common problems without having to rely on your time.
Automate
Automate things that can be automated, including day-to-day monitoring. There things cannot be fully automated at least automate them partially, provide a way of maintaining a library of scripts to do parts of a process. Help team members to learn scripting tools and languages.
Organise
Group similar issues together and do them at once. The resolution time might go up, but it takes less work to reset 5 passwords at once within the same system that do each one individually.
Provide a way for users to report and track the issues that will give you an ability to deal the with the maintenance in a more organised way, that is to say instead of having someone on the phone waiting for an issue to be resolved straight away have an issue tracking system with priorities, so the things can be dealt with in a more orderly way and give you more room for manoeuvre as to how and when you deal with specific category of issues.
Skip the Maintenance and Take the Risk
Assess the risk and impact of not doing some of the maintenance. If sufficiently low then make everyone aware the work will not get done and move on.