Skip to content

Instantly share code, notes, and snippets.

@enguerran
Created January 22, 2025 14:14
Show Gist options
  • Save enguerran/5abfdbe9787e0f934e868463b956c01d to your computer and use it in GitHub Desktop.
Save enguerran/5abfdbe9787e0f934e868463b956c01d to your computer and use it in GitHub Desktop.
Simple Made Easy, Rich Hickey

Rich Hickey is known as the creator of the Clojure, a Lisp dialect on top of the JVM.

Introduction

  • Build simple system to have robust system
  • Simple: sim- plex ; one fold, one braid ; vs complex
  • Easy: ease < aise < adjacens ; lie near ; vs hard
  • Simple, one fold:
    • one role
    • one task
    • one concept
    • one dimension
    • simple is an objective and can be explored
  • Easy, near, at hand:
    • near to our understanding
    • near to our skill set
    • familiar
    • easy is relative

CleanShot 2025-01-22 at 10 43 54

We should ask ourselves these questions: does the software do what is supposed to do? Is it of high quality? Can we rely on it? Can problems be fixed along the way? Can requirements change over time? The answers to these questions is what matters in writing software not the look and feel of the experience writing the code or the cultural implications of it.

🚨 LIMITS

  • 📚 we can only make reliable what we understand
  • 🔬 we can only consider a few things at a time
  • 🧩 intertwined things must be considered together
  • 🤯 complexity undermines understanding

Development Speed

  • Emphasizing ease gives early speed
  • Ignored complexity will slow people down over time
  • On throwaway or trivial projects, nothing much matters

CleanShot 2025-01-22 at 11 04 38

Benefits of Simplicity

  • Ease understanding
  • Ease of change
  • Easier debugging
  • Flexibility
    • policy
    • location
    • etc.

LISP programmers know the value of everything and the cost of nothing. — Alan Perlis

What's in your Toolkit?

Complexity Simplicity
State, Objects Values
Methods Functions, Namespaces
vars Managed refs
Inheritance, switch, matching Polymorphosm à la carte
Syntax Data
Imperative loops, fold Set functions
Actors Queues
ORM Declarative data manipulation
Conditionals Rules
Inconsistency Consistency
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment