9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
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
>
>
>



  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).