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

Simplicity matters

Pierre GOUDJO
January 30, 2022
57

Simplicity matters

Pierre GOUDJO

January 30, 2022
Tweet

Transcript

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

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

    One concept • One dimension
 • About lack of interleaving, not cardinality • Simple is objective Simple
  3. • 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
  4. • We can only consider few things at a time

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

    slow you down over the long haul Development speed Productivity Time Simple Easy
  6. • 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
  7. 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
  8. 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?
  9. Accidental complexity • As developers, we should focus our attention

    here • Leads to less bloated software • Less accidental complexity => Understandable software Reducing complexity
  10. 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
  11. We can be creating the exact same programs out of

    significantly simpler components
  12. 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
  13. • 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
  14. 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
  15. Not doing the work and offloading decisions to third-party dependencies

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

    convenience • Programmer replaceability • Rather than the programs • Software quality, correctness • Maintenance, change
  17. Simplicity is a Choice • Requires vigilance and care •

    Equating simplicity with ease is wrong • The focus should be around entanglement not easiness