Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Complexity

 Complexity

Without rigorous care and attention software quickly becomes messy and unmanageable. Even with the best intentions entropy and complexity are a fact of life in growing applications. As in many other contexts it is easier to tackle the symptoms than the cause. Systems Thinking calls this behaviour "Shifting the Burden" and it is more widespread than you might think. From your IDE to your automated build, from ACLs to TDD, from backlogs to burn-ups, we are surrounded by props for coping with complexity. As appealing as these are, they also make us less likely to address the underlying problem of complexity itself. Dan believes you can learn to recognise these coping mechanisms for what they are, and intends to set you on the path to simplicating your programming life.

Daniel Terhorst-North

May 24, 2018
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Technology

Transcript

  1. Kicking the
    Complexity Habit
    Dan North
    @tastapod

    View full-size slide

  2. Kicking the
    Complexity Habit
    Dan North
    @tastapod

    View full-size slide

  3. Kicking
    Complexity
    Dan North
    @tastapod

    View full-size slide

  4. Complexity
    @tastapod

    View full-size slide

  5. @tastapod
    “It really shouldn’t be this difficult”
    “Someone really thought about this”

    View full-size slide

  6. @tastapod
    Know your enemy
    Identifying complexity
    Reducing complexity
    Avoiding complexity

    View full-size slide

  7. @tastapod
    Identifying complexity

    View full-size slide

  8. @tastapod
    We do what we know
    B
    back pain
    painkillers
    triggers relieves
    physio,
    exercise,
    diet, etc.
    back injury
    resolves
    delay
    B
    “Shifting the Burden
    to the Intervenor”
    causes
    diminishes
    “Addiction”

    View full-size slide

  9. @tastapod
    We do what we know
    B
    overwhelm
    workarounds
    triggers relieves
    refactoring,
    restructuring,
    simplifying, etc.
    complexity
    resolves
    delay
    B
    “Shifting the Burden
    to the Intervenor”
    causes
    “Addiction”
    diminishes

    View full-size slide

  10. @tastapod
    Painkillers are everywhere!
    Architecture
    Design
    Tools
    Techniques
    Process
    Organisation
    Enterprise mandates
    Undirected local choices
    IDEs
    Build automation
    TDD
    too much, too little
    Conway’s Law

    View full-size slide

  11. @tastapod
    Reducing complexity
    ✓ Monitor your cognitive load
    ✓ See what’s really there - and question it
    ✓ Use consistent idioms and principles
    ✓ Familiarity is not the same as Simplicity
    - Use fresh eyes. “What’s the dumbest thing..?”

    View full-size slide

  12. @tastapod
    A tale of two cities…

    View full-size slide

  13. @tastapod
    The real other city

    View full-size slide

  14. @tastapod
    Avoiding complexity
    ✓ Complexity is the default state
    - There isn’t a “physics”, just local decisions
    - It grows one day at a time
    ✓ Consistency at scale is a daily choice
    - Agree idioms and guiding principles
    ✓ Strive for simplicity
    - Choose tools and techniques that make it easier

    View full-size slide

  15. @tastapod
    Summing up
    Complexity is the default condition
    Simplifying is always an option
    Consistency is the key
    It really shouldn’t be this difficult

    View full-size slide

  16. @tastapod
    Thanks for listening
    @tastapod
    [email protected]
    http://dannorth.net

    View full-size slide