Okay, so you are out PatternMining
. Where is a good place to start looking? ChristopherAlexander
tells us (in TheTimelessWayOfBuilding
) to look for things with that Quality Without A Name
What software systems do we know of that approach
A Quality Without A Name
? Those listed as a SoftwareMasterpiece
I think that the following attributes will be addressed well in
software system, regardless of whether it's a code library, toolkit or end-user product.
- Usability - Is the system something that people enjoy using? Would they miss it if it was no longer available?
- Readability - Is the intent of the system clear and well presented?
- Configurability - Can the user adapt the system to his or her needs?
- Profoundness - Does the system strike the user as special or unique, but at the same time, insightful and correct? For this I would prefer the term 'Resonance': at all sorts of levels it rings true. Why not brilliance? After all, the most commonly used sense in this context is sight. (Damn audio thinkers...) :)
Note that in TheNatureOfOrder
, written more than twenty years after TheTimelessWayOfBuilding
gives a name to what he used to call "the quality without a name": wholeness
Why are you calling this "Quality without a Name"?, shouldn't just Quality be a good name?
I really think this is too metaphorical to be actually useful. Maybe if somebody explained what this quality is and how it is used giving an example, it would be easier to grasp.
We're doing important work here! We're evolving a mythos for mythless programmers
As to explaining
QWAN, it can't be done: It's the work of the ineffable Goddess QwanYin
! -- PaulTaney
's book PatternsOfSoftware
himself, who wrote the preface) wrote much about this, for instance p. 140 "In ZenAndTheArtOfMotorcycleMaintenance
1972?) we learn that there is a point you reach in tightening a nut, where you know that to tighten just a little more might strip the thread, but to leave it slightly looser would risk having the hut coming off from vibration. If you've worked with your hands a lot, you know what this means, but the advice itself is meaningless. There is a zen to writing, and, like ordinary zen, its simply stated truths are meaningless unless you already understand them -- and often it takes years to do that.''
So any explanation of such things can only work if it reminds you of your own experience on such a thing. If you have none, no explanation can communicate it to you.
Nor is this some kind of airy-fairy mysticism; it is utterly commonplace. For instance, no amount of explaining of the topics of either sex or love will make either understood to someone who hasn't experienced them.
I'd like to see the word "invisibility" in such lists, used in this special sense. Think of modern plumbing systems in comparison with Roman aqueducts. Modern plumbing is higher quality because its buried in the woodwork and never noticed; invisible...until it breaks. Conversely the Romans built their plumbing to be noticed; to impress. Thus the (a?) difference between immature and mature technology is that mature ones tend to disappear... in the above sense. -- BradCox
- for more on invisibility in maturing technology, see http://world.std.com/~uieweb/market.htm
No, this is not what QualityWithoutaName
means. QWAN is the quality of living things. Living things are never readable, and often not usable for most of the world. They are configurable and profound. I think something like Emacs exhibits the QWAN more than something like CM-FORTH. CM-FORTH was designed by an expert; Emacs was designed by a community that shared a pattern language, and it evolved over decades, constantly changing and being reinvented. QWAN comes from piecemeal growth, not master plans. QWAN is primarily about life, and only secondarily about beauty.
There are two things that I've found supremely valuable in the patterns movement: the sharing of knowledge and experience, and the freedom to discuss software in these terms: "life", "beauty".
A recruiter asked me once what was the achievement of which I had been most proud, and I gave some terrible waffly answer about some project or other. But thinking about it afterwards, the answer really is: when I received some appraisal feedback from a colleague I greatly respected stating that "Keith has a highly developed sense of technical aesthetics". That may or may not be true, but that someone thinks so is nice, and that I was then working in an environment where people felt able to express themselves that way was even better. -- KeithBraithwaite
I believe there is a big difference between QualityWithoutaName
and Quality. Items in the real world exhibit QualityWithoutaName
. They have a use or an esthetic that communicates itself to people. Once the person realizes the Quality and names it, it becomes a QualityWithaName?
. This QualityWithaName?
represents the QualityWithoutaName
, but is not the same.
For instance, suppose I had an idea. I think it's a good idea, so I communicate it to you. However, I use words to communicate that idea. You read the words and from it formulate a new idea. That idea is very similar to mine, but it is different. I have no way of communicating the exact idea to you. In fact, there may be no way for you to even represent the exact idea in your brain.
In the same way, an item (or a piece of code) can have a QualityWithoutaName
. It may communicate an analogous Quality in our head, but that Quality is a reproduction, not the source.
So why is this important? When we are PatternMining
, we are searching for a QualityWithoutaName
. That is, a Quality that is intrinsic to the code, or problem, or whatever. We are not searching for a solution. A solution is an artifact of our own brain and thus is not directly related to the real life situation. We want to create our patterns from the source, not a copy.
Talking about beauty. I like to think that software that has the QualityWithoutaName
is beautiful in some sense. The user interface certainly can be beautiful but for the architect and the programmer it is more the logical structures and the interaction of objects or modules that has beauty.
QWAN? I'm sorry but this doesn't make sense. I think Alexander is trying to invoke an instinctive aesthetic, which is reasonable, but I think one needs to be careful about making this an objective aesthetic, which I don't believe in. -- RichardHenderson
What's public so far about Alexander's soon (as in RealSoonNow
) to be published work TheNatureOfOrder
suggests that he is now, and maybe always was, very definitely talking about a objective, quantifiable even, notion of Quality.
Do you know of software that meets this criteria?
(Yes, this will be a very subjective
collection of lists!)
- DonKnuth's TeX typesetting system (as presented in TexTheProgram and TheTexBook): Initially confusing, but many of those who stick it out, it is an elegant and powerful tool. It can be frustrating at times, but I keep coming back for more. The source code is also a gold mine for programming techniques and algorithms.
- Smalltalk-80: Inspiring. Elegant. Thought-provoking.
- CM-FORTH. Chuck Moore's FORTH for his Novix FORTH microprocessor: Tight. Very small. Clean. Fast.
I'm not so sure about TeX - I used TeX heavily for quite a while, wrote macro packages for plain TeX and LaTex
, etc. The variable and rich lexical syntax gets in the way of using the system, in my opinion. LaTex
tries to overcome some of this, so that you can focus on what you are doing, but still at times you must delve into the lower levels.
This may not go over well, but I believe that a certain subset of Adobe's current products have "the quality". Illustrator 8.0 and PhotoShop
5.0 are so well thought out in their user interaction, so orthogonal, that it just feels good to sit down and use them.
5.5 doesn't fit into this yet; it has much more of the feel of TeX, with many ways of doing things; you must master a great deal of arcane knowledge to use the system.
Years back, James Gosling's Unix Emacs
clone hit these buttons for me. (EmacsHasQwan
) These days, exploration of Smalltalk-80 and its descendants continues to reveal deep, pleasing profundities.
A couple of years ago, I created a small framework in C++. For over 2 months, I iterated over the design and code, laboriously trying to achieve some quality
that "felt right." I succeeded, for the most part, and then had to put it all aside. Then
I discovered the GoF book and software patterns in general.
I know that code has traces of the Quality in there somewhere. I think it's time to go dig them out. I'll probably find already documented patterns. If I find other solutions that bring about the "peace of resolution of the forces" involved, I'll document them here on Wiki in hopes that out there somewhere, someone else has done the same thing. And a pattern will be born.
(It seems to me that the QualityWithoutaName
One of the early influences that took me into patterns was TomBurrows?
' work on a proprietary language called Astra.
Astra was a reaction to the reductionism of Smalltalk and C++, and more generally to the reductionist nature of JohnVonNeumann
's computational model. The language was influenced by diverse drivers:
- Our customers needed ultra-reliable, fault-tolerant, software that could be updated in real time
- Many of the people in the organization followed tenets of ZenBuddhism, and in particular, the Madhyamika school
- Graphical interfaces were an important novelty of that era
In the spirit of the Zen thread, nature has no parts, and any attempt to parallel the beauty one finds in nature must break with the reductionism of objects.
Therefore, Astra has many first-class constructs (that are vaguely like constraints in a constraint language) to tie objects together.
It must be able to evolve; therefore, Astra is completely reflective;
It must be efficient and reliable and have natural relationships between cause and effects, instead of programming by side effects; hence, it shed the von Neumann computational model and used demand-driven data flow. Astra expressed data flow semantics in an applicative (rather than pure functional) style; however, like Smalltalk, the methods were polymorphic.
The computational cycles were triggered by external real-time events so, unlike most data flow languages of academic interest, Astra could handle real-time applications.
Because there were no side effects (no program state that didn't correspond to some world state or the need to remember an event), piecemeal growth was easy, even when the program was running.
You could literally program in patterns: constructs which, graphically, were a weaving of objects and the intelligent pipes that connected them.
Astra had a graphical form called GIL, which I still use today. One can write beautiful, minimalist programs in GIL and Astra - not minimalist in the sense of a cryptic APL program, but minimalist in the sense of capturing the structure of nature in ways that no single other programming language could.
I have never seen this beauty paralleled in any Smalltalk or C++ program I've since seen.
I would like to nominate EclipseIde
. Deep and complex without being scary. Simple enough to let you get started quickly. Sometimes surprisingly smart ("How did it know that's what I was going to do?"). After two years working with it every day, still makes me jump up and run to my colleagues to show them a feature I found. Lets me change my way of working and take my productivity to the next level, yet it is not getting in the way of just doing my job.
I consider the fact that we are using Eclipse in our current project a perk.
I believe QualityWithoutaName
is expressed in Buddhism by the image of A finger pointing at the moon
The finger is not the moon; the map is not the territory; the signifier is not the signified... Once you get it
the question becomes "So what?" (And the answer becomes Stop talking
about it. Look!
QWAN is so trod upon by Western philosophers that these meta-
just get quirkier 'n quirkier! RobertPirsig
's image of properly lubricating his motorcycle is used to good effect in ISBN 0060958324
. Derrida, going beyond Freud, uses the image of the (yin) veil which he terms hymen
that can never be penetrated by the inseminating
(yang) signifier or spur
. This disconnect, says Derrida, forces a loss of meaning
, which he terms dissemination
. Strictly animal-realm metaphors... (Ah, ma petit tertre de joie...
). Derrida said a lot of things.
More at DeconstructAlmostAnything
I find the Indo-Tibetan cosmology, TheAbhidharma
, rather more penetrating. I especially benefit from The Vidyadhara ChogyamTrungpaRinpoche
, eg. Glimpses of Abhidharma ISBN 1-57062-764-9
And check Changes of Mind
by Jenny Wade, ISBN 0-7914-2849-4
The late computer scientist Alan Perlis warned his readers to ask periodically
Toward what end are you coding?
"but do not ask it too often lest you pass up the fun of programming for the constipation of bittersweet philosophy." -- PaulTaney
I think JohnVlissides
has always had that QualityWithoutaName
. A beautiful framework of extendable, yet concrete design patterns that echoed the good ideas of MacDraw?
, and probably HotDraw
as well (I'm not sure of the relative chronology). A comprehensive and efficient set of classes that did something useful from the start (a vector-based drawing editor), while ready to be evolved into new things. An interesting contrast to the immutable software technology of TeX that still earned him a thesis out of DonKnuth
I nominate PythonLanguage
. It took me a couple of tries to get over the bad bit of the learning curve, but then I gained control of the language and started writing code for the pleasure of it.
It's a long time since I've been motivated by the beauty of the code rather than the necessity of the functionality. -- JohnFarrell
Without a doubt, the J programming language (JayLanguage
) from KenIverson
. It has an elegance, completeness, rigor, and power that is simply unmatched by any other programming language. -- JimRussell
I've always found MacintoshCommonLisp?
to be an incredible development environment. The elegance of CommonLisp
combined with a fast and groovy environment. I still haven't found the equal in oh-so-many-modern-IDEs. Problem is I cannot do good OO in CLOS. -- JonTirsen
Are you sure you are describing software with the QualityWithoutaName
, or software with ElegantSimplicity
Anyone attempting to discuss QualityWithoutaName
really ought to have in their background a good reading of ZenAndTheArtOfMotorcycleMaintenance
, and LilaAnInquiryIntoMorals
. They are, first and foremost, about Quality. Or check out TheMetaphysicsOfQuality
pages for quick overviews.
Hmmm. Those both turned into active links, which I suppose I shouldn't find surprising. I'm glad to see someone else (CameronSmith
) thought of the link to Quality before I did. -- PeterHansen
On the topic of BooksAboutQuan?, I'd like to recommend the Carlos Castaneda series "The Teachings of Don Juan". Most specifically when Don Juan talks about a nebulous phenomenon he calls
seeing which he describes as a sense only in the loosest terminology (KindOfLikeThisButNot??). When
seeing one experiences a
knowingness'' that can't be explained.
Or of course, one should be able to draw the analogy between Qwan and TheTao?
, that is of course if you could capture TheTao?
and get a dry-erase marker on it... -- IsaacFreeman
I think Wiki qualifies. Ward provided the usability and configurability, the rest of us are attempting to provide the readable profundities.
I don't know about software, but as a model of computation, I find that the ActorsModel has this quality (in contrast to, say, the TuringMachine model).
I have only two problems with QualityWithoutaName
- It has a name
- It isn't a quality
That it has a name should be obvious: we keep referring to it as "Quality Without a Name". It even has a nickname: QWAN. This is like those Clint Eastwood* movies where his character is "the man with no name" -- that is
the character's name: it's even right up there in the credits!
That it isn't a quality is not obvious - it's controversial. One argument (which I happen to believe) is just that it's a substitute for "The Good". That is, Alexander takes statements like "That design is good" and rewrites them as "That design has QWAN".
This would be useful, if good
were a quality (like round
, or even easy-to-maintain
). But 2,500 years of Western philosophy hasn't pinned good
down to a quality, and 25 years of Alexander-speak hasn't pinned QWAN down to a quality. It's time to throw in the towel, and admit that an attempt to make the way we talk more useful has instead made it less useful.
(* Please don't LinkPattern
his name unless you really think he merits a page on this Wiki.)
* Profoundness - Does the system strike the user as special or unique, but at the same time,
insightful and correct?
I have never yet come across an ordinary
person who considers any piece of software to be Profound
. I don't think this is something worth looking for, except when we are looking directly at the internals of some software. It can only really be applied to libraries, toolkits and similar, where software experts
get to look at, and perhaps see, some Profoundness
I would suggest that the attribute of "profoundness" be replaced by something else when we are talking about end-user applications. Something that captures that feeling of delight when you "just use" a piece of software without thinking about it, without having to deal with quirky behaviour, baling-wire-and-duct-tape configuration or weird dependencies on obscure data formats. Something that speaks of a simple delight in using the system that quickly becomes taken for granted, so that the software soon becomes an invisible but valued part of the user's routine.
I cannot think of any instance where a non-technical user has expressed feelings like this about any piece of software. I would love it if you have and can mention them here.
That's easy. The Internet.
The Internet is a piece of software? First I've heard that. Now if you were to claim the first browser or video/audio streaming software . . . . -- PaulBeard
Could you define "software" such that it excludes the internet? Even though I'm typically skeptical of trusting standard non-technical dictionaries' definitions of technical terms, here is Webster's idea of "software":
The programs, routines, and symbolic languages that control the
functioning of the hardware and direct its operation.
Sounds like the Internet as a whole would qualify (Anyone have an OxfordEnglishDictionary?). Although I do question it's ability to fit the definition of Quality above
I cannot think of any instance where a non-technical user has expressed feelings like this about any piece of software. I would love it if you have and can mention them here.
My experience is almost exclusively with off the shelf ware, but I think of the first time a designer saw PageMaker
in the mid-80s or an accountant saw VisiCalc
as examples of things an end-user would see as profound. My own experience in editorial and design work informed my impressions of PageMaker
as almost magical in how it extended one's abilities and simplified or eliminated pitfalls.
There's talk here of beauty being one aspect of the QualityWithoutaName
, but what about joy? I know that I'm on the right trail to uncovering a previously unrecognized pattern when I feel the unique joy that comes from a pattern.
My sense is that there are two kinds of quality talked about by Alexander. On the one hand, the quality without a name, and on the other hand, he wanted to create a vocabulary for patterns and believed that your pattern vocabulary at any one point indicated what kind of designs you would produce. So vocabulary, words, and names are important. One might call this "Quality With A Name" as yang to the yin of "Quality Without a Name."
has very similar views - as can be seen elsewhere on this Wiki. He also speaks of naming within a design. And he does so in a very clear, cogent, mathematical and practical way - a design can be divided in any number of ways. There are important lessons for software design here.
But Pirsig also expresses a sense of instantaneous subjective quality in ZenAndTheArtOfMotorcycleMaintenance
. It is similar. Pirsig's "quality without a name" - is experiential and direct. It's existence doesn't rely on the blueprint disappearing in any real sense - but only in the subjective sense of the moment. The wind blows the hum of the engine toward your ear. When you look back, the blueprint can still be there.
-- Rich Katz
Uh, oh. I know we're in trouble when a bunch of pencil-neck geeks start talking about their work in terms of "art" and "esthetics" and such noise. Listen, kids: quality is a measurable
characteristic. Phil Crosby defined this for us in 1961 when he came up with the Zero Defects definition of quality. Others have come up with all kinds of other measurement systems, but the theme remains the same: QualityIsMeasurable?
. It's just a matter of defining what are the facets of the thing under examination we want to measure.
Your description the QualityPattern just reminded me of a book by Trinh Xuan Thuan title "Chaos and Harmony".
Question: if quality is measurable, do we have a metric for ease of maintenance and enhancement?
Why doesn't anyone mention symmetry? Symmetry is a major metric of elegance in mathematics, physics, and if you look closely, in software. You don't always find perfect symmetry in the real world, but it is hard to comprehend the real world without the concept.
I think folks having trouble pinning down the QWAN are doomed. The Tao Te Ching starts right off in the first chapter:
The Tao that can be followed is not the eternal Tao.
The name that can be named is not the eternal name.
If QWAN is a Taoist thing and Tao contains truth, then QWAN is perfectly fine when we can't really figure out what it is. IMHO.
Discussing things with my cousin, it occurs to me that this sort of quality is essentially internal self-consistency - not simply logical, but structural and stylistic. How much of a program, or whatever, follows naturally from its other parts. That's why its related to but distinct from things like good, beauty, symmetry, etc. Compare something like running quickly, which is a good thing to have but is not what most people would call this. The name wholeness
, which was just mentioned here, I think supports this.
Howdy kids - as much a fan as I am of Chuang Tzu and Derrida and used to be of Robert Pirsig, I have to say that the French "Je ne sais quoi" (I don't know what) is a much more elegant way of conveying this idea than, well, just about anything else. That is, of course, provided one is familiar with the phrase.
... QWAN is the quality of living things. ... -- KeithBraithwaite
I think this is correct. There is nothing mystical about this quality as Alexander describes it. Alexander constantly uses phrases like "system X ... has more life than system Y". This "having life" is a synthesis of beauty and function. The only problem here seems to be that the English language has no good word for it. The words "lively" and "liveliness" could have been candidates, but it seems they do not sound profound enough for Alexander. In German, this problem does not exist; the words "lebendig" and "Lebendigkeit" are exactly to the point. So in German the quality actually has a name. -- HelmutLeitner