The 10 typical sources of uncertainty in Software projects
The 10 typical sources of uncertainty in Software projects
Suppose you had an utterly perfect process for delivering software. Would that remove all uncertainty from your projects? In fact, is the software building process even one of the major sources of uncertainty? Various project management approaches do not consider the impact that uncertainties have on the project. The identified threats by uncertainty in a project day-to-day are real and immediate and the expectations in a project are often high. Among the more important sources of uncertainty are these:
Requirement:
What exactly is it that the system has to do?
A requirement is a singular documented physical or functional need that a particular design, product or process aims to satisfy. – Wikipedia
It is commonly used in a formal sense in engineering design, including for example in systems engineering, software engineering, or enterprise engineering. It is a broad concept that could speak to any necessary (or sometimes desired) function, attribute, capability, characteristic, or quality of a system for it to have value and utility to a customer, organization, internal user, or other stakeholder. Requirements can come with different levels of specificity; for example, a requirement specification or requirement “spec” (often imprecisely referred to as “the” spec/specs, but there are actually different sorts of specifications) refers to an explicit, highly objective/clear (and often quantitative) requirement (or sometimes, set of requirements) to be satisfied by a material, design, product, or service. A set of requirements is used as inputs into the design stages of product development. Requirements are also an important input into the verification process, since tests should trace back to specific requirements. Requirements show what elements and functions are necessary for the particular project. When iterative methods of software development or agile methods are used, the system requirements are incrementally developed in parallel with design and implementation. With the waterfall model requirements are developed before design and implementation. According to the Business Analysis Body of Knowledge (BABOK), a requirement is:
- A condition or capability needed by a stakeholder to solve a problem or achieve an objective.
- A condition or capability that must be met or possessed by a solution or solution component to satisfy a contract, standard, specification, or other formally imposed documents.
- A documented representation of a condition or capability as in (1) or (2).
Match:
How will the system interact with its human operators and other peer systems?
End-users are often exposed to uncertain data in interactive systems such as personal health apps, intelligent navigation systems, and systems driven by machine learning. On one hand, communicating uncertainty may improve the understanding of data and predictions. On the other hand, communicating uncertainty can greatly confuse users and decrease trust.
Changing environment:
How will needs and goals change during the period of development?
The environment uncertainty can observe relevant actions to organizations or groups within the organization (suppliers, competitors, consumers, government, shareholders, team capacity, size of project lifecycle, resources, etc.) may affect the product, as well as doubts about the likelihood or nature of changes in the general condition in the environment (socio-cultural trends, demographic changes)
Resources:
What key human skills will be available (when needed) as the project proceeds?
Teams must go beyond mere crisis management and continuously observe the threats or opportunities. When new information arises, everyone should be willing to learn and then formulate new solutions. It is tempting to want to eliminate all uncertainty, but the huge levels of necessary resources even to get close to that goal are, in all the most exceptional cases, unjustified. In fact, great efforts in the uncertainty sources eradication often divert attention from the real goals. Eradication is rarely the answer, it is more feasible to contain uncertainty within acceptable levels. This leads to another guiding principle for the uncertainty management: The objective is the uncertainty containment, not its elimination. Although there are no easy answers or quick solutions, the uncertainty can be tamed, part of the answer lies in recognizing the nature of the problem and select the right technique (or strategy) to work. Like any good craftsman, the project manager must be in possession of a set of comprehensive tools for managing uncertainty and - equally important - a good knowledge of the capabilities and limitations of these tools. For different types of problems, the manager and the team should have strategies, mindset and different paradigms.
Management:
Will management have sufficient talent to set up productive teams, maintain morale, keep turnover low, and coordinate complex sets of interrelated tasks?
To reduce the probability of failure of a project it is important to characterize it properly, so knowing if there is a related uncertainty to their goals and solutions adopting a management model that fits the type project. Many projects with all the ingredients of success still fail. The reason for this is that executives, project managers and the project team are not accustomed to assess and analyze uncertainties, and so fail to adapt their management style to the situation. The ability to take reasonable decisions to ensure there is necessary support to get everyone involved in the project; personal ability, such as intuition and trial to perceive uncertainties; ability to maintain a good relationship and build trust are favorable points for reduction and perception of uncertainty in a project The project manager faces a dilemma: decisions must be made in the present about future situations which are inherently uncertain. The use of uncertainty management in project can be a determining factor for the project success
Supply chain:
Will other parties to the development perform as hoped?
Innovative projects can create high expectations for clients. You need to manage expectations, keeping them informed and aware of the project uncertainties, as well as creating a bond of trust between project members and clients.
Politics:
What is the effect of using political power to trump reality and impose constraints that are inconsistent with end-project success?
Conflict:
How do members of a diverse stakeholder community resolve their mutually incompatible goals? With uncertainty, a lot of time and effort should be to manage relationships with stakeholders and get them to accept unplanned changes. The relationship is characterized by trust between clients, managers and teams. Trust, once conquered, help alleviate the strategies change meetings during the project. Creating flexible contracts for innovative projects help mitigating resistance to changes necessary for the project. Obviously, to have a flexible contract it is important to keep project stakeholders well informed. Consumer market and different markets behave and think differently. Thus, project teams must know how their customers think, what their main problems are. Projects at various levels have their own unique elements that definitely stands out. If the market needs are already well known, the project will likely have little uncertainty. On the other hand, if they are not well understood it is necessary to guide the project to the desired goal. The market uncertainty comprehends client, suppliers, partners and current market situation.
Innovation:
How will technologies and approaches unique to this project affect the eventual outcome?
It is suggested that some techniques such as: Brainstorming, feasibility study, market research can be utilized to obtain knowledge. Other techniques which help in reducing uncertainty were : quality agreement with the client, continuous integration, involvement of the specialist user in the project, short iterations ; Open mind to culture, stakeholder analysis; multidisciplinary team, multiple specialties together help in creating differentiated alternatives and phase uncertainties; external view of the problem reported by the team client.
Scale:
How will upscaling volume and scope beyond past experience impact project performance?
Complex and uncertain projects changes, requires greater flexibility and reflection, as a new way to generate knowledge, the managing way, the project manager and the performance of the team should change as the profile and the uncertainty evolve. Projects with many uncertainties must be open to creativity and experimentation. Thus, the flexibility and the ability to communicate the changes is fundamental. Even the most perfect construction process can’t remove uncertainty from a complex systems development project. Where there is uncertainty, there is risk. Where there is risk, there needs to be a conscious and thoughtful effort to manage it. Instead of asking, “How did they go about building their software?” we can gain a lot more insight into what happened by asking, “How did they go about managing their risks?”
References:
- Waltzing with Bears by Tom DeMarco and Tim Lister
- Designing for Uncertainty in HCI: When Does Uncertainty Help?
- A GUIDE TO DEAL WITH UNCERTAINTIES IN SOFTWARE PROJECT MANAGEMENT by Marcelo Marinho, Suzana Sampaio, Telma Lima and Hermano de Moura
- Uncertainty Management in Software Projects - An Action Research by Marcelo Marinho, Suzana Sampaio, Telma Lima and Hermano de Moura
Photo credits
-
Photo by Alex Knight on Unsplash
-
Photo by Jason Blackeye on Unsplash
-
Photo by Clark Young on Unsplash
-
Photo by rawpixel on Unsplash
-
Photo by Igor Ovsyannykov on Unsplash
-
Photo by Jerry Kiesewetter on Unsplash
-
Photo by Diego PH on Unsplash
-
Photo by Drew Patrick Miller on Unsplash
-
Photo by Jim Strasma on Unsplash
Photo by Gianni Pisanu on Unsplash