development

Duct Taping For the Win

October 6, 2009 6:35:49.974

I read Joel Spolsky's "Duct Tape Programmer" article awhile back, but didn't really give it much thought. Apparently, I was the only one out here like that. I was reading Gordon Weakliem's response today, and he mentioned Bob Martin. Now, I had serious differences with Bob Martin's keynote at RailsConf - he only got his facts and history wrong, so maybe I should have lightened up :)

However, one of the points Joel made (and I happen to agree with) iis that you should avoid overly complex tools and procedures - and based on that, he advises staying away from COM and a bunch of C++ stuff. To which Bob Martin replies:

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.

That's a nice sentiment, but it's useful to peer behind the curtain and look at what Martin actually uses: Ruby. He doesn't just use Ruby though; he promotes it like nobody's business. Given that he used to be a big C++ developer, I think that speaks volumes. He's decided that perhaps all of those technologies are a bit more complex than he'd like, and adjusted his own world accordingly. Maybe his years spent in the overly complex labrynth of C++ make him defensive on the subject, I don't know. Look at what he does rather than what he says though; he implicitly agrees with Joel on that.

If you follow the threads from Gordon's post over to Peter Siebel, you'll find a good summation of one of my other hobby horses over the years: rewrites, and why they are a bad idea. It's not hard to understand why rewrites are a bad idea; to shorten it downa lot:

  • It took you N man years to write what you have
  • It will take you N man years to rewrite. Sure, you know the domain now, but it doesn't matter
  • During those N man years, your existing product will stand still in the market
  • When you finish with the rewrite, you'll be back where you started, but N man years later

Everyone who believes that there's no harm in standing still for a significant period of time, raise their hands? Right, you three can be the next bad example over at TheDailyWTF. The rest of us will be over here, being productive and making money :)

Comments

N years?

[Mike] October 6, 2009 21:02:38.146

  1. Why does having a background in C++ "speak volumes"?   Most of the programs you would use on a daily basis are probably written in C++ and C.   The strongtalk VM is written in C++.  The Visualworks VM is written in C.  Does that "speak volumes" for smalltalk and it's VM programmers as well?

  2. How is it that you feel you can criticise anyone about the rewrites.  What was the name of that complete rewrite of the VisualWorks GUI framwwork again?  You know.  The one that you oversaw.  The one that you spent 5 years developing, or was it longer, only to throw it away.  Completely screwing any number of people in the process.  Standing completely still.  And yet here you are acting like God's gift to common sense: "being productive and making money".  Here you are claiming that NOT doing rewrites is "one of your favorite hobby horses"

Sickening stuff.  As usual.

 

 

Something I learned from

[James Robertson] October 6, 2009 21:25:24.553

The way Pollock played out is one of the best arguments for why rewrites are a bad idea - multiple years to create a framework that put us back where we started, but without any tools. Pretty much a prime example of what not to do, IMHO, and one I've learned from.

As to my comment about C++, what meant was this: Bob Martin claimed that developers should understand all this really complex stuff... that he made a very dramatic move away from. The move away from it is what I think speaks volumes.

rewrite

[Chuck] October 8, 2009 23:09:40.209

Which is exactly why good design & coding practices are essential: to try to avoid that situation where the only seemingly realistic option is a rewrite.