"Simple Made Easy" - Rich Hickey (2011)

  Рет қаралды 83,788

Strange Loop Conference

Strange Loop Conference

2 жыл бұрын

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.

Пікірлер: 22
@fredoverflow
@fredoverflow 2 жыл бұрын
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.
@LucasBatistussi
@LucasBatistussi Жыл бұрын
I could literally watch this million times and I will not be bored! One of the most enlightening talks ever by Strangeloop
@diatribes
@diatribes Жыл бұрын
I've already viewed this 5 times over the last 2 years
@jethrolarson
@jethrolarson 2 жыл бұрын
An oldie but goodie! I make everyone I work with watch this!
@NoNameAtAll2
@NoNameAtAll2 2 жыл бұрын
thank you for making subtitles!
@StrangeLoopConf
@StrangeLoopConf 2 жыл бұрын
You're welcome! They were manually reviewed and fixed but if you find any issues, let me know.
@MarcelBornancin
@MarcelBornancin 2 жыл бұрын
What a great lecture
@arne8780
@arne8780 2 жыл бұрын
20:50 on incidental complexity: "incidental is Latin for 'your fault'"
@martinisdn541
@martinisdn541 2 жыл бұрын
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.
@Wielorybkek
@Wielorybkek 5 ай бұрын
I should re-watch it every quarter or so.
@KipIngram
@KipIngram 6 ай бұрын
This was a fantastic talk. Well done!
@KlavikP
@KlavikP 2 жыл бұрын
15:32 love the guard rail programming reference. Such an amazing insight.
@chuanqisun
@chuanqisun Жыл бұрын
that explains why he gave the keynote at _Rails_ Conf 2012.
@KarlOlofsson
@KarlOlofsson Жыл бұрын
I disagree. We test exact behavior, so more like the rails for a train or a tram, making sure a train going in a certain direction end up at an exact location. Guard rails are by nature "hopefully" stopping a catastrophe. That's a better analogy for using strict types. I.e. you know what kind of data you have, but you might be using it wrong. The typing doesn't stop you from doing that. But tests do. I don't love writing tests either, but I've learned to do it pretty well (not testing implementation and focusing on happy path only at the start). As with any tool, it's about learning how to use it correctly to benefit from it 🙃
@_shulhan
@_shulhan 11 ай бұрын
I am also disagree. Its great and poor analogy--both at the same time--on how the tests are useful now and in the future.
@Snake19S
@Snake19S 2 жыл бұрын
Thanks for adding my russian subtitles!
@Muskar2
@Muskar2 9 ай бұрын
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.
@zfxchip
@zfxchip 7 ай бұрын
What's being argued as complex in the case of vars vs. managed references is unconstrained mutability. For instance, an object member variable -- once it has been changed, every reference to the class that reads that member will read the new value. The term "managed reference" happens to use the already-overloaded term "reference", but is actually describing a reference mechanism like the one Clojure uses, in which the reference itself is an identity object and the value is acquired specifically by explicitly "dereferencing" it. In this system, the value is never actually mutated -- the reference simply associates to the "next version" of that value, and that association can only be done in a particular context. Rich Hickey gives more detail on this sort of system in a talk called "Persistent Data Structures and Managed References", which I cannot link here because of KZbin comment reasons. As for polymorphism being simpler than switch/match -- switch/match are complex because you have (1) a value (2) being intrinsically compared to multiple potential other values that (3) determines what behavior to execute (and, in many languages, (4) that must be explicitly broken -- but this isn't currently relevant). To borrow a word from the talk, this directly complects many possible values (and therefore has many possible states) and branches, yet only one of them gets run (assuming #4 isn't a factor). Enter polymorphism, where the polymorph implementation is the only component that needs to be concerned about the value, and is already explicitly and directly associated with the value's type such that everything you might need to know about that type is associated with it. This might sometimes result in more places to check for this kind of operation (so it isn't as "easy" in accordance with the talk), but it ends up simpler because you define one interaction and then implement that interaction only where necessary.
@KipIngram
@KipIngram 6 ай бұрын
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.
@nikitoci
@nikitoci 5 ай бұрын
Development costs (time, money, consequences). Software development has much faster “create - use - get feedback” cycle than automobile industry, and in many cases it’s cheap (in terms of time, mental effort, money, consequences) to ship faster and get quick feedback to iterate further. In most of the cases these programs are non-critical, and people just restart program/computer or refresh the web page if something fails and move on. For businesses it’s easier to wait for errors to start flowing and fixing them rather than polish the product for a year and then rollout perfect thing - they’d just lose money. With cars the cost of failure is drastically higher (people could be seriously injured or killed), and you cannot manufacture a slightly new iteration of a car five times per hour, which makes the making/testing/thinking phase much longer and thorough, and as consequence you have less bugs/failures. The design itself hasn’t changed drastically for decades. It still does not prevent serious failures from happening though (for example, see Toyota unintended acceleration case 2009-2011). I share your sentiment and also wish that software was less bloated, more reliable, and I wish that completing software was harder than it is.
@chukwunta
@chukwunta 6 ай бұрын
wow, wow, wow, wow, wow
@KennethBoneth
@KennethBoneth 10 ай бұрын
I don’t get how he manages to be so funny at the same time
A Philosophy of Software Design | John Ousterhout | Talks at Google
1:01:40
Maybe Not - Rich Hickey
1:03:29
ClojureTV
Рет қаралды 155 М.
Шокирующая Речь Выпускника 😳📽️@CarrolltonTexas
00:43
Глеб Рандалайнен
Рет қаралды 11 МЛН
Which one is the best? #katebrush #shorts
00:12
Kate Brush
Рет қаралды 18 МЛН
Would you like a delicious big mooncake? #shorts#Mooncake #China #Chinesefood
00:30
Whyyyy? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 16 МЛН
A History of Clojure by Rich Hickey with Q&A
1:07:02
Visas Meilas
Рет қаралды 29 М.
Rails Conf 2012 Keynote: Simplicity Matters by Rich Hickey
36:53
5 Design Patterns That Are ACTUALLY Used By Developers
9:27
Alex Hyett
Рет қаралды 183 М.
"The Mess We're In" by Joe Armstrong
45:50
Strange Loop Conference
Рет қаралды 377 М.
Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
53:56
jasonofthel33t
Рет қаралды 111 М.
Hammock Driven Development - Rich Hickey
39:49
ClojureTV
Рет қаралды 286 М.
So You Think You Know Git - FOSDEM 2024
47:00
GitButler
Рет қаралды 983 М.
"Propositions as Types" by Philip Wadler
42:43
Strange Loop Conference
Рет қаралды 124 М.
Why Does Scrum Make Programmers HATE Coding?
16:14
Thriving Technologist
Рет қаралды 490 М.
"Systems that run forever self-heal and scale" by Joe Armstrong (2013)
1:10:23
Strange Loop Conference
Рет қаралды 72 М.
📦Он вам не медведь! Обзор FlyingBear S1
18:26
Apple watch hidden camera
0:34
_vector_
Рет қаралды 59 МЛН
Очень странные дела PS 4 Pro
1:00
ТЕХНОБЛОГ ГУБАРЕВ СЕРГЕЙ
Рет қаралды 469 М.
Mem VPN - в Apple Store
0:30
AndroHack
Рет қаралды 60 М.
Bluetooth Desert Eagle
0:27
ts blur
Рет қаралды 4,8 МЛН
iPhone 12 socket cleaning #fixit
0:30
Tamar DB (mt)
Рет қаралды 30 МЛН