Phil Suh wrote:

> an interesting interview with kent beck of XP(extreme programming) fame, 
> and alan cooper, the father of interaction design.
> 
> http://www.fawcette.com/interviews/beck_cooper/                                 

I think both Beck and Cooper have good ideas, but I really have to say,
Beck gets the worse of this argument. I really liked Extreme Programming
Explained the first time I read it, but after talking to a bunch of XP
people and reading a bunch of commentaries on it, the attitude that they
have The Answer has started to really annoy me.

Here's my critique of the two approaches -

XP - there's one central, good idea in XP, which is that it's possible to
keep the cost of changing a piece of software under control. At least,
that's what the first chapter of XP explained says, the rest of it is
mostly about completely unrelated things which it claims are part of The
Process but are actually completely irrelevant. The ideas which *are*
correct are simple design, unit tests, and merciless refactoring.
Merciless refactoring I do all the time, for the same reason that I flush
every time I take a shit - maybe I could save some water by waiting till
later, but I do it anyway -

http://advogato.com/article/215.html

Unit tests, and particularly the suggestion that unit tests should be
pass/fail, have been an invaluable suggestion to me, but unfortunately
I've never seen any concrete advice about how to actually write tests, and
my impression is that no two people do it in quite the same way.

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/bittorrent/BitTorrent/BitTorrent/bencode.py?rev=1.3&content-type=text/vnd.viewcvs-markup
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/bittorrent/BitTorrent/BitTorrent/PublisherChoker.py?rev=1.8&content-type=text/vnd.viewcvs-markup

(scroll down in those two urls and you'll see lots of functions which
start with 'test', that's test code)

Simple design is a good start, but is far from the end-all and be-all of
writing maintainable code that Beck makes it out to be -

http://advogato.com/article/258.html

In particular, the book Refactoring displays a complete lack of the
concept of getting preconditions under control, and it's concepts of
encapsulation are very weak - there's a ton of inheritance and repeated
implicit assuming that there must be a 1-1 correlation between classes and
units, which is wrong.

Interaction design, laudably, does not claim to be The Answer, but does
claim to be an important part of hopefully someday making software not
suck, and that claim I believe is correct. The basic premise that most
software has a 'UI designer' thrown on at the end after all fundamental
concepts in the user interaction have been ossified is completely correct. 

The claim of Cooper's which I disagree with is that it's impossible for
programmers to do interaction design. Predictably, I say this because *I*
can do it :-). Seriously, if you read _The Inmates are Running The Asylum_
it makes a very good argument for how programmers love complexity and
hence are completely unsuited to the task of making interfaces simple. I'm
anomalous in that I absolutely hate complexity, to the point where I won't
even do basic system administration because I find it's unnecessary
difficulty revolting.

I mention this not to brag, but because this attitude is not only
something which programmers generally should be ashamed of, but is
actively harmful to their programming is well. Programmers design APIs the
same way they design UIs - complicated, quirky, and they call the users
winers when reasonable objections are raised.

Well, that's my $2 anyway (seems a bit long for just two cents).

-Bram Cohen


_______________________________________________
Bits mailing list
[EMAIL PROTECTED]
http://www.sugoi.org/mailman/listinfo/bits

Reply via email to