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 a quality software system, regardless of whether it's a code library, toolkit or end-user product.
Note that in TheNatureOfOrder, written more than twenty years after TheTimelessWayOfBuilding, ChristopherAlexander 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?
Not useful? 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
RichardGabriel's book PatternsOfSoftware (and ChristopherAlexander himself, who wrote the preface) wrote much about this, for instance p. 140 "In ZenAndTheArtOfMotorcycleMaintenance (RobertPirsig 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
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!)
-- ToddCoram
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.
Unfortunately, FrameMaker 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.
-- GarthDickie
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.
-- DaveSmith
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 and PatternMining are very closely related!)
-- DavidHooker
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:
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.
-- JimCoplien
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! (http://psychology.wikia.com/wiki/Vision-logic))
QWAN is so trod upon by Western philosophers that these meta-metaphors 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' UnidrawFramework has always had that QualityWithoutaName. A beautiful framework of extendable, yet concrete design patterns that echoed the good ideas of MacDraw?, MacApp, 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's department.
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 and RodgerHui?. 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 by RobertPirsig. They are, first and foremost, about Quality. Or check out TheMetaphysicsOfQuality and AlexanderPirsigConnection 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:
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.)
-- GeorgePaci
* 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.
-- MikeMorris
That's easy. The Internet. -- AnonymousDonor
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 -- IsaacFreeman
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. -- PaulBeard
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."
RobertPirsig 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". -- IsaacFreeman
See DesignAsHarmony, GoingDownThePath
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