We have two kinds of work, “new” development (including major changes to existing sites) and “maintenance” for projects which have been delivered but require ongoing work, such as keeping software up-to-date or making small changes from time to time.
Managing the balance between new projects and maintenance work so that new work gets delivered on time while maintenance gets carried out in a professional and organised fashion can be difficult once you have a significant number of maintenance clients. Maintenance work can quickly come to dominate your week.
To make things run smoother, from next week we will be trying out a new idea – “Maintenance Mondays”. This breaks our work week down like this:
Maintenance Monday – Non-urgent or regular tasks involving system administration, small updates to sites. Nothing that should take more than a day, and most will only take a few hours.
Tuesday to Thursday – Main project time, for uninterrupted development of new client sites, or significant changes to an existing site.
Friday – This is normally a short day here at Storm and is kept free for internal tool development, training and learning, but it also serves as an “overflow” for when things get hectic or work is delayed for some reason.
Of course if there is an urgent maintenance task, such as rescuing a failed system, then this will be dealt with as soon as possible. If we find that we don’t have enough to do to fill a Monday then we can just move straight on to project work.
Development work requires a high degree of focus and concentration to do well. Constantly switching between projects to deal with small issues breaks up the day, reduces the productivity of the team, and increases stress. Maintenance Mondays will hopefully reduce these distractions by giving us three largely uninterrupted days to concentrate, resulting in a more productive and happier team throughout the week.
This approach will make maintenance work more predictable. Instead of trying to fit it in between other work we can give a definite day when it will be carried out, providing greater certainty to our clients.
Maintenance work is often a one person job, so having these tasks spread around the week means we are constantly breaking up the team. Scheduling all these for the same day will make it easier to work together on new projects in the mid-week.
Projects can easily be delayed by maintenance work from other clients, but this approach provides a clear three day week for new project work. We feel that three days is an honest reflection of the amount of time in a week that we can spend on new project work without neglecting maintenance clients and all the other things you have to do to keep a company running. By clearly acknowledging and dealing with the effect of maintenance work on our schedules we believe we can more accurately estimate work in the future. Estimating software development projects is notoriously difficult, so anything we can do to improve it is worth a try.
This is all a bit experimental so we’ll be keeping an eye on how well it works over the next few months, and tweaking it based on experience.
So how do you balance out the demands of your existing and new clients? We split our time, other companies split their people into “greenfield” and “maintenance” teams. What have you done that works, and what have you tried that didn’t?