The WSOGMM is brilliantly described in DouglasAdams' book MostlyHarmless, p. 26. I read it to my class when we finish our "sort all these little things smaller than your little finger" exercise and discuss inheritance hierarchies.
"... any given universe is not actually a thing as such, but is just a way of looking at what is technically known as the WSOGMM, or Whole Sort of General Mish Mash. The Whole Sort of General Mish Mash doesn't actually exist either, but is just the sum total of all the different ways there would be of looking at it if it did.
The reason they [parallel universes] are not parallel is the same reason that the sea is not parallel. It doesn't mean anything. You can slice the Whole Sort of General Mish Mash any way you like and you will generally come up with something that someone will call home."
On p.83 he adds, in a different context, "You create a universe by perceiving it, so everything in the universe you perceive is specific to you."
(This quote brought to you by AlistairCockburn.)
The WholeSortOfGeneralMishMash is itself just another way of looking at things. The trick is to change your method of dealing with views of things; to use what's convenient, what's a good fit, what's harmonious, and let go of it again when it's no longer so. LaoTse treats the implications of this at length, and applies them to itself as well. -- PeterMerel
I once was a solipsist, but I gave it up when I couldn't convert anyone else.
No, seriously, DouglasAdams is on mark. People can and do perceive things in all sorts of ways. For that very reason, I advocate interviewing users individually (ala GuerrillaDomainAnalysis) to avoid GroupThink. Some of the best modelers I have met have an extreme tolerance for ambiguity coupled with the ability to rapidly unlearn as new information becomes available. The tolerance for ambiguity is key. Many people can't hear a problem without forming a solution in mind, and they marry that first solution. It is better to have the skill to be able to hold many different partial representations of the same problem in mind, be able to rapidly compare and contrast them, and rollback when necessary. -- MichaelFeathers
Yes, it's very useful to keep your models in their most unalloyed and basic form. This seems like one of the best things about the UserStory(s) in ExtremePlanning. When you go through your stories and pull them into a set of consistent UseCase(s), you're losing valuable information about what the different users had in mind. Much better to lose that information later in the process, by having the users involved in your design and testing, than earlier when you don't really have good grounds for deciding how to resolve the ambiguities. -- PeterMerel
I find these two comments both fascinating and very relieving. I thought I was just strange. Now I know I am both a CulturalRelativist and a ObjectRelativist?. CulturalRelativists perceive that the world is seen from many angles by many people and that each of many world views is both logical and reasonably self-consistent. An ObjectRelativist? perceives that the visible part of the program and its task are perceived by the various objects within it in a variety of self-consistent ways. In fact, by increasing encapsulation, each object's world view becomes more and more unique as it understands fewer and fewer features of the rest of the entire program.
The trick in designing highly encapsulated code is to be able to rapidly be able to change world views and make every object/component/module true to its own paradigm and metaphor.
The trick in designing an architecture of composed highly encapsulated pieces of code, is to be able to change levels of abstraction of your world views and design a collections of cohesive metaphors that will between them get the job done.
The trick in designing an architecture to meet an ill-defined, self-contradictory set of user stories is to be able to be satisfied with defining an architecture of metaphors to the level of detail where a single pattern of interacting metaphors will, when realized as source code, meet whichever single self-consistent set of user stories eventually becomes the specification that we ship. This is a ToleranceForAmbiguity. The antisense of this could be PrematureSpecification?.
The strangest part of my reaction to this page is that I think I came here and read this once before, and thought bah humbug, whereas today I think praise be the lord. I guess I am also a TemporalRelativist?. What I thought yesterday is not what I think today. In other words, I learn. This concept is distinct from the concept of TemporalLogic. -- AlanChristiansen
MarryTheFirstSolution is definitely an AntiPattern. ToleranceForAmbiguity is certainly a necessary property of a system thinker. There is no guarantee that all the disparate elements of a system will "see the universe" in the same way ... so you have to fix it ... at least you do if you want the solution to be coherent. HearProblemFormSolution, another AntiPattern is a type of ListeningWithYourAnswerRunning. I guess you can tell that I really like Michael's comment here. -- RaySchneider