"Simple Made Easy" - Rich Hickey (2011)

Published 2021-09-02
Rich Hickey, the author of Clojure and designer of Datomic, is a software developer with over 30 years of experience in various domains. Rich has worked on scheduling systems, broadcast automation, audio analysis and fingerprinting, database design, yield management, exit poll systems, and machine listening, in a variety of languages.

This keynote was given at Strange Loop 2011, and is perhaps the best known and most highly regarded of Rich's many excellent talks, ushering in a new way to think about the problems of software design and the constant fight against complexity.

The video was recorded at Strange Loop in partnership with InfoQ, who have hosted it on their site since 2011. This version (released 10 years later) is a new edit made from the original HD video and slides, restoring the slide transitions and animations as it was given in 2011.

All Comments (16)
  • @fredoverflow
    07:03 is one of my favorite quotes ever: If you want everything to be familiar, you will never learn anything new, because it can't be significantly different from what you already know.
  • I could literally watch this million times and I will not be bored! One of the most enlightening talks ever by Strangeloop
  • @jethrolarson
    An oldie but goodie! I make everyone I work with watch this!
  • @martinisdn541
    38:58 the ability to extract a value is your path to simplicity. if i can get a value out of this i can continue with my program. if i pass a reference to something i'm poisoning the rest of the system.
  • @arne8780
    20:50 on incidental complexity: "incidental is Latin for 'your fault'"
  • @KlavikP
    15:32 love the guard rail programming reference. Such an amazing insight.
  • @KipIngram
    This was a fantastic talk. Well done!
  • @Snake19S
    Thanks for adding my russian subtitles!
  • @Muskar2
    30:02 I don't understand his point about vars vs. managed references and switches being complex vs. "polymorphism a la carte". My assumption is that he's talking about vars as inferred types and managed refs are pointers to a data structure in a garbage collected language. If so, I'd say that neither of them are simple but vars are vastly simpler because the compiler knows both the type and the data structure so it's only behind one layer of abstraction where as managed data structures have a complex and opaque lifecycle. If he instead means strongly typed references, then I'd agree. As for the polymorphism, I don't understand how it can be seen as simple. Because with switch statements everything is transparent and polymorphism hides functionality behind at least one layer of abstraction. He reiterates that simple means "unentangled" but I'd argue that polymorphism is usually just hidden entanglement. I don't know all the types of polymorphism though, so maybe I'm just not getting it.
  • @KipIngram
    12:00 - I would add an item to your list. Can you ship it bug free IN THE FIRST PLACE? That's far, far more valuable than being able to "fix it." But no one even acts like this possibility even exists in our world today, which AMAZES ME. Let me ask you a question. Imagine a world in which the automobile industry, or the passenger airliner industry, had a reputation for quality akin to the one that the software industry has. That would simply . The big difference is that car makers and airline makers can't push a button and change all of there products in the field the way software companies can. Recalls are EXPENSIVE. This ability to push updates out almost automatically has become a crutch, and the software industry uses it to get away with shoddy quality. This should be the problem you're trying to solve.
  • @KennethBoneth
    I don’t get how he manages to be so funny at the same time