I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

March 03, 2006

Sucking Less Every Year

Steve Yegge's whirlwind language tour is, as he points out, neither good nor complete, which makes it one of the best blog posts I've read this year. I'll spoil the ending for you: according to Steve, Ruby combines the best features of Perl, Smalltalk, Python, and Lisp into one bag of unparalleled goodness, while avoiding the pitfalls these languages fell into.

I really ought to look into this Ruby thing.

What's really remarkable about this article, though, are the many random gems of programming wisdom peppered throughout. Like this one:

When I started at Amazon, I could recite for you all the incantations, psalms, voodoo chants and so on that I'd learned, all in lieu of intelligence or experience, the ones that told me Multiple Inheritance is Evil 'cuz Everyone Says So, and Operator Overloading Is Evil, and so on. I even vaguely sort of knew why, but not really. Since then I've come to realize that it's not MI that sucks, it's developers who suck. I sucked, and I still do, although hopefully less every year.

I've often thought that sucking less every year is how humble programmers improve. You should be unhappy with code you wrote a year ago. If you aren't, that means either A) you haven't learned anything in a year, B) your code can't be improved, or C) you never revisit old code. All of these are the kiss of death for software developers.

We all write shitty software. But only the best developers realize they're doing it. It'd be ironic if it wasn't so depressing.

(via Damien Katz)

Posted by Jeff Atwood    View blog reactions

 

« In Pursuit of Simplicity The Cult of Coleco Adam »

 

Comments

I was thinking about this the other day. Being an independent consultant (when I was one) requires you to trumpet your own skills and experiences a bit to justify the high rates.

But every time I'd revisit code I wrote a while ago, I would think I pulled a fast one on the client for charging them for such terrible code. It makes me feel like a fraud, because the code I am writing for them now is so much better.

Until I visit THAT code a few months later. So compared to the past, I'm always a bargain.

Haacked on March 6, 2006 02:25 AM

So because I know that I write shitty software I am a good developer ? :-)

Peter Palludan on March 6, 2006 03:10 AM

That happens to me with lots of things at life. With code that I did, with music I did (i'm also a music), with some homework ...

The bad (or good) thing about that is that:

When you improve on hobbies and learn a new way to do things, things are ended and then you don't need the new learnings. At least, when you learn things at work you can use it each day.

Sorry again, I still have a bad english ... :)

SoMoS on March 6, 2006 05:01 AM

Some code I wrote in Borland Pascal in the mid-1980s is still some of the best stuff I ever did, but that doesn't depress me too much, since it was done very slowly and carefully and with the sort of attention to detail that's forced upon you by a UI framework that becomes quickly impossible to maintain unless you put in the same sort of serious effort that sees entire clipper ships taking shape inside glass bottles.

Nowadays, I'm writing good stuff again, because I've got experience AND a fair bit of LISPishness as two of my best resources.

Eric TF Bat on March 6, 2006 05:15 AM

Jeff, if you want to check out Ruby without straying too far from .NET, you should check out my RubyCLR bridge when you get a chance: http://www.iunknown.com/articles/2006/02/20/second-drop-of-rubyclr.

That drop is pretty usable; I'm getting ready to ship the third drop this week.

John Lam on March 6, 2006 09:23 AM

http://www.artima.com/weblogs/viewpost.jsp?thread=141312

> Ruby is to Perl what C++ was to C. Ruby improves and simplifies the Perl language (the name "Ruby" is even a tribute to Perl), and adds workable OO features

Oh man, I *JUST* figured this out. Ruby. Perl.

Boy, do I feel stupid.

Jeff Atwood on March 6, 2006 05:56 PM

I came to this blog by way of some less-than-shitty code that you posted on code project (it was that CAPTCHA server control). I think the one thing that makes my code less shitty is the example of others.

I copy. I'm a copycat. But I try to copy less shitty code every year.

I'd say that the single biggest thing that has improved me as a programmer is the DotNetNuke project. Just pretending that I'm a compiler, reading that code, has been an exercise in humility.

An interviewer once told me that he sought to hire people based not on their abilities but their capabilities. In other words, not what you're able to do, but what you're able to read and learn in order to be able to do. He must have known that we suck.

Burton Johnson on March 7, 2006 02:13 AM

> Ruby is to Perl what C++ was to C. Ruby improves and simplifies the Perl language (the name "Ruby" is even a tribute to Perl), and adds workable OO features

Huh? So then, C++ "improves and simplifies" C?! C++ took a clean, efficient, albeit somewhat low-level language and turned it into a monster.

I would say that _C#_ is to _C++_ what Ruby/Python/Boo/[insert trendy dynamic OO language here] all are to Perl. They've kept what was good about the language and improved what was bad, all the while making it more modern and useful.

C++'s _intent_ may have been to be an incremental improvement over C (hence its name) but in reality it added complexity and obfuscation to what was (and still is) a darn good language.

Anyway, I'm off track. I couldn't agree more with the premise of the article - the secret to being a good craftsman is continually improving your craft. You are never done learning - especially in Programming.

David Avraamides on March 7, 2006 07:40 AM

Peter Palludan: So because I know that I write shitty software I am a good developer ?
--------------------------------------

Peter, you have to realise that, and _improve_ and write _better_ software the next time round. Good developers are those who progress.

Aaron Seet (icelava) on March 12, 2006 10:28 AM

Steve Yegge's "Tour de Babel" article seems to have moved to http://steve.yegge.googlepages.com/tour-de-babel .

Ah, the joys of linkrot...

Musaran on December 18, 2007 06:00 PM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.