How to deal with uncertainties in software development

Software project managers can’t ever hope to eliminate uncertainty, but they can reduce it and be prepared to deal with unexpected events

A man bungee jumping above a lake.
flickr/Carla MacNeil

Developing software is hard, which is why only an estimated 39% of software projects succeeded in 2012, in the sense that they were delivered on time, within budget and with the required functionality, according to a study of 50,000 IT projects by The Standish Group. Software development is difficult for a lot of reasons; complex technologies, demanding clients, and tight schedules can all combine to make it a challenge. One particularly big reason they fail, though, is because project managers fail to consider and deal with uncertainty.

Uncertainties in software development can come from any number of sources, like the technology itself (Is it new or new to your team?), the client (Will the requirements change on the fly?) and the team itself (Have they worked together before?). Dealing with the inevitable uncertainties properly can be be critical to the success of a project. As Jeff Sutherland, the creator of the Scrum methodology has written, for example, allocating time to deal with unplanned-for interruptions is critical to success by Agile teams. But how should software project managers best deal these unknowns?

That’s the subject of a new paper by researchers from the University of Pernambuco in Brazil titled A Guide to Deal with Uncertainties in Software Project Management. The authors performed a systematic review of studies pertaining to uncertainties in software project management, roughly 3,000 research papers in all. Based on this review, they developed a guide for software managers to deal with uncertainties. You can read the full paper for all of their steps; I’ve picked out four of their recommendations that I think are particularly worth considering.

Identify the sources of uncertainty in the project.

Uncertainty can come from any number of sources. The authors argue that it’s important to understand where they’re likely to come from in the project at hand. Knowing where uncertainties originate can help PMs more quickly recognize when unexpected things occur during the project and address them promptly. They identify four general sources of uncertainty: technological (the biggest source, e.g., mixing old and new technologies), the market (client needs, suppliers, partners, etc.), the environment (governments, team size, resources, etc.) and socio-human (e.g., How do your team members learn and use information?).

Use the right project management method for the project.

The authors argue that, when it comes to project management methods, one size does not fit all. Depending on the level of uncertainty in the project goals and solutions, one project management methodology may be preferred over another. For example, if the goals and solutions are both well defined, traditional project management (waterfall) and Agile work well. If the goals are clear but the solution isn’t, they recommend Agile. However, if both the goals and the solutions are very uncertain (e.g., an R&D project), Extreme project management is a good choice.

Address unexpected events as soon as possible.

A critical method for dealing with uncertainties, in the authors view, at least, is being vigilant about identifying and dealing with unexpected things as early as possible. Everyone on the team, not just the PM, should constantly be on the lookout for the unexpected. This echoes another recommendation by Sutherland that Scrum teams should address bugs as quickly as possible and not let them linger.

Apply best practices to reduce uncertainty.

Uncertainty can’t be eliminated, but it can be reduced. The authors present a number of best practices gleaned from their review of the literature to reduce uncertainty. These include things like managing client expectations, having good communications (both with the client and with the project team), building trust and using flexible contracts, which helps to mitigate the resistance to inevitable changes in the project. They also stressed the importance of being flexible, creative and open to experimentation and improvisation. As they wrote:

“Projects with many uncertainties must be open to creativity and experimentation.”

Lots of good food for thought in this paper. Good luck reducing your project’s uncertainty!

This story, "How to deal with uncertainties in software development" was originally published by ITworld.


Copyright © 2014 IDG Communications, Inc.

Shop Tech Products at Amazon