Fog Creek Software
Discussion Board




Design patterns

I've been reading quite a bit about design patterns, namely software design patterns, interface design patterns and concurrent communication patterns.

I feel that in writing these books, along with making v. good source code available online, the authors are pursueing a very noble course indeed: to improve software... =)

i.e: for those readers who actually make use of them in their projects of course... hehe

Opinions anybody?

Wei
Wednesday, January 08, 2003

It's true. All of it.
Anything else you wanted here?

X. J. Scott
Thursday, January 09, 2003

Wei, let me let you in on a couple of secrets of the industry early in your career.

Neither creating software nor writing about it (even well) are any more noble than flipping burgers at the corner fast-food outlet.

Computer Science is neither science nor programming.

Software engineering is a marketing term(kind of like .NET) invented some decades ago that stuck. But really it has absolutely nothing to do with engineering.

There are a few others but you'll learn them eventually.

SM
Thursday, January 09, 2003

SM said, "Neither creating software nor writing about it (even well) are any more noble than flipping burgers at the corner fast-food outlet."

I disagree with such an analogy.  Not that I'm big on "status" or gaining nobility points.  But creative software solutions that utilize the computer as a tool to help solve real problems can definately achieve better value than flipping the biggest burger.

The really great programmer's I've met exude an excitement and passion for working with software, to mold and construct, and apply complex forms of logic and thought into a somewhat tangible creation.  The nobility stems from these individuals which must contain some level of high moral qualities in their work.  Since they also most probably have a greater impact on the world around them then the lonely person flipping a burger.

Sharing your source code and knowledge with the community puts you out to be an easy target.  It can take some courage to show the world what you've done.  Most people choose not to.  To aid in the progress of the community as a whole, by contributing your work, is IMHO a benevolent gesture.  That's exactly how the community of pure science operates.

sedwo
Thursday, January 09, 2003

sedwo - I think we have somewhat different definitions of noble.

In the last several years I have been answering questions, writing sample code, etc. over the course of hundreds (possibly thousands) of hours for various lists/newsgroups/forums, all for free. But this involves not even one iota of nobility since I love solving problems, and teaching people who are interested in learning, and this gives me one outlet to indulge myself. It also helps me to some extent in my professional endeavours(and probably strokes my ego to a certain extent as well).

Einstein (substitute your favourite scientist here) did brilliant work most of his life, all publicly published, all for the furtherance of our understanding of nature. But was he noble for this undertaking? I think not. He did it because he loved it, it gave him status and income and to a small extent because he felt it was a contribution to the greater good. Now if he disliked it and gave up a more lucrative career path that he might have enjoyed because he truly felt he must contribute to the greater good then you could assign some(perhaps considerable) nobilty to him. But it isn't automatic just because he was doing physics rather than dog walking.

Nobility is in the action and motivation not the subject itself.

The flip side of this is that just because something is not a noble undetaking does not mean it is not a worthy, possibly even awesome, path to follow.

SM
Thursday, January 09, 2003

Humble people flipping burgers throughout the world, put junk food into people's bellys so that those people are freed from having to prepare their own meals and can use the time for the greater good of mankind...



...or watching television.

John Topley
Thursday, January 09, 2003

SM, I guess the issue of nobility depends on your perspective. While your actions may not seem to be so from your point of view, I would deem them to be somewhat noble.  You could have spent your time using your problem solving talents elsewhere on other matters; but instead choose to help others in their efforts.

Nobility - as in having high moral qualities.

The sharing of your knowledge and time for the sake of others does infringe on this.  And a pat on the ego isn't all that bad once in a while.

I, sedwo, by the powers of the universe invested in me, and a mere mortal, deem you, SM, as "noble".

Now you may go and have your burger.

sedwo
Thursday, January 09, 2003

OK you win - I'm on my way to a fitting for my coronet right now. I'll eat my burger in front of the TV when I get back.

SM
Thursday, January 09, 2003

How does releasing source code reduce the size of your chin and gene pool.

Or is this just the british perspective of 'noble'

Ged Byrne
Thursday, January 09, 2003

There's lots of selfish reasons to write a book on software design.

At least one of the authors of Design Patterns is a college professor.  And, as we know, being a professor is a matter of "publish or perish".  Not that I would be able to explain anybody's particular actions.

Design Patterns is a very good book, but people sometimes miss one the points.  Any particularly savvy programming technique developed *should* be documented.  So, while DP is quite a good grimore of useful object design patterns, every good programmer probably could generate one or more extra patterns themselves, document them, and share them with others.

Larry Wall considers laziness and hubris two of the virtues of a programmer.  Patterns reflect this.  Laziness because you only want to solve a problem once and hubris because you are egocentric enough to think that other folk would appreciate your wisdom.

w.h.
Thursday, January 09, 2003

Someone recently used the Phrase to the effect that you should
"Code so that you have to get it right only once."  I would say that is the golden rule of software engineering.

Adam Young
Thursday, January 09, 2003

Design Patterns are *discovered*, not created.  Design Patterns are those techniques which have been found to be successful in several organizations and systems, not a savvy technique somebody invents and calls it a pattern.  If you recently invented it, by definition it isn't a pattern (yet) ... because it hasn't been proven to be useful across a number of systems.

The authors of "Design Patterns" didn't invent the patterns, they only observed and documented them.

T. Norman
Thursday, January 09, 2003

"How does releasing source code reduce the size of your chin and gene pool."

Simple: either you do it commercially and get vast amounts of money, whereupon you either marry into nobility if you are American, or get on to the honours list if you are British, since the British upper class, like some bloated fish lying with its mouth open on the bottom of the seabed, needs regular linjections of green matter.

Alternatively you release the code for free, get a reputation for altruism, and get one of the "people's nominations" to the Honours List, which were devised so it wasn't so obvious how that money and family are the only things that matter.

In the egalitarian States of course, you don't come a member of the aristocracy - you simply get invited to join the right clubs.

Stephen Jones
Friday, January 10, 2003

SM, you are such a weenie. 

wei, I agree wholeheartedly with your original post, and if your interested, 2 great books that have been published within the last quarter are:

Agile Software Development by Robert Martin
http://www.amazon.com/exec/obidos/ASIN/0135974445/ref=nosim/joelonsoftware/

Patterns of Enterprise Application Architecture
http://www.amazon.com/exec/obidos/ASIN/0321127420/ref=nosim/joelonsoftware/

Guy Incognito
Friday, January 10, 2003

That's Lord Weenie of Buffington-Whingely, sir!

The two books you recommend are indeed worth a read but I'm not sure what they have to do with the topic of this post. The original poster asked for opinions on the nobility of those who write books about software development and make source code(presumably to illustrate the concepts in the books) freely available.

Slightly of topic - what does weenie mean these days? It used to be either a synonym for nerd or a euphimism for penis used by 6 year olds. But in a computer oriented forum the nerd usage wouldn't be much of an insult and the penis one is just too weak to be used by any reasonable person. So I assume there must be something more to it these days.

SM
Saturday, January 11, 2003

=)

Wei
Sunday, January 12, 2003

SM, it is improper to use a title when referring to oneself.

Of course, correcting another person's manners is the etiquette equivalent of triple murder with a chainsaw, but that's not relevant here because I'm the one doing the correcting.

Fernanda Stickpot
Monday, January 13, 2003

Fernanda is correct. SM should really sign him/herself "Buffington-Whingely".

Westminster
Monday, January 13, 2003

*  Recent Topics

*  Fog Creek Home