Duct Tape on My Mind · 5 October, 08:54 PM

The problem with reading too many blogs is that after you read enough on the same subject, you’ve walked away with so many conflicts and contradictions that the net effect is that after tens of thousands of words, nothing is actually said. Duct Tape Programmer, anyone?

Some people just have trouble getting Joel’s conclusion. For example, Dare says in culture of complexity that “it’s OK to create a solution that solves 80% of the problem”. No it’s not, wrote Joel a long time ago.

“Convenient though it would be if it were true, Mozilla [Netscape 1.0] is not big because it’s full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. But being a shining jewel of perfection was not a goal when we wrote Mozilla.”

That’s in quotes because Joel was quoting somebody there. He was quoting JWZ. So the wrong conclusion to draw from Joel’s message is that “it’s OK to ship an 80% solution”.

Then Bob Martin opines “I found myself annoyed at Joel’s notion that most programmers aren’t smart enough to use templates, design patterns, multi-threading, COM, etc. I don’t think that’s the case. I think that any programmer that’s not smart enough to use tools like that is probably not smart enough to be a programmer period.” To which I say oh, really?

My exercise to you, commenter “foo”, is to come up with a list of all bugs in IUnknown::QueryInterface which Windows should enforce and describe how to enforce it. (If your response is “You should have designed it differently so these bugs are impossible to write”, please outline that alternate bug-resistant design. Remember that your design must be language-independent, while still supporting things like tear-offs, aggregation, and remote objects. Oh and it needs to work on typical PC-class computers of the early 1990’s, which ran at 25MHz with 4MB of memory.)

Is it just me, or does Raymond’s summation of COM’s design constraints sound something like “be everything to everyone”? So, no, COM doesn’t seem to fit anywhere into the duct tape programmer’s toolbox. But on the other hand, COM is definitely not an 80% solution. More like a 110% solution. Either way, I don’t feel dumb for not remembering enough COM to fill a postage stamp.

Now, there’s Tim Bray’s opinion, which is mostly a defense of unit testing. But I’ll just note that JWZ didn’t say that unit tests are a waste of time, just that he was under such intense time pressure that he didn’t have time to write many. So Joel’s really out on his own here. On the other hand, Tim readily admits that he hasn’t read the JWZ interview that Joel’s enthusing over, so maybe his opinion shouldn’t count for much.

But at this point, I really have to ask what the fuck is a “duct tape programmer” anyway? It sounds suspiciously like marketing bullshit for people who are chronically predisposed to despise marketing types. Yet we, programmers, do this to ourselves constantly. In spite of hearing and acknowledging for years that there is no silver bullet, there’s never a shortage of people who should know better proclaiming a silver bullet, or silver adhesive-backed cloth in this case. Judging by the stats in Google Reader (something over 100 people “liked” Joel’s article), we’re back here again. So maybe we should get a real definition of a DTP:

Screeching tires. Wait a minute. Didn’t I just say that 80% wasn’t good enough? Or rather, Joel said that. JWZ did too. Another conclusion negated. So let’s say that there’s some middle ground out there, or maybe an extreme… either 50% or 99%.

All these words and nothing is learned. Surely there must be something to learn here. How about looking in the conclusion of Joel’s piece… oh yes, here it is: “duct tape programmers are the software world equivalent of pretty boys”. That’s it, they’re born that way. Useful conclusion, that.

The thing is, I’d guess that JWZ agrees with me, as did Peter Siebel. Peter’s take seems to be the better summation. JWZ was speaking about his time at Netscape in the context of that time and the conditions of the time. Recall that in 1994, even just limiting yourself to the Windows platform, Microsoft and Borland had different ideas about how to do window message mapping. And JWZ’s not holding up Netscape as a model of quality code either. Speaking about maintaining quality in the code base: “Well, the way we dealt with that was badly. There’s never a time to start over and rewrite it. And it’s never a good idea to start over and rewrite it.”

There’s also another lesson about going back to the original sources when commenting on a subject, but I’ll leave that alone.

— Gordon Weakliem

---

Comment

  1. I was going to write a blog post in response but I realized that would take too long. I find it a bit amusing that you back up “it isn’t OK to ship 80%” solutions with an argument from authority from a blog when I used an actual real world example of Xanadu versus the World Wide Web. There are dozens of examples from reality of products that solve 80% of the problem that become massive hits while “seemingly” more complete solutions languish. Apple has done this repeatedly with the iPod (remember Cmdr Taco’s infamous review on Slashdot?) and even the original iPhone (no 3G, no native apps, no Exchange support, WTF?).

    Dare Obasanjo · Oct 8, 04:08 AM · #

  2. Dare, I actually completely agree with you (that is the name of the blog after all). “Worse is better” is one of my favorite essays on programming. What I’m really arguing is that Joel’s saying nothing – it’s a criticism of the “duct tape programmer” essay. In the end, his own writing doesn’t back up his hero-worship of JWZ, and I find it funny that JWZ seems bemused by the whole thing.

    Gordon Weakliem · Oct 11, 02:35 PM · #

Commenting is closed for this article.