From: "Wes Kussmaul" <wes@village.com>
To: <9fans@cse.psu.edu>
Subject: Re: [9fans] Design and Workmanship
Date: Mon, 15 Sep 2003 10:42:45 -0400 [thread overview]
Message-ID: <0b7701c37b97$a0ef95c0$6400a8c0@dell01> (raw)
In-Reply-To: <200309150633.h8F6XioN015202@ratthing-b246.strakt.com>
Laura,
I found your message quite interesting, so I went to see where you teach and
ended up at Strakt, which I also found interesting.
I'm working on a comprehensive new approach to secure collaborative spaces,
starting with a book that describes the approach. Would you be interested in
reviewing it?
Thanks,
Wes Kussmaul
www.village.com
www.pkipress.com
----- Original Message -----
From: "Laura Creighton" <lac@strakt.com>
To: <9fans@cse.psu.edu>
Cc: <lac@strakt.com>
Sent: Monday, September 15, 2003 2:33 AM
Subject: [9fans] Design and Workmanship
>
> I'm going to use David Pye's defintion here from _The Nature and
> Aesthetic of Design_ and _The Nature and Art of Workmanship_. (These
> books are wonderful to read, byt the way. Pye is a now deceased
> professor of woodworking and architecture who also designed ships
> during ww2. So no computers, in them, but a good language to describe
> the whole creative process. Paperback, reasonably priced, and if
> your csc library has collected the works of Chris Alexander, you
> should try to get them to stock these as well.
>
> According to Pye, 'Design is what you can communicate using words and
> pictures'. 'Workmanship is that which you cannot'. This does not
> mean that you cannot talk _about_ workmanship. Talk about Workmanship
> is called 'technique'. 'The Practice of Programming' is all about
> technique.
>
> But when you draw or write something on paper, and hand it to somebody
> and say 'make this', you are handing him a design. The notion of
> 'and do the job well' is all about workmanship, and generally goes
> without saying.
>
> We are living in a time of mass production. Machines can stamp out
> identical copies of most of the things we live with in whatever
> quantity we desire. But a machine, by defintion, produces _highly
> regulated workmanship_. Somebody designs a machine (and then
> somebody has to make or assemble it with good workmanship, but
> that is forgotten) and then the result comes out. Thus a false
> relationship between 'good work' is a result of 'good design' is
> widely believed. Designers, in all trades, are most victim to this.
>
> They specify a job, and get good work, and soon come to expect that
> people will do the job well. Then comes the day when they use a
> firm which isn't up to the standard they require. All there is to
> do is to request that they do the job over. When the result comes
> back, still shoddy, the designer has nothing to do but throw up his
> hand in despair, and either hire a different firm, or specify something
> within the range of the ability of the people doing the work.
>
> Good Workmanship can overcome modest Design flaws. Poor Wookmanship
> defeats the best in design.
>
> So where does that leave us?
>
> But you don't get to be a good Workman by getting your heads filled
> up with theory. You get to be a good Workman by spending 18 hell
> filled weeks working for Henry Spencer, when you are 18, willing
> to do _anything_ to get a driver into the utzoo kernel. Getting
> up at 4 am to read the v7 kernel _one more time_. And writing
> code, writing code, writing code, and having Henry Spencer and
> Geoff Collyer say 'that's bad' about it a lot. (Thanks Geoff).
> Hanging out with people who already know what good Workmanship
> is, failing to produce it, again, and again, and again, until
> you finally do something worthwhile.
>
> This is the experience csc majors, most of them, come to university
> hoping to get. Something that will make them good programmers.
> Unfortunately, they like everybody else, think that they need to
> become good designers. I don't know how to train good design into
> you. I can teach you to recognise bad workmanship, which generally
> comes with bad Design, and a certain amount of bad Design. But
> good Design? It may be a matter of 'either you've got it or
> you don't'.
>
> Unfortunately, I cannot treat you the way Henry Spencer treated me.
> This will just make you change your major, which I would love, but
> will get me in trouble with the university. I don't know if it
> is true that high school guidance teachers have all conspired to
> take all the smart, lazy, and completely unimaginative people that
> come to their offices wondering what to do in their lives, and
> tell them -- 'Computer Science, that's for you!' but it sure feels
> that way sometimes.
>
> But 'Design Patterns' is misnamed. It would be better named as
> 'Workmanship Patterns'. They are tools. They are things for
> regulating your work. They are like jigs, and vises, and the other
> things you use to make sure that you don't spoil the job as you
> work 'freely'. (Free workmanship == make a mistake and the job is
> ruined. Its opposite Completely Regulated Workmanship == push
> a button, get it done. Again, from David Pye).
>
> Boyd doesn't need them, because Boyd already works to an extremely
> high standard of workmanship, awesomely high, all the time. Boyd is
> also a fine designer. But he couldn't teach us that, much, either.
> He knows how to do it, not how to teach it, curse it all.
>
> But Design Patterns -- and read the Smalltalk one, not the C++ one,
> where half the book is not about the Patterns, but more fruitfully
> titled 'my struggles trying to do polymorphism with the C++ type
> system' (and there are better ways to do that than in the book) --
> is a box of techniques of good Workmanship.
>
> We give them to the students who summer here. And one of the most
> wonderful moments of my life was when I showed this book to a new
> student, and said, the bookstore hasn't delivered yours yet but
> they've arrived ... when he looked at it he said 'I can get to the
> bookstore in 15minutes, and they shut in 30. Let me get it.' I said
> 'no'. He was totally excited. he had to get this book and show it
> to a friend. It had the solution to what was wrong with the engineering
> undergraduate students website and lab registration problem....
>
> (I let him know that he could borrow my book until the delivery happened.)
> He and his friend hacked all weekend, and on Monday it was clear that
> they had hardly slept. But the site was better. They were going to
> refactor it _again_ next weekend, though ....)
>
> That's what its for. If you don't need that, then you won't
> understand, why its so important. But the world is full of people who
> desparately want to improve their workmanship, and _don't even know
> that that is what they are wanting_. More algorithm classes won't
> help them with this, nor will most of the things we teach at
> university. Most progamming problems can be served with very modest
> designs. 'Good rough work' is all you need when you want to take a
> list of your friends, and the pictures of your grandchildren from your
> digtal camera, and mail the second to the first without spending all
> day pasting in your Windows Gui. (I just taught a 70 year old woman
> enough Python to do that).
>
> If you need more regulated work, then DP is a tremendous help.
>
> And if you're an Artist, and want to do perfectly free work, and don't
> screw it up, you will probably get something better than if you just
> use good workmanship to properly assemble known components. Might
> be harder to maintain, though.
>
> Sorry for those of you I bored with my ramblings...
>
> Laura
>
>
>
next prev parent reply other threads:[~2003-09-15 14:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-15 6:33 Laura Creighton
2003-09-15 8:41 ` boyd, rounin
2003-09-15 16:02 ` Dan Cross
2003-09-15 19:52 ` boyd, rounin
2003-09-16 15:13 ` Dan Cross
2003-09-16 15:18 ` mirtchov
2003-09-16 23:44 ` boyd, rounin
2003-09-15 14:42 ` Wes Kussmaul [this message]
2003-09-15 6:59 Tiit Lankots
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='0b7701c37b97$a0ef95c0$6400a8c0@dell01' \
--to=wes@village.com \
--cc=9fans@cse.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).