Rich Hickey's Greatest Hits (2013)
changelog.com
changelog.com
Then 6 months later you are still thinking about points he made in the talk.
Maybe you're overscrutinizing the trees.
It's dreadful to explain the average engineer (in my environment) basic principles of design and architecture over and over again (like what is an URI / URN / URL, or why should I use Strings as general identifiers rather than exposing the numeric value from the database to the outside) just to see them dismissing everything in the next second. Now, when I tell them to look into Clojure or Haskell just to learn something.... No I don't do that. Its sad.
But Kudos to Rich. I find it is more important that he is talking / lecturing about basic principles of software design and architecture and using Clojure as an example, despite Clojure's actual success.
My definition of "right", create the most value at the lowest cost.
My assumption is that when you say "right" you mean, "done in a way that produces the fewest bugs". If this is true, there is no consideration of the costs in your definition which seems wrong to me. At this point I usually hear people who make similar claims to you respond by saying, our "right" way doesn't cost more, or even costs less.
I don't think this is true, and here's why. If it's true, your "right" way would produce better software at the same price. If that's true one of the following would also be true.
1. companies doing it the "right" way would, on average, beat companies doing it the not "right" way. I have seen no evidence of this, in fact the opposite seems true. 2. Having a lower bug count has no bearing on the success of companies so there is no correlation between the "right" way and the not "right way. I doubt this is true, but I could be wrong.
What I think is true is that your "right" way costs significantly more, and the market in most cases has shown time and again that it's not worth the cost.
Edit: fixed a typo and some formatting.
Point is simply that I don't want to throw out all measures of quality of craftsmanship except financial.
I love Bob Martin's line that the dirty secret of programmers is that we'd still do it whether they paid us or not.
From what I experience is that many engineers don't take or don't have the time to think details through that are hard to change, later. I find functional languages to be less forgiving to bad design choices. So that's why I assume that functional languages have a smaller audience.
Of course, what's right is an abstract concept. But when you see bad software, you will know it. If a company can sell bad software, they may be "right", but they also build on risks that counter that view.
Edit: Btw. I don't expect software design to be 100% perfect, as long as the output is 100% correct. But every good design decision helps to build good stuff.
- http://www.ybrikman.com/writing/2014/05/29/must-see-tech-tal...
- https://cstheory.stackexchange.com/questions/1198/what-video...
- https://github.com/JanVanRyswyck/awesome-talks
- https://news.ycombinator.com/item?id=5511466
- https://github.com/hellerve/programming-talks
- https://news.ycombinator.com/item?id=12637239
Plenty of material. ;)