By the way how does TheSourceCodeIsTheDesign
stand up in the light of TimBernersLee
's design of the World Wide Web - or WardCunningham
's design of Wiki for that matter? Were these examples of good design? Did the design exist in any sense before the source code? Does it exist now in any sense outside the various bodies of source code concerned?
What I'm really asking is what is GreatDesign
and how can we nurture better designers. (And putting in my nomination for Tim and Ward of course.) --RichardDrake
I think the meaning of "design" changed some above from externals to internals.
The design for the web is independent of the source code of the servers and
clients that implement it.
The design of the externals and the internals have both been part of the challenge for every system that I've ever tried - and the external aspect is often more the make or break success factor (after the finance and closely tied to the marketing).
My concern (and TomGilb
's) expressed briefly in ExtremeProgrammingExplainedEmbraceChange
is that some XP programming teams (like many other programmers in the past) may limit the idea of 'design' only to source code, not leaving place for the sorts of question below.
which is awesomely helpful. As usual Wiki hasn't ignored the issue. If you've had time to read all or even some of these tomes can you help with any of the following
What is GreatDesign
simply about the quality of the UserStories
provided in XP or is it more subtle than that?
What is the relationship between DoTheSimplestThingThatCouldPossiblyWork
and the quality of external design?
How can we learn from examples of great design in the software field rather than just abstract principles? What are the best examples?
Is the SecondGenerationProgrammer
effect going to help with the integration of external and internal design?
Great External Design describes an optimized user experience. It describes user interactions with the system and a look-and-feel that draws the shortest lines between what a user wants from the system and satisfaction. It is expressed in the appropriate media and in sufficient detail and clarity that no one--user, project manager, programmer, tester, help writer--could possibly misunderstand what needs to be built. This is distinct from the internal design that programmers do to realize the external design. What works for me is Big External Design Up Front and Internal Design whichever way the programmers want--as long as they produce. This also lets me do one of those weird things real engineers do: risk manage the project by doing the hardest things first. --MarcThibault
See also InternalAndExternalQuality