You need a maintenance team
Speed up software development with a maintenance team
We have a web app with a million users. This means we are receiving 10-20 feature requests and bug reports every day. That adds up quickly.
Before we built up our remote maintenance team we were struggling to keep up with all the requests. There are couple of ways to deal with them. You can have bugfix weeks; you can stop new developments and be always in maintenance mode; you can ignore the requests, call your product “perfect” and tell requesters that you want to keep your product simple.
Who wants to be a maintainer?
The problem with maintenance teams is that nobody wants to be a maintenance developer. Everybody wants to work on new and exciting stuff. That was my assumption.
It turns out that’s not the case. Some people really enjoy fixing bugs and implementing enhancements. Some want to travel full time or spend their time with family. They can then launch the bug list and work on the next item.
We found such people and it worked out great for us.
Early this year, I started the maintenance team with two guys from our support team. They were very reliable and hard working so I trusted them. They have been working for us for two years. They had degrees in computer science and programming in Philippines. But, they did not have much development experience. I took the risk and hired them for the new position. It worked out great. What made them so great is that they understood our users so well.
We added 4 more maintenance developers. One of them is travelling the world. Another one is completing his education. They work 20-30 hours a week on average. Some fulltime developers asked if they could switch to maintenance team while they do some travelling. I said “Sure!”.
Maintenance Team made us very productive. The development team is now working on major projects while issues get taken care in the background.
How to Build Your Maintenance Team
If you have friends who can work part time while travelling or completing their degree I’d start with that.
I used oDesk with great results. Both our support team and maintenence team runs on oDesk.
Finding good people on oDesk is hard. I follow a 100/10/1 rule. I run an ad and get around 100-200 applicants. Then I choose 10 best applicants and send them challenge questions. For maintenance team I ask challenge questions in JavaScript, CSS, PHP, MySQL and in writing well. I hire the one with best answers.
Since I plan to work permanently with the same person for a long time I only consider individuals; agencies are not considered.
New hires only have pull access to the repos and all of their code changes are reviewed carefully.
How to Keep Your Maintenance Team Productive
First of all, you must have a great bug tracking system. You should be able to easily add bug and enhancement requests. The full communication with the customer should be visible on the bug ticket.
Most bugs are added to a pool. A maintenance developer can pick an item from the pool and work on it. Sometimes we assign a bug to a particular maintainer. Especially if that person worked on a similar task in the past.
We also have a mailing list and google drive folder. We share our experiences with each other. Maintenance developers send daily updates about what they have worked on recently.
Make it easy to create and maintain remote development environments. We have a remote development server that’s an exact replica of our web app with all the dependencies and then we use Sublime Text 2 remote ftp plugin to do our development. We can create a new development environment for a new maintenance developer with a push of a button.
Continuous Improvement
I worked in many development teams.
Some teams always work on new projects. This means, unless there is a major problem, most things on the parts of the system stay unchanged, unimprovement for years. Then things add up and you have to do a major overhaul and build a new version. But, by the time you work on the new version, most previous experiences are forgotten and most people who worked on the system already left.
Some teams on the other hand are always in the maintenance mode. There is feeling of being stuck. Morale is low. It feels like you are on a treadmill. Time passes by without moving your product forward.
When you have a maintenance team you can continuously improve your product while working on new exciting ideas.
You need a maintenance team. Go get one!