
Simple Made Easy (2011) - BerislavLopac
https://www.infoq.com/presentations/Simple-Made-Easy/
======
pansa2
Fantastic talk, covering the difference between “simple” and “easy”, and how
(when you can’t have both) the former is preferable.

I find it interesting that Python, despite being widely described as a simple
language, takes the opposite approach. The language isn’t simple at all [0],
it prefers to make things easy. This preference even appears (in the
contrapositive) in the “Zen of Python”: “Complex is better than complicated.”

As a specific example, Python 3.7 introduced dataclasses, making them
dependent on type hints when they could have been completely orthogonal. The
language design ignored this talk’s advice against “complecting” features.

[0]
[https://twitter.com/raymondh/status/1280946969116995584](https://twitter.com/raymondh/status/1280946969116995584)

~~~
iLemming
[https://twitter.com/lxsameer/status/1273546170137300992](https://twitter.com/lxsameer/status/1273546170137300992)

> I wrote a #clojure program for logic A in 4 hours. I've been asked to
> rewrite it in #python because of some product requirements. It's been 3 days
> since i've started and still on the first 25% of it. Note: I'm using python
> for more than 13 years.

~~~
Scarbutt
Yeah, no way that's true if his python and clojure knowledge are at the same
level. That tweet sounds like what you see on r/clojure all the time, a cult.

~~~
praptak
Just a language that isn't yet used widely in production. I remember when
Python was like that, there is even a relevant xkcd strip:
[https://xkcd.com/353/](https://xkcd.com/353/)

Gosh, I remember when JAVA was like that!

~~~
iLemming
> isn't yet used widely in production

What are you talking about? Walmart has built their receipt processing in
Clojure. Apple uses it (afaik for payments processing). Cisco has built their
entire security platform in Clojure - security.cisco.com. Funding Circle has
built their peer-to-peer landing platform in Clojure. Nubank - the largest
independent digital bank in the world and sixth-largest bank in Brazil been
using Clojure extensively. There are many other companies very actively using
Clojure. Pandora, CircleCI, Pitch, Guaranteed Rate, etc. It's even used at
NASA.

It's a the third most popular JVM language after Java and Kotlin, and the most
popular alt-js PL (if you don't consider Typescript as alt-js). It's the most
popular language among PLs with a strong FP emphasis - it is more popular than
Haskell, Elm, Idris, OCaml, Erlang, Elixir, F#, Purescript, and (recently)
Scala.

Clojure is very ripe for the prime-time. The ecosystem is really nice. A lot
more nicer than most other languages. It is an extremely productive tool. But
of course skeptics be like: "but it's dyyying ...", "it ain't popular ...",
"but all those parentheses ...", "it's a cult ...", etc.

------
dgb23
All of the Rich Hickey talks I watched (there are many!) are insightful and
entertaining. He manages to talk about technical things on a abstract,
sometimes philosophical level. I even re-watched some talks after a couple of
years and got something new out of them.

One of the most entertaining ones I watched was "Spec-ulation". It is less
general than some of the more shared/cited ones but really funny.

~~~
leetrout
Anyone else interested it is available at
[https://www.youtube.com/watch?v=oyLBGkS5ICk](https://www.youtube.com/watch?v=oyLBGkS5ICk)

------
milesvp
This talk had a profound effect on how I think about complexity, and taught me
not to conflate easy and simple, 2 words in english that are often treated as
synonyms. It really opened my eyes to how much tooling we use as devs
(particularly in ops) that hides much of the complexity of a system. I’m much
more dubious now whenever a tool comes around that makes X easier, and look
for any added costs to complexity to see if there’s a hidden tradeoff.

I highly recommend giving the talk a listen to.

------
1penny42cents
This talk turned an inflection point in my career. The physical metaphor of a
braid and having that braid straightened out applies to so many areas of
software. "Unbraidedness" is a very useful (albeit informal) measure of
quality for me. It helps me detect when something's not right, as well as
hinting how I can help straighten it out.

~~~
thereticent
Even the informal concept is useful, but I suspect it could be formalized. I'd
love to hear from a theoretical CS person about that notion.

------
tdrgabi
I see this talk given as an example of best talks. I watched it twice. I'm
obviously in a minority here, but I don't get it. I hear just truisms. Like:
"It's better to be rich and healthy than poor and sick." I know it's hard to
summarize a talk in a few paragraphs, but what big point did you get out of
it. Honest question, I'm genuinely interested.

~~~
Ace17
1) easiness is subjective, simplicity is objective.

2) simple code is easy to read, but hard to write.

If you're a programmer, and you're not surrounded by people conflating both
words, consider yourself lucky. What does a coworker really means by "I did
the simplest possible thing" ?

~~~
tdrgabi
Ok. So it might be a language thing. Not being a native, easy and simple from
pov of a customer is the same for me.

For example, for me, statement 1 is false. Simplicity is also subjective

I am one of the people conflating the terms. Are they used from the devs pov?
Like what's easiest for you (add one more parameter to this function or
another special case handled with its) might make things more complicated.

From the customer pov simple or easy is the same, or?!

~~~
nekopa
It is a language thing, even for native speakers :) That is why he went to a
lot of trouble to define each term in the beginning, and kept referring back
to his opening definitions throughout the talk:

Simple = One thing not 'mixed - linked - folded' with anything else. That's
why he says it is objective - if you look at something and see it's mixed up
with something else, it's not simple (in his terms, now it's complex - eg many
things woven together)

Easy = Near to you. Near in as you know it already, or you have it already and
so on.

His talk is for the dev pov, but even outside of dev, simple does not mean
easy all the time.

For example, (and something I am struggling with right now) it is simple to
lose weight - eat less calories than you burn each day. Simple.

But I can attest it is far from easy.

~~~
tdrgabi
Thank you for the reply. I'm starting to get it.

------
stonemetal12
Wow it has been close to a decade since then. Is there a simple made Easy 2?
He presents a number of grandiose ideas, it would be interesting to see what
he thinks he got right and what went off the rails.

~~~
Scarbutt
He indirectly recognized the importance of declaring the shape of data 6 years
later by introducing spec, which to date still has big issues and screams
"just use a proper statically typed language".

~~~
lukashrb
Everytime I read your name, you subtile spread some negativity :)

Maybe Hickey just didn't prioritized "types" as high as some other ideas to
spend his time on. And in my opinion he focused on the right things and
achieved something really great.

As general advice stay positiv, focus on the things you like instead of
telling everyone what you don't like, it's better for your mental health ;)

------
juliend2
I wonder what he meant by "Rules" (compared to "Conditions"), in his table
where he describes "Complexity" vs "Simplicity".

Is it some kind of paradigm that exist in Clojure but not in procedural
languages?

~~~
joncampbelldev
I believe conditionals is referring to if statements (and their ilk,
switch/case/cond etc). Rules is referring to rule systems and/or more
generally declarative knowledge systems. Things like core.logic in clojure (or
prolog, datalog and minikanren in the wider world).

Stuff like this is not specific to clojure, however it would be harder to have
an embedded rules system in your language if its not a lisp. You'd probably
have have to resort to a string based DSL (something like drools in java).

