By now, we hope to have convinced you of the importance of project maintenance. It might not be the easiest thing to budget or plan for, but if you want your program to be a success in the long term, it is a reality you need to face. At the 2018 MERL Tech conference in Washington, DC, Stacey Berlow from Project Balance outlined the four most severe maintenance issues that mobile data collection tools face:
- Poor-quality application documentation
- Excessive demand for changes
- Competing demands for maintenance personnel
- High turnover & poor training
Let’s take a deeper look at each of these issues to understand the implications for your mobile data collection program.
Issue #1: Poor-quality application documentation
Better than most, we understand the need to sprint to get your application done. But, this is exactly why documentation is often the first thing to fall by the wayside when time gets tight: What’s the point of documentation if the app doesn’t even work?
Mobile data collection applications, like most mobile apps, are often designed and built by more than one person. So when it comes time to update, patch, or otherwise modify your application, there is rarely a single person you can go to who has a complete understanding of the app. And if one of your original developers no longer works on the program? Good luck.
As programs evolve, this problem becomes even harder to solve, especially if you haven’t kept reliable documentation on your application. We know that developers hate documentation, but we are recommending more and more that software managers and even RFPs require reliable documentation be collection by dedicating proper funding and resources.
Your application is made up of a set of desired outcomes (e.g. register patients, diagnose their illnesses, refer them to clinics, etc.) and the assumptions you make and questions you ask to get to those outcomes. If your team doesn’t have clear documentation of those workflows and outcomes, those asked to perform maintenance have to explore the app themselves to figure them out.
So when you need to update an assumption (e.g. patients are referred to a clinic after three visits instead of two) or add a workflow (e.g. you have to administer a new survey before a referral), this documentation is vital. Whether it’s a data dictionary that maps out the entire data model of the application or a recorded set of user flows and the accompanying case properties, you should be able to present this documentation to new team members (including those in charge of maintenance) as a thorough and clear representation of your application.
And then, at the very end of the project and after each subsequent modification, verify that your team has updated the documentation to ensure that institutional knowledge carries on.
Poor documentation can make it harder to perform effective and timely maintenance on your application.
Issue #2: Competing demands of maintenance personnel
Few maintenance requests that come through are emergencies. Only one of the four types of application maintenance can really qualify as urgent: corrective. This is when something breaks or was missed in the QA process, and you need a developer on hand to fix it. Most of the time, even these issues are not that urgent–they are edge cases or single, non-vital features. However, when a fundamental aspect of your application breaks, you need to solve it quickly to ensure app usage and program performance stays high. The problem is that these emergencies bring all your core developer responsibilities screeching to a halt.
Imagine if each time a maintenance request came in, whether it was corrective, adaptive, preventive, or perfective, you had to halt your developers’ regular activities. At that point, they would have almost no “regular activities” at all. This is why it is so important to schedule maintenance time to optimize your developers’ workloads.
According to studies from Project Balance, developers spend about half their time on maintenance updates. If that time is sprinkled throughout their other responsibilities, it will consume all of their working hours. However, if they “time box” these efforts (i.e. restricting maintenance work to specific times), they can become even more effective. Even better is if these maintenance times are made known to the entire project team so they know when their requests will be covered.
The more structure you give the process of tackling maintenance issues, with clearer communication between teams and dedicated working time, the more effective your entire program can be.
Provide structure to the process on application maintenance requests to give your development team a chance to do their work.
Issue #3: Excessive demand for changes
It has become more and more popular to integrate office seating, especially at organizations with a focus on technology. A member of the development team might sit next to someone from the communications team at the same table as a project manager. This can lead to innovative ideas and strong collaboration – we even do it here at Dimagi!
The issues begin to arise when you have team members working alongside the colleagues to whom they are accountable. For instance, when a program manager sits next to members of the tech and development team, the dev team’s backlog can grow out of control.
Our developers are pretty agreeable people, and we’ve found they have a hard time saying no. So, similar to issue #2 above, additional requests from their program manager deskmate get piled on to an already long list of to-dos.
“Can you just do this for me really quickly?” “I just have a quick change for you to make.” “Hey, I have a small request for you from the team.” These seemingly harmless, but perpetual updates almost always distract from the development team’s main work. When these perfective maintenance suggestions come in, there should be a point person with development experience responsible for managing the workload of the main team who can allocate the requests accordingly.
This point person’s job should be to prioritize and bundle these changes in mini-projects and assign them to a capable developer with time. They should think about which suggestions fit together, the strengths of the available developers, and the current pipeline of changes.
Everything can feel urgent as it comes in, so have someone with a bird’s eye view of the entire team’s responsibilities remain above the hectic day-to-day and help manage these changes.
Poor or infrequent training sessions will mean your team does not know how to use or improve the latest version of your app.
Issue #4: High turnover and poor training
Our teams work hard. So when people decide it’s time to move on, we have to be understanding. And while it can be hard to see people go, your project’s performance should not drastically plummet if you have a reliable and effective training program.
Training needs to be a core part of your program that can help you survive turnover. In fact, even if you aren’t seeing turnover increase, regular training sessions are still a good idea. From new features to new processes and workflows, there is always something new to train your team about. Refresher trainings are also important, as it is easy to forget aspects of your program that you might not touch every day.
Set up a reliable cadence and structure for your training sessions so your team members know what to expect and can plan accordingly. These sessions will evolve and improve as you discover how your team learns, and you are likely to find ways to train your team that you never would have thought of. Meeting regularly will also allow you to collect feedback from your users, including bugs, suggestions, and other questions.
You might find that your team needs a little energy boost before some of these training sessions, but don’t worry. We have you covered there, too.
Mobile data collection apps, like any other platform, are not done when you hand them off to your users. They will require monitoring and follow-up to ensure they continue to run smoothly. Plan for this by developing clear and reliable documentation and holding regular training sessions. Coupled with establishing clear parameters and processes for maintenance requests, your approach to application maintenance will help your program to continue to collect clean data and drive impact.