noah = angry

Today’s little blog post comes in response to a guest article posted on The Daily WTF (which used to be What The Fuck, until the author became even more retarded than he usually is, and now it is The Daily Worse-Than-Failure). Feel free to read the original article before you continue on here, although there really isn’t anything specific you are going to learn from it: Guest Article: Our Dirty Little Secret – Worse Than Failure.

So here’s the deal. The Daily WTF can be interesting some of the time, as some of the examples are genuinely humorous, and the submitted stories are often a treat. However, every once in awhile, you really get the feeling that the website is kind of like retarded kids calling each other stupid.

In today’s article, the poster submits that we should all read great programming books, of which he specifically mentions Steve McConnell’s Code Complete (Amazon). For those of you who haven’t read it, all I can say is, well, don’t. If you buy this book, it will be the most wasted $35 you’ve ever spent. I really can’t say this strongly enough: Code Complete is the worst software engineering book ever written.

See, the book is, in some way, like Java, or like the Software Engineering major at RIT, or for a more general analogy, like McDonald’s. You see, McDonald’s is really, really good at making talentless people able to perform a simple job to the lowest specifications possible. Java has about the same effect, as it seems to be the language that makes it hardest to shoot yourself in the foot (only because the most firepower it gives you is about the equivalent of a moist towelette). The SE program at RIT is the same, which teaches how to regurgitate design patterns without requiring any actual understanding and/or ingenuity. In any case, even the most marginally talented or intelligent individual can do better, and the only people that it really helps are those who couldn’t cut it themselves.

And that is where McConnell’s book leaves us. It’s about 900 pages of what is either a) common sense, b) better expressed in other books, or c) McDonald’s training manual. I bought the book last summer (at Microsoft = discount), and felt myself literally growing dumber by reading it. You see, there is no great shortage of decent computer science and software engineering texts. The best of which are probably things like Meyers’ Effective C++/STL books, which are gems among a good deal of decent books. Somehow, this book always makes it to the top of people’s list of must-read computing books.

The only examples I can really remember from the book are along the lines of, “If you have loops, move static code outside the loop!”, or “If you have loops inside of each other, arrange them so that the total number of iterations is as small as possible!” That’s right, folks, you want loops to run as few times as possible. Who would have thunk it?

The saddest part of this article was a combination of two things: first, that the author seemed to be positing that reading books like this will make you a better programmer (as if reading a laundry list can keep you from doing stupid things, as if computer science is like making crappy hamburgers), and second, that about 5-7 comments on the article are to the point of “Right on, man! Code Complete ftw!” This isn’t entirely surprising, as the only other real comments that get made are along the lines of “VB rocks!”, “PHP sucks”, and various others. These are not in and of themselves WTFs, but they sure stink of something close.

I guess I really don’t have any content today, just a lot of anger. I’m angry at the quality of people in my major and in the industry. I’m angry at what passes for mediocrity, and I’m angry that websites like this pretend to be on the “good” side of the battle. Most of all, I’m mad that McConnell’s book seems to be so well-liked. It falls an entire category of books that I have a great distaste of, notably self-help and “How to Make a Bazillion Dollars” type books.

(sidenote) My anger is also being fueled more and more by the fact that Java, as a language, is so goddamn lacking. To quote from the Steve Yegge interview in Bruce Tate’s Beyond Java, answering the question, “How does Java hold you back?”:

First, Java offers an impoverished set of abstractions. No first-class functions, no reference parameters, no keyword or default params, no destructuring bind or even parallel assignment, no way to return multiple values efficiently, no continuations, no user-defined operators, no generators, no closures, no tuples…the list just goes on. Java’s about 25 teeth shy of a full mouth.

Second, Java is entirely nonextensible. It can’t grow. There’s no metaprogramming, no macros, no templates, nothing that gives you syntactic abstraction. So, Java’s incompressible. Java code is always filled with stuff that looks like copy and paste, but you can’t factor it out. [...]

Third, Java can express code, but not data. [...]

Fourth, Java’s static type system sucks. [...]

Fifth, Java has far too much nonessential complexity. [...]

Harumph.

  • WarrenM
    Don't take me that seriously. I believe Eckel to be one of the best /tutors/ of Java in print today. But at least the TiJ books are certainly below your level.
  • warren:
    I had always assumed Eckel's book would be good, probably just from name recognition. Then again, I do strongly disagree with his outlook on checked exceptions as always being bad. I suppose I should refrain from buying Eckel books, then?
  • WarrenM
    Consider yourself fortunate to at least have the second edition. I bought the first edition at full-price about five years ago. It presently sits at the bottom (I mean, the very bottom) of the massive stack of books in my room.

    No shit. I'm talking, *below* "Thinking in Java" by Eckel, which I also haven't cracked in 3+ years.
  • Harezga
    I agree, SE is retarded. I've taken dumps that have more relevance to coding than SE.
  • John F.
    Noah is the man. Preach that gospel, brother.
  • An enjoyable read. I don't know why, but I always like your rants.
blog comments powered by Disqus