Complicated and complex are often considered synonyms, similar or identical in meaning. But when considering how to solve a problem, and especially when considering building a software system to solve a problem, it pays to be aware of the difference.
Complicated problems might be hard to solve, but they can be solved using a rules-based approach and through following the right processes.
Complex problems, however, have too many unknowns and interrelationships for this approach to problem solving to work.
For those involved in software development, one way of considering this is
- Complicated problems can be codified in their entirety, with detailed enough and thorough analysis
e.g. making an airline pricing engine is definitely a complicated problem, but it can be entirely solved and defined in software
- Complex problems cannot be codified in their entirety, though we may be able to introduce improvements and partial solutions
e.g. working out when is best to interact and notify customers about an event is a complex problem. We can’t possibly understand the full context of each individual and we need to consider far more than process mapping and the code required to fulfill a process. But we can do something to improve outcomes.
When we discuss digital transformation and solving new business problems, it helps to be clear about whether we are dealing with complicated or complex problems, as that will guide how we approach the solution.