Skip to content

Latest commit

 

History

History
65 lines (55 loc) · 3.01 KB

2009-09-24-on_smart_boys_in_programming.textile

File metadata and controls

65 lines (55 loc) · 3.01 KB
title tags
Joel, duct tape is just one of the tools we have.
smart boys
over-engineering
duct tape
lazy
bdd
tdd
testing
delivery

I used to really like what you write ‘on software’ – now I start really
hating it. But that is more useful, because you always get me to think.

The guy with the
duct tape – I would hate
his guts if he was on my team.1 The little stunt with prev and next
pointers of a linked list rolled into 32bits using XOR – nice. But very
immature
. If that guy goes missing, you can basically scrap his code and
start again. That is not very much better than using multiple inheritance2
and multithreaded COM.

You are missing a point. The point is not to deliver software, at least not
only, but to deliver working software. There are really just two possible
outcomes: Either the thing you’re creating works half-way, or it doesn’t.3
If it works half-way, you (or someone else) will have to work on it for the
whole of its lifetime (ambiguity intended). And the customer doesn’t want old
bugs cropping up again and again. And he wont listen to you if you talk about
duct tape. He doesn’t care.

Duct tape is just one of the tools we have. And as such, it needs to be
applied where appropriate. Anyone claiming one tool to be vastly better than
all the others is just wrong, whatever the tool. Your smart boy should learn
to write code that others can read and maintain. Then he’s got a real future
in software development.

I think that every talented programmer starts out as duct-tape guy. And then
some of the things he tapes together come crashing down on him (or on the
customer). And then he learns. But the dichotomy you’re proposing is wrong,
its not either duct-tape or over-engineering. IMHO, there is a lot of middle
ground. Just as an example (one is enough) – TDD/BDD practice is to ‘do the
simplest thing that can possibly work’. This one sentence has saved me years
of mental effort that would ultimately have been invisible to the customer.

The real work is to write working software. Over-engineering and building
a second system
is just (busy-work) work evasion. But the duct tape approach is evading work
as well, by being lazy in the sort of way clever people are.

What I’ve been wondering. Are you doing Jamie Zawinski any kind of justice
with your article?

1 ‘Hate his guts’ is just more colorful than ‘take issues with’ – No, I
wouldn’t hate anyones guts. That is very rare.

2 I guess that is just a typo.

3 About one third of IT projects get cancelled before completing. The other
two thirds sometimes overrun their budget by as much as twice the original
estimate. (ie: ‘The Standish Group Report’, The Standish Group, 1995.
pdf) We can’t pretend
this isn’t happening and we need to feel responsible for the state of the
industry.