Software development challenges can be opportunities for improvement

Monday I spoke with The New York XP & Agile Meetup Group and a question came up that alluded to the fact that sometimes we have challenges that seem insurmountable. For example, what if we work with highly sensitive information and we need to create databases that contain realistic, but not real information.

At first glance, this seems like yet another thing to pile on our already overwhelming plate. But I see this, and many challenges like it, as an opportunity. When a challenge like this comes up, I like to step back and ask, in the process of overcoming this challenge, is there anything else of value I could accomplish in tandem. Something that would make the challenge not just a challenge, but an opportunity to improve.

One opportunity that came to mind was scenario driven testing. Scenario driven testing can be invaluable in building confidence in software. But, it can be a lot of work.

Say we’re building a system to monitor the progress of patients. Patients will be discharged when they no longer need service. Of course there are many reasons why this might happen: they may have had a temporary set back and recovered, maybe they moved to another state, or perhaps they died. These are a few of the possibilities. Building a system to monitor progress requires handling these situations appropriately. Having automated test cases to run the application through these scenarios can be extremely valuable.

Patient information is also highly sensitive information. So we’ll either be faced with the challenge of protecting real data sets. Or, we could build realistic data sets instead. This is a typical challenge we face in healthcare, and many other industries.

The challenge of dealing with sensitive information combined with the opportunity to improve our body of tests, seems to be a potential win-win. Instead of just facing a challenge, we now have the opportunity to improve. We can create scenario based tests and then abstract them just enough to use them to permute random, realistic data sets for other development purposes.

In creating an opportunity out of a challenge, we’re much more likely to deal with the challenge in a timely fashion too. A challenge alone is tempting to put off until it turns into a disaster. The incentives of an opportunity thrust us into action instead of inaction.

What development challenges do you face and what opportunities do those challenges align with?