3 ms·
I highly recommend Rich Hickey's "Simple Made Easy" talk as a way to think about software complexity. We all know that complex systems are hard to work with, b
by loudmax 4y ago
I highly recommend Rich Hickey's "Simple Made Easy" talk as a way to think about software complexity. We all know that complex systems are hard to work with, but I've found his presentation very useful in understanding the nature of complexity. Understanding complexity helps being able to avoid or minimize it. For example, easy is not the same as simple, and simple changes to one part of a system can introduce great complexity at the macro level.
https://www.youtube.com/watch?v=LKtk3HCgTa8 https://www.youtube.com/watch?v=LKtk3HCgTa8
- appleflaxen 4y agoI've watched that video at least three times, but I still can't articulate the exact distinction he is making between simple and easy :/
- aidenn0 4y agoAdd two 10000 digit numbers by hand. That's quite simple to do, but it's certainly not easy.
- honkler 4y agoit's easy but mundane. If you pay me, I'll do it.
- kortex 4y agoA for loop is easy: everyone can conceptualize doing a process N times. A map is not as easy of a concept in some ways (it's more abstract, you are taking N elements of X to N elements of Y). But a map is simpler than a for loop, because there is no state between steps: it's completely symmetrical. The for-loop "complects" each iteration together, even if it's as little as incrementing an integer. It's a side effect, however trivial. To kick it up a notch, now imagine a 2-D loop. Now we have 2 counters. If it's a 2-D array, each addressing operation interacts with 2 counters. But map just needs a second map chained on, and each map is completely "unaware" of the other map. You could map over N dimensions and each map is symmetrical, while the for loop needs an ever increasing number of counters. This slight difference in complexity shows how complexity compounds with other complexity.
- kirubakaran 4y agoThe solution to losing weight is simple: eat fewer calories than you burn. It's not easy though.
- Beltalowda 4y agoLet's say you have a function that does a lot of different things, and you just call: doStuff() That's easy, right? But "doStuff()" may be a very complicated function, that's very hard to understand, so it's not simple. A real-world example might be something like the type conversion that JavaScript and PHP do in comparisons; "just do 0 == '0' and it'll work, easy right?", but turns out those conversion rules aren't simple at all.
- wtetzner 4y agoSimple more or less means "decoupled", not necessarily convenient.
- vlunkr 4y agoI hadn't heard that before, it's great. I like how he states that simpler software doesn't necessarily mean fewer components (roughly quoting). Where the article argues for fewer boxes and arrows. It's hard to argue specifics, because the article isn't getting into them, but sometimes more boxes and arrows makes things simpler. If you don't have multiple boxes, what do you have? One box of spaghetti? I also disagree with the article that engineers like complexity. I've maybe known a couple, but usually they are really junior, or really unpopular.
- Heyso 4y agoWell, if you compare react and angular2+, react has less stuff, and is less complex. But on the opposite side, a function that tries to do too much (like lodash pick function) look simple at first glance, but is actually complex.