Reading all of Steve's posts would be much like reading a book, although a somewhat disjointed one. Some posts wouldn't fit in at all. To get some feel for what a Steve Yegge book would be like, I've put together 15 of what I think are Steve's best rants. It wouldn't be a long book, taking only a night or two to read through, but the topics are good and it sticks to his more timeless writings. I reread them all for this post, doing one per day and really enjoying it. Each one of these posts is here because it's either an entertaining read or great food for thought, or both.
Metrics systems, much like documentation systems, have a fundamental tradeoff: you can have a complex system with lots of features, or you can have a simple system with few features. But not both.The solution he ended up with was to create custom systems from simple components to address the specific problem at hand.
this great interactive site). Here's Steve's full Ten Challenges list:
- Gödel, Escher, Back: An Eternal Golden Braid by Douglas R. Hofstadter
- Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Sussman
- Digital Typography by Donald Knuth
- Programming Language Pragmatics by Michael Scott
- The Essentials of Programming Languages by Daniel P. Friedman and Mitchell Wand
- Types and Programming Languages by Benjamin C. Pierce
- The Seasoned Schemer by Daniel P. Friedman and Matthias Felleisen
- The Scheme Programming Language by R Kent Dybvig
- How to Design Programs by Felleisen, Findler, Flatt, and Krishnamurthi
- Purely Functional Data Structures by Chris Okasaki
Generally speaking, strong static typing has gotten in our way, time and again, and weak typing has never resulted in more "horribly bad" things happening than the equivalent strong-typing approaches. Horribly bad stuff just happens sometimes, no matter what approach you use.Besides, the real reason big systems are only written in strongly typed languages may be because using strongly typed languages results in big systems. The same system written in a weakly typed language could be orders of magnitude smaller.
tried writing a similar post with many of the same points, but Steve presents the topic in a much more entertaining way, I think. Then he does some literary judo in the middle and ends up transforming the discussion about meta data into a critique on static typing. Inexperienced programmers will overuse comments and static typing in the same way, while experienced programmers don't need those things and end up getting much more real work done. I can definitely see my own perspectives on programming evolving along similar lines as I gain experience and learn more languages and language features, and the whole post really resonated with me. This summary in no way does the post justice. There is way too much good stuff in it. You have to read it yourself to get the full effect.
Smart and Gets Things Done. He brings up a lot of good points about how it's extremely difficult to reliably find people that are smart and get things done, that there are actually a fair number of such people, and for a startup company, that is not actually what you want. You want people that are so good, they are actually Done and Gets Things Smart. Done in the sense that they get things done so fast that it only ever seems like they're finishing things and moving on to the next big task to knock down. Gets Things Smart in the sense that everything they touch gets much better in ways that you would never have even thought of. It's an interesting way to think about the truly exceptional programmers, and the big issue is how do you really find these programmers? You wouldn't ever know who they are unless you worked with them and experienced their incredible productivity and abilities for yourself. The challenge of recognizing, acknowledging, and hiring someone who is much smarter and better than you is not something most people are ready or able to do. It is a humbling and thought-provoking post.
Goedel, Escher, Bach: An Eternal Golden Braid, also from Steve's Ten Challenges post. I'll definitely have to give that one a look.
Steve covered a lot of ground not only in these 15 posts, but in all of his blogging. I thoroughly enjoy reading and re-reading his stuff because he has such an entertaining writing style and I learn new things every time I come back to it. He has a couple overarching themes to his posts that resonate quite strongly with me. First, he is passionate about learning to make yourself a better programmer through thorough research and study, especially by reading good books. I completely agree, and I appreciate how that sentiment comes through in his writing. Second, he believes strongly in good tooling for programming and in constantly striving to improve those tools and languages that we use every day. We're never going to have the one programming language to rule them all, but we can keep making them better and better. Every time I read his posts, I get a renewed interest in learning new languages. Now if you'll excuse me, I have a book I should be reading.