"We could, but we don’t have to, and maybe we shouldn’t." 1

Why do so many software projects fail? From experience, I believe software engineers could benefit from a better understanding of risk.

This essay aims to give you tools to assess and mitigate risks of failure in your software projects.

What is risk?

Per wikipedia 2:

In simple terms, risk is the possibility of something bad happening.

The key to risk is a lack of knowledge leading to uncertainty. If we have the knowledge, it's not a risk, it's a certainty.

As engineers our fundamental goal is to consistently produce the desired outcome without unforeseen consequences.

the hard part of building systems is not building them, it’s knowing what to build - it’s in acquiring the necessary knowledge 3

To assess and mitigate risk we must reduce our uncertainty by acquiring knowledge about the system we are building.

Goals of risk assessment

"It's not paranoia, it's reasonable precaution." 4

We want to spend time on solutions that deliver value.

We want to mitigate risks to solutions so they succeed.

We want to minimize putting time and energy into solutions that fail.

Overall, we aim to assess and mitigate project failure points with minimal effort.

Common sources of risk in software projects

I see three common sources of risk to software projects: Business, People, Technical.

  • Business
    • Why are we building this? Can this project sustain itself?
  • People
    • Who is building this? Can people work together to deliver this project?
  • Technical
    • How are we building this? Can the technical path be built and sustained given all the constraints?
  1. quote by wandyezj

  2. Risk on Wikipedia

  3. Armour, Phillip G. "The five orders of ignorance." Communications of the ACM 43, no. 10 (2000): 17-20.

  4. quote by wandyezj