Duct Taping For the Win
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
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.