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

Simplicity matters

Cc95ef8bf38403916f40854c4ede4853?s=47 Pierre GOUDJO
January 30, 2022
3

Simplicity matters

Cc95ef8bf38403916f40854c4ede4853?s=128

Pierre GOUDJO

January 30, 2022
Tweet

Transcript

  1. Simplicity matters Pierre GOUDJO

  2. Edsger W. Dijkstra Simplicity is a prerequisite for reliability

  3. • Simple simp - plex one fold / braid vs

    complex
 • Easy ease < aise < adjacens lie near vs hard Etymology
  4. • One fold/braid • One role • One task •

    One concept • One dimension
 • About lack of interleaving, not cardinality • Simple is objective Simple
  5. Simple vs complex

  6. • Near at hand • On our hard drive, in

    our toolset, IDE, npm install, apt get, gem install… • Near to our understanding/skill set • Familiar
 • Near our capabilities • Easy is relative Easy
  7. • We can only consider few things at a time

    • Making a system reliable implies understanding it • Complexity undermines understanding Limits
  8. • Emphasising ease gives early speed • Ignoring complexity will

    slow you down over the long haul Development speed Productivity Time Simple Easy
  9. • Essential complexity • Inherent to the domain you are

    working on • Essential to the user’s problem
 • Accidental complexity • Not related to the domain • Entanglement of ideas/ components not necessary for solving the problem Complexity
  10. None
  11. Rocket control software • Complex domain • Possibly complex software

    Example
  12. Inherent Complexity • Usually means reducing the problem space •

    Leads to more focused software • Lean Product Management can help focus on the real value Reducing complexity
  13. Law of conservation of complexity — Larry Tesler Every application

    has an inherent amount of irreducible complexity. The only question is who will have to deal with it —the user, the application developer, or the platform developer?
  14. Accidental complexity • As developers, we should focus our attention

    here • Leads to less bloated software • Less accidental complexity => Understandable software Reducing complexity
  15. Out of the tar pit — Ben Mosely, Peter Marks

    Simplicity is hard
  16. Making things easy • Bring to hand by installing •

    Become familiar by learning, trying • Mental capability? • Not going to move very far • Make things easy by simplifying them
  17. We can be creating the exact same programs out of

    significantly simpler components
  18. Simplicity Toolkit Complexity Simplicity State, Objects Values Methods Functions, Namespaces

    vars Managed References Inheritance, switch, matching Polymorphism and composition Imperative loops Set functions Actors Queues ORM Declarative data manipulation Conditionals Rules Inconsistency Consistency
  19. • To place together • Composing simple components is the

    key to robust software • Partitioning and strati fi cation don’t imply simplicity • But are enabled by it Composition
  20. Tony Hoare — Turing Award speech 1980 ...there is one

    quality that cannot be purchased... — and that is reliability. The price of reliability is the pursuit of the utmost simplicity
  21. Agile Manifesto Simplicity—the art of maximizing the amount of work

    not done—is essential.
  22. Not doing the work and offloading decisions to third-party dependencies

    doesn’t reduce the complexity of the application
  23. Programmers vs Programs • We focus on ourselves • Programmer

    convenience • Programmer replaceability • Rather than the programs • Software quality, correctness • Maintenance, change
  24. Rich Hickey Programmers know the benefits of everything and the

    tradeoffs of nothing
  25. Simplicity is a Choice • Requires vigilance and care •

    Equating simplicity with ease is wrong • The focus should be around entanglement not easiness
  26. Leonardo de Vinci Simplicity is the ultimate sophistication

  27. None