Very short summary of excellent video which I recommend watching and added a few comments of my own.
Why Can’t We Make Simple Software? - Peter van Hardenberg

Summary

  1. Complexity occurs when systems have internal interactions.
    It doesn’t mean we have a lot of stuff, internal interactions means when stuff starts getting in the way of each other.

  2. Complexity is a natural consequence of a system incentives.
    While software evolves you add layers ontop of layers which have internal interactions

  3. New tools are not the solution.
    Sometimes we reach a point where something is too complex, so we refactor or rewrite and we are rewarded with a nice feeling and(hopefully) reduced complexity.
    Since the software is less complex now, there is less incentive to keep it less complex and it will get more complex because it is easier strap on some additional feature at the cost of refactoring “later”

A study was mentioned in the YouTube video that showed that the invention of seatbelts didn’t result in overall less number of casualties per X people.
when wearing seatbelts people feel safer, so they drive faster / take faster turns.
basically, their risk tolerance remains the same, so they drive more recklessly while staying at the same comfortable risk feeling

How to mitigate complexity?

  • Eliminate dependencies (Do you really need to import that specific library?)
  • Reduce scope
    • Reduce features and focus on polishing existing flow
    • Make sure you are not over-engineering - Does the search function really needs caching mechanism or is the data too small to matter?
    • Does your application really need to support every file type?
  • Simplify architecture - N X M complexity
    • Do you need to support Windows / Mac / Both?
      Firefox / Chrome / Opera / All?
      x86 CPU / ARM ?
      Each layer multiplies with others which adds many different edge cases

Complexity as an Inevitable Reality

Peter Van Hardenberg argues that complexity isn’t inherently bad. Emergent behaviors from complex systems, such as the “chemistry engine” in The Legend of Zelda: Breath of the Wild, enable creativity and innovation. However, deliberate and thoughtful management of complexity is essential to avoid pitfalls.

“It never gets easier, you just go faster.”
Peter Van Hardenberg