Geeks With Blogs
// ThomasWeller C#/.NET software development, software integrity, life as a freelancer, and all the rest

Lately, there was a blog post by Joel Spolsky called "The Duct Tape Programmer", which is very opinionated and caused quite a lot of responses and discussions in the blogosphere. Basically, this post contrasted the duct tape worldview of developing software to the astronaut architect's, forcing programmers to decide between quick-and-dirty solutions on the one side and analysis paralysis on the other. The replies that I like most, are by (Uncle) Bob Martin, Ayende and Jeffrey Palermo. I think they make the problem clear (which the original post doesn't...) and vote for a more rational view on it. These are my additional thoughts in reply to Joel's original post.

Are programmers idiots ?

By one paragraph in Joel's post, I felt especially insulted:

One principle duct tape programmers understand well is that any kind of coding technique that’s even slightly complicated is going to doom your project. Duct tape programmers tend to avoid C++, templates, multiple inheritance, multithreading, COM, CORBA, and a host of other technologies that are all totally reasonable, when you think long and hard about them, but are, honestly, just a little bit too hard for the human brain.

So the average programmer is a sheer idiot not being able to cope with even "slightly complex" things? Frankly, Joel, who do you think you are? Do you really think there are only idiots in your part of the globe, and you are the only enlightened human being between them?!

Write bad code or none at all ?

As I said before, the blog post basically makes the point that a developer has the choice between writing quick-and-dirty ("duct tape") code to deliver on time, or being lost in over-complexity and never reaching a point where the software can be shipped. But Joel: There's a world between messy code and analysis paralysis. Most of us idiots live in there, working hard to figure out the best trade-off between the two extremes for every individual project.

Duct tape blogging!

All in all, the original blog post is quite confused in his thoughts and highly abusive in its language. It's a perfect example for what I would call "Duct tape blogging": Spit out some crap that somehow fits the productivity bill in a very short-sighted view, and don't use your brain too much to think towards the end - it might get too complex, so you better don't even try...

In my opinion, Joel's post casts a very poor light on our profession. I don't want to be identified with the post or the person who wrote it...

Posted on Wednesday, September 30, 2009 8:25 AM Architecture and Design , General programming/C# | Back to top

Comments on this post: Duct Tape Programming? - Certainly not THAT way...

# re: Duct Tape Programming? - Certainly not THAT way...
Requesting Gravatar...
Joel is nothing more than a Salesman. I have worked for one before and this is all too familiar. Do not take his postings about how to code seriously. I've been in IT 11 years and I've seen it all. I've seen waterfall, agile, and code & run.

Business expects this, you trim..but you don't trim off organization of code, smart naming of files, variables, classes, methods. Ensuring your architecture is reusable and readable, etc. Sure there are developers who go overboard with things...but to say everyone who cares about standards and not going so fast is over architecting is just stupidity in itself and that statement shows how naive someone is who would say and automatically assume that as a cop out and excuse to go to code & run.
Certainly, I would never suggest code & run slop as an excuse that the business needs it now so just code dirty and code fast.

The excuse that the "business doesn't care about perfection" is a lame argument. We're not looking for perfect code. Just clean. And ability to THINK about how we are coding our applications.

Any idiot would argue that duck taping is the way to go. Anyone with smarts would say slow down a bit, take an iterative approach, work hard but don't compromise quality because later the business WILL care when they have to refactor an application or have to pay more $$ for programmers to try to understand wtf is going on in the PILE that was created over x years....sifting through slop just so you can figure out wtf is going on. You talk about costs!

I could go on and on. It's lame, and unfortunately code & run mentality is alive in IT which is unfortunately the downfall of IT and why I don't enjoy it in many of the shops I have been.

I've been to shops that don't over architect and they don't apply code & run. They apply balance and that's what you do. You don't run. You don't overarchitect. But you certainly don't run.
Left by Dave Schinkel on Oct 08, 2009 4:33 AM

# re: Duct Tape Programming? - Certainly not THAT way...
Requesting Gravatar...
>>So the average programmer is a sheer idiot not being able to cope with even "slightly complex" things?

Actually, in my part of the world, that's true - because the average programmer is a fresh grad with zero practical programming experience whose only programming language is the Java/VB/C# which he learned to code procedurally in school. The typical code shop consists of one PM, one senior software engineer/developer/consultant (this job title lets the company can charge more for its services) with 2+ years of experience, and 5 to 10 developers/consultants (who are really fresh graduates with 0 programming experience).

You can produce great code that is clear, well-designed and exploit what the language/platform can do, but most of the guys who come after you will not have the experience to maintain the code once you leave the project/job/shop.
Left by Calvin on Oct 29, 2009 8:39 PM

# re: Duct Tape Programming? - Certainly not THAT way...
Requesting Gravatar...

I totally agree with you that there are many morons out there who will mess up anything that goes through their hands. Almost every team has such 'experts', as I know very well (and some of them even get _very_ high incomes, just because they know how to correctly pronounce some buzzwords...).

But is 'delivering only stupid things' the solution?
Left by Thomas Weller on Nov 01, 2009 11:13 AM

# re: Duct Tape Programming? - Certainly not THAT way...
Requesting Gravatar...

I think it is not about "delivering only stupid things", but when you know that the standard of programming (of the project team) is very low, you are ethically constrained to keep things simple. In general, this means sticking to basic procedural programming concepts, only using OO when absolutely necessary, and never using advanced capabilities of the hardware/software/platform that you are working on.

That's not to say I don't violate this rule fairly often myself. Sometimes a concept or advanced feature is just too interesting or compelling, and I'm feeling too frustrated with the working environment that I throw ethics to the wind and indulge myself, even though I know that once I leave the project my successors have no way of maintaining the advanced code.

It's not that I never tried to train or educate my juniors, but many of them were just not interested. In addition, my attempts to educate said juniors were quite often nixed by my PMs. I wasn't being productive ... was the excuse they typically used.

One end result of all this, is that code re-use often meant cut and paste programming. Obviously, if a bug appeared in a "re-used" section of code, it would have to be fixed across the umpteen files where it was duplicated. At least in theory. In practice, most users almost never hit bugs like these because they almost never used the other functions where these bugs appeared.

From prior experience (in the environments I worked anyway), the KISS principle means that code for version 1 of a new application should be dumbed down as much as possible in order to deliver the project on time. Given that deadlines tend to be unrealistic, only 10% of the features demanded by users are actually used regularly, and at least half of the features are never used at all (plus limited skills of the programming team), duct tape programming is what you (or your team) end up doing whether you like it or not.

Hmm, wait! It does sound like "delivering only stupid things" is the solution. At least when your managers pay peanuts to get monkeys as programmers.

I hate to say it, but I'm starting to think that programmers and IT project managers should be licensed like architects, doctors and lawyers. Otherwise every IT project team will end up "delivering only stupid things".
Left by Calvin on Nov 08, 2009 5:35 PM

Your comment:
 (will show your gravatar)

Copyright © Thomas Weller | Powered by: