[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ::scr Re: Cognitive Friction



Andy Wardley said:
> Unfortunately, many people simply apply a methodology expected it to
> design them a nice house or functional piece of software without
> having to engage any grey matter of their own.

On Wed, Jan 02, 2002 at 11:09:21AM +0000, simon wistow wrote:
> But isn't that what programmers do all the time? 

[...]

> We write programs that follow a methodology - there's nothing else a
> program can do - to perform a task. 

I think we're talking about different aspects of the same game here.  

What you're describing are algorithms.  It is indeed true that any 
Turing complete machine/language can implement any algorithm that any
other Turing machine can implement.  In other words, the only different
between programming language A and programming language B is syntax.

On the other hand, a methodology typically describes an algorithm-like
construct which is intended for humans to follow.  Structured programming,
SSADM, OOADM, etc., are all methodologies that have claimed to be the silver 
bullet over the last 40 years that will solve all our software problems and 
make it easier to write computer problems.

They don't.  They deliver late, over-budget, buggy systems precisely because
they try to isolate the human element and remove any need to think from the
day-to-day duties of the grunts.  It's Taylorism gone mad  (Fred Taylor was
the father of scientific management who famously declared "Leave your brain
outside and bring your body indoors").

Now, Extreme Programming is an interesting one.  The crux of this methodology
is pretty simple, intended to bring back the human touch to programming.
It says things like "be human", "use your brain", "2 heads are better than 
1", and "prove it works by testing it".  Smart people have been doing this
all along.  Some of the smart people who weren't doing it thought "Oh, that's
a good idea!" and adopted some of the techniques for themselves. 

But the code monkeys said "Oooh look!  A new methodology.  It is Good.
We shall follow this methodology.  But first, master, tell us, how shall 
we follow this methodology?  How shall we go about thinking for ourselves?"

I think Design Patterns are interesting because they fit somewhere between
the two.  In some cases, design patterns are pretty much the same thing as 
algorithms.  In other cases, DP's sit at a slightly higher-level and could
be implemented by a number of different algorithms.

Smart people like Design Patterns because they're linguistic placeholders
for things that they already understand.  


A