I want to write something about GreatDesign. In my opinion, there are three primary ingredients to all great designs. It's important to realize that a system can be anything. If it is a language or even a class, the user is a programmer; if it is a word processor, the user is the person creating a document.
Discussion:
Robert, I appreciate this page and the many important issues you've raised here, on ChiefArchitect and elsewhere. Clearly "architect" is a label that carries many important concepts with it, for you, and I have no problem with that. GreatDesign is vital to encourage (and indeed not mess up by shallow consensus) and for me you've captured some really important facets of it, which is not easy to do. Don't be sidetracked by those for whom the term brings mostly negative connotations, indeed those of us who have often wanted to remove it from commercial situations in favour of the more humdrum "designer", as this has often been in order to achieve many of the same goals.
As I see it, you're using a broader brush than Wiki is used to. Citing AlanKay as architect of Smalltalk, Ward as architect of Wiki and Kent as architect of XP you're saying that the word can be used, with some commonality of meaning, for the design of the radical new language and environment that more or less defined ObjectOriented from the 1970s, a radical new medium for collaborative writing over the Internet from the early 1990s and a radical new software development method that cleverly piggy backed on the both of them. "Architect of XP" is the weakest for me. There are other ways to be nice about Kent and Wiki has tried many of them! I think especially of AlistairCockburn's "master of culture and cultural change" towards the end of EveryoneShouldBeaMethodologist. I agree with your call for more tolerance of diversity under the broad umbrella of XP, as seen through Wiki, and again this calls into question for me the wisdom of Kent being called "architect".
But that feels like quibbling, something for later WikiPages that hang off here in years to come. For now, thanks for bringing a "breath of fresh air" to Wiki's discussion of design or perhaps a much needed "kick in the pants". (And with TeenageSlang plus many signs of Wiki adults being "divided by a common language", that idiom is no doubt going to cause further "terminological inexactitude", as WinstonChurchill might say.) -- RichardDrake
Do you say this because you don't view processes or methodologies as having an architecture or because you do not think XP is representative of KentBeck's best work. Besides books on patterns, presentations and such I'm not familiar with any other full-blown systems he's worked on. The following lists the reason that I believe the process is a successful architecture and an excellent example of GreatDesign even though I disagree with much of its details:
Interesting points. I'm not quite as convinced as you are on XP having all of these properties. I'd say XP is a GreatEffort?, not so much a GreatDesign and even less a GreatArchitect?(ure). On the other hand, I believe it has a great chance of changing the way almost all software is written is a few years hence. In this it benefits from the past customer relationship successes of EvolutionaryDelivery, as documented by TomGilb, and other incremental pioneers. Part of what Kent and Ron got right was timing. Was that "architected" or was it luck? It is a hallmark of the great software designer, whatever. As Napoleon once said on being told of the great qualities of a general being proposed for some new venture: "But is he lucky?". -- RichardDrake
Maybe the fourth bullet is a little gracious. However, I think it is important that you note there is very little that is new in XP. I agree, almost all is taken from proven practices that have been popular in the O-O world and beyond for some time --- specifically evolutionary prototyping and incremental development. However, Xp is unique in putting these together in a way that was almost religious for people new to these BestPractice's and techniques. This coupled with light-weight and high-discipline hit on something essential for many people -- clearly or there wouldn't be this buzz. As Stravinsky was fond of saying Lesser artists borrow, great artists steal. I think you can still create an important Process Architecture or Software Architecture without a single original concept -- I'm not saying there aren't new concepts in Xp, I just don't know what they are. Sometimes the beauty is in the composition of the ideas rather than the ideas themself. I don't think something has to be complex to be an architecture, but I don't imagine you do either. I also think it's possible to hit on something great by accident. This doesn't mean that Xp won't turn out to be the COBOL of development processes. In many ways I think it already is. I'm just trying to look beyond my aesthetics and recognize a phenomena. -- rad
I think this quote from PaulGraham is also relevant: "Great software, likewise, requires a fanatical devotion to beauty. If you look inside good software, you find that parts no one is ever supposed to see are beautiful too" Great designs/software has a fanatical attention to detail(s which may be barely perceptible) which subtly enhances the whole. (See BeautyIsOurBusiness)
Elsewhere on Wiki, I saw a discussion about objects definable as a tuple of attributes: name, extensional meanings (examples), and intensional meanings (specifications) - I've mangled the terms, lost the WikiPage, but believe I've captured the idea. The point is that GoodDesign or ExcellentDesign? would seem to be an effective (accurate, efficient, elegant etc. - pick your adjective and have at it) conformity of all three attributes across a wide spectrum of people interacting with the design. GreatDesign, if I have the Zen of it correctly, not only fulfills that, but goes beyond by opening new possible spaces and concepts - ones that that the designer did not understand, or anticipate as an element of the design. If there is not a WikiPage for DesignAsAdaptiveBehavior?, there ought to be. -- DanEsch (I am beginning to feel like a kid in an intellectual candy store and if I am violating WikiNorms? with my posts (I hope not!), do please drop a line on my page and let me know. Feel free to leave a paper bag for head-covering purposes.)
See also: ArchitectureBasedDesignMethod, ArchitectureTradeoffAnalysisMethod, ArchitectingWord, DoEngineersNeedOpportunists, ChiefArchitect, ChiefArchitectOfXp, CreateSomethingGreater, ExternalAndInternalDesign, GoodArchitecture, GoodDesign