3 ms·
This post is nice, but... Rich Hickey and Bret Victor here are squashed into overly simple (and/or wrong) categories whose descriptions go like "the best progr
by chenglou 7y ago
This post is nice, but...
Rich Hickey and Bret Victor here are squashed into overly simple (and/or wrong) categories whose descriptions go like "the best programs [...] formally prove correctness" and "beautiful code is more important than beautiful UI". Both have been very vocal against these points.
Jon Blow is definitely not (just) in category 2. "But one of the reasons his last game (The Witness) took so long to write was that he wrote his own engine instead of using something off the shelf [...]. I understand". He'll probably have a heart attack reading this deep, deep assumption that creating his own thing slowed down his unique game rather than enhanced it.
As someone who does OCaml (and who maintains ReasonReact), shoving it into the category of "poetry is more important than execution speed" and "code over UI" is exactly what we're going _against_. It sucks to emphasize pragmatism, compile & runtime and UI, only to be shoved back into the "poetry" category.
I get a weird feeling criticizing a blog post that mostly gets the right idea across but then goes e.g. "don't worry, we get that you're a poet and care more about that than real-world execution and we empathize with your different perspective" or "we get that you don't prioritize writing simple beautiful code". Like, I _do_ care and these folks _don't_ abide by what you're describing. There's gotta be a name for this.
- josephg 7y agoThanks. Author here. I mean, generally I agree - but, any generalization will always be a bit overly general and reductive. The point of this article wasn't to try and make a formal taxonomy; just express an intuition. If I were to revise this article now I think your point is what I'd change about it - I mean, all of us can embody all of these core motivations. (Although I'm not sure we can hold all of them at the same time easily, and I think they're in tension within us). I'm also sure Rich Hickey, Bret Victor and RMS are all more complicated in person than how they're perceived in public. But extremes are useful to define a scale. In your work on ReasonReact, how much time do you spend thinking about the ergonomics of the users? It sounds like a fair bit of your time and mental cycles go into that. So it sounds like you sit somewhere between the extremes of those camps. I don't think I would have been able to say that sentence without defining overly steriotyped, extreme positions. And there's lots of interesting thoughts that follow from that - like, what happens when those motivations come into conflict? Eg, users care about feature X, which is going to be really ugly to implement, but desired. What do you do?
- chenglou 7y agoNice to see the author here. Note that I still do appreciate the post. You're also right that establishing simple, potentially extreme profiles isn't the goal but does help with understanding. The nuance I wanted to convey was lost while describing the folks above; I don't think I have much more to add about it, though here are some related thoughts. My personal answer to your question for me is "It depends. Lemme check what feature we're talking about here". My mentality isn't "nice, an occasion to exercise my principles", and judging from the talks two of the three aforementioned people gave, I'm positive they adopt a similar attitude: happen to take a stance, but don't actively seek it. When I go over some codebases, I often find flavors of code that smell like someone tried too hard taking a stance. E.g. code that overly future-proofs, code that definitely needs less ad-hoc-ness, code that prematurity optimizes in an obviously naive way, code that tries too hard to use a functional/OO concept, etc. Note that these all belong to different categories in your post, but one thing they share is that they all feel like p̶e̶o̶p̶l̶e̶ ̶w̶i̶t̶h̶ ̶d̶i̶f̶f̶e̶r̶e̶n̶t̶ ̶p̶r̶i̶n̶c̶i̶p̶l̶e̶s̶ ̶s̶l̶a̶p̶p̶i̶n̶g̶ ̶m̶e̶ ̶i̶n̶ ̶t̶h̶e̶ ̶f̶a̶c̶e̶ ̶w̶h̶i̶l̶e̶ ̶l̶e̶c̶t̶u̶r̶i̶n̶g̶ ̶m̶e̶ ̶a̶b̶o̶u̶t̶ ̶h̶o̶w̶ ̶t̶o̶ ̶c̶o̶d̶e̶ folks shoehorned principles back into the project rather than the other way around. So an alternative way of categorizing things is whether you go from the principle to the project, or vice-versa (aka whether you go from abstract to concrete or vice-versa). A result of that is that Jon Blow and Rich Hickey end up in the same category while Bret Victor and Alan Kay ends up in another (without speaking too much for themselves, and thanks to the nice confluence that is HN, I’d say that this categorization has been empirically verified if you check these people’s discussions with each other). Also, as computing domains grow, you'll probably need to create many more categories if we cross-cut the way you did in your blog post; on the other hand, this alternative way of cross-cutting, I believe, would stay constant. But hey, that doesn't mean your way of cutting it is wrong. The alternative one might be simpler but more abstract. Maybe this explains why many people in this thread debate on whether the cross-cutting is fair. If you ask the alternative question "which direction do you work from/to", you might get some better partitioning.
- hcs 7y agoThanks for the article, I agree that these groups are useful to think with, while I also object to the association of specific people with a particular category. Maybe because I align myself with these people too much, but don't consider myself aligned to one category at the expense of the others?
- rukuu001 7y agoYes, I really like this article too but the inclusion of Bret Victor in the first group seemed a little off - from what I've read he seems deeply concerned with human-computer interaction.
- tempodox 7y ago+1, I came here to say what you said. Those three categories seem OK as a very rough sketch, but the details in the article feel all wrong.