Advertisement
Advertisement
-
Unsu...
Big Ball of Mud - the Organic Tanglemat from which ecosystems evolve
Fri, October 8, 2004 - 1:33 PMAt the end of this post is a premble of my purposes, copied from the post I just made in another therad. These posts go together really.
I am familar with and an advocate of the Big Ball of Mud design pattern. Big ball of mud is what naturally and organically evolves if you don't have a formal methodology and if you eschew design-up-front or waterfall approachs.
Big ball of mud is not an intractable problem. Big Ball MUST evolve to fit new requirements and features and compete with other organisms in their own ecosystems.
Big Ball has traditionally evolved through a technique that used to be called "fixing all this garbage code that the incompetant fools before wrote" or "doing what I han to restructure the mess that they left me". This technique has been codified and which now is called Refactoring and has its own conferences and journals. Of course, the person trashing those who came before left a BBoM at the company he came from, and he, despite his critiques of his fellow designers, will leave a BBoM behind when he leaves.
BBoM is a rich soup of organisms. Refactoring is the gentle organic manipulation, encouragement or weeding of the Mudball in order to allow the beneficial organisms to flourish, revealing the pattern of the garden below the Mudball. The discovery of these patterns leaves a more satisfying garden. The structures such as rows of plants or clusters or things growing on poles and strings or planting carrots between tomatoes are called Design Patterns. They were discovered by a chap in Australia named Bill Mollison. He has named the system of beneficial organic Design Patterns he found "Permaculture". His ideas were later borrowed into the field of architecture by Christopher Alexander. And attempt was made to introduce these ideas into the field of software development, but the attempt failed, according to Christopher Alexander, because the patterns being promoted did not result in better or heathier software, but rather fixated on the needs of the developers instead of that of the end users. This is comprable to how agribusiness has selected the Design Pattern of Pesticide-SyntheticFertilizer-GMO even though it only benefits them and not those who are forced to eat the products/dogfood/code.
-------
PREAMBLE
The tribe description is opaque to me. However, I do have ideas about Organic Programming the term and what it means to me. I see two dimensions to Organic Programming:
*Dimension X.* Parallel to organic farming. Intervention is done by WORKING WITH the natural forces instead of opposing them. Artificial external devices, whether chemicals, or processes, are avoided. Using them MIGHT be more efficient, yes. But their use and presence are known to POISON the ecosystem. For example, heavy rigourous process tends to wear down the spirits of the creative developers and drives away all the best members of the team, ensuring that future crops (products) will be functional, but pasty in texture and without much flavor.
*Dimension Y.* Parallel to organic systems. A tangled mat of undergrowth that gradually forms to make a forest. Our central thesis of design: The Big Ball of Mud pattern, integrated with refactoring, works to create order out of chaos. This order is highly structured code based on design patterns that were organically derived through this noninvasive code farming methodology.
I am going to adopt these two simultaneously as working definitions and see where it goes.
Dimension X will be addressed in the Andy Warhol thread.
Dimension Y I have addressed above. -
-
Re: Big Ball of Mud - the Organic Tanglemat from which ecosystems evolve
Sat, October 9, 2004 - 12:48 PMInteresting comments on patterns. I didn't know about Bill Mollison. Can you recommend any sites?
I think the question of whether patterns "failed" in software is a good one.
I take it Alexander's criticism is purely from the user perspective. And I'd agree with him that UI isn't well enough integrated with the other design patterns. (I have some comments / ideas on this here : (www.nooranch.com/synaesmed...i/wiki.cgi
As a programmer I've been using more and more patterns over the last couple of years, and I'm fairly convinced that the approach is right even if some of the specific patterns are sometimes applie inappropriately.
And I've yet to see the equivalent of the agrobusiness problem where a pattern which helps me is actually *bad* for users.
Do you know Jim Coplien who seems to be at the forefront of adopting the "aesthetic" question of patterns from Alexander? -
-
Unsu...
ecosystems and environments
Sat, October 9, 2004 - 1:23 PMMollison is very well known in organic farming, so boooks I have on organic farming such as "Gardening for the Future of the Earth" quote him heavily. He's so influential that Alexander based his entire approach on Bill's ideas. I haven't really done farming research on the web so I can't recommend sites; if you find some share them.
Alexanders approach is not just that there are patterns, but that the patterns serve the natural organic flow and means of the users. That is how it connects to Mollisons work - both that there are patterns of nature to be observed and that those patterns underlie the best way to do things. This is a humanistic approach and Alexander's testament fundamentally a philosophical outlook that buildings should serve the needs of the humans who live and work in them and it is not a methodology of how to draw up plans or be an architect - it is about how to build good systems that serve the users.
There are many patterns Alexander has no interest in promoting: the pattern of the sweatshop with locked doors; the pattern of the glass skyscraper with too many elevators, recirculated air and no windows; the pattern of the cubicle farm.
Alexander's criticism of the GoF oriented approach is that it has absolutely nothing whatsoever to do with what he was promoting - a more humane environment. An environment that fits well with the people who will be using it.
Sure, DP is a fun book if completely obtuse and poorly exposited. But multiple readings do translucitize the opacity. And the patterns are useful structural ones.
But it has not resulted in better software. It has resulted in WORSE software. I can often tell when I am running software or compuing devices that were structured by a DP fan. Useful features have been removed because they don't fit a simplistic interppretation of MVC. Weird behavior appears that is nothing more than a symptom of generalization of some large class. The program becomes unstable because every object requires memory allocations due to the high level of abstraction. DP structured software is usually bad. It's main feature is an obsession with patterns. These patterns structure the software. What doesn't structure the software is known useful UI patterns. A usable and powerful interface should be the primary concern of most software that users must interact with.
I'll look up Coplien; not familiar with him - I just know what Alexander has said.
-
-
Unsu...
Alexander's critique
Sat, October 9, 2004 - 2:09 PMOK I looked up Coplien; he was down there in Brasil with you once!
I think where I heard Alexander's critique was in the foreward to Gabriel's book Patterns of Software. And it seems that Gabriel has made it available for free as a pdf for those who don't want to buy the bound version from Oxford:
www.dreamsongs.com/ -
-
Re: Alexander's critique
Sat, October 9, 2004 - 2:53 PM" OK I looked up Coplien; he was down there in Brasil with you once! "
That, I didn't know. Do you know where?
-
-
Unsu...
The 15th Brazilian Symposium on Software Engineering - SBES'2001
Sat, October 9, 2004 - 6:16 PM
-
-
-
Re: ecosystems and environments
Sat, October 9, 2004 - 2:40 PM"But it has not resulted in better software. "
Is that because the patterns are wrong? Or simply applied baddly? Or when inappropriate?
(I have some thoughts on MVC here : www.nooranch.com/synaesmed...i/wiki.cgi -
-
Unsu...
are patterns wrong
Sat, October 9, 2004 - 6:43 PMI like patterns. They are especially fantastic when used in well designed frameworks. But there may be less than a dozen people in the world who can maake a really good framework.
Patterns haven't resulted in better software, Alexander observed. I agree with this observation. I think his assesment that the first thing to look at should be the interaction of the software environment with its users is a good point. Instead, the focus is on being architecture astronauts designing brilliantly intricate and elegant internal structures. Why use a enumeration when you can create a polymorphic class and a factory to spew out polymorphic claseses from the enums that you once had eliminated? Suddenly everything is hundreds of times more complex, but so elegant. Unfortunately, the original inelegance that was replaced actually exists, it's just well hidden and surrounded by fabulously inefficient mechanisms that are slow, impossible to understand, and tedious to debug. This is the general direction I see in patterns. It's like how object oriented programming, a good idea suddenly came to become C++, which is not even object oriented, and then suddenly everyone is doing template metaprogramming because it's so fabulously elegant. it's also unmaintainable and impossible to debug or understand but never mind that.
-
-
Re: are patterns wrong
Sun, October 10, 2004 - 10:46 AMDesign patterns are nice things for beginning developers to read about so they know some of the interesting ways that parts of back-end software can be constructed.
But I agree with you completely that they're a lousy software engineering philosophy. The DP crowd seems to have jetisoned the *real* design patterns we already had (the ones that informed us about how to build the best user interfaces), and replaced them with a set of rules for building back-ends, as though we were back in the 1960's where a collection of JCL statements was accepted as a perfectly adequate "user interface"...
-
-
Unsu...
MVC
Sat, October 9, 2004 - 10:44 PMI like your MVC article.
MVC works well in NeXTStep/Cocoa since its integrated almost as tightly as in SmallTalk. Also, many enjoy its use in various frameworks. But you're right what you're saying.
You got me thinking that one of the problems is that matching a Big Pattern becomes the #1 goal of Pattern based endeavors. This is a mistake! Patterns are something that work when they fall naturally out of the Mud Ball. Artificially imposed patterns are usually the wrong ones. Features will be tossed out because they don't match the pattern. Useless features no one wants are added simply because the pattern makes them possible. For example, I am starting to see many UIs where a single object is editable in ten different parts of the program using ten different interfaces. Such versatility is unnecessary and confusing. This is almost becoming a fad. It happens because of MVC. "Gosh, we got this MVC setup, let's be sure to include lots of different views of the same parameters." That's fine and appropriate like you say if viewing spread sheet data. But should a spellchecker have 10 different views? Should a level meter? Multiple views is something useful in certain circumstances. When it arbitrarily permeates pane views, it is a sign of Design Pattern Disorder. The result is that usability suffers.
-
-
-
Unsu...
social pattern
Sat, October 9, 2004 - 2:20 PMAh, i just read your page at:
www.nooranch.com/synaesmed...i/wiki.cgi
And you have been thinking the same thing I have. That's a good overview of the situation you got there. -
-
Unsu...
[ot] germanicization
Sat, October 9, 2004 - 2:22 PMI'm sure this has been talked about by others but it's interesting how wiki words are turning english into german. -
-
Re: [ot] germanicization
Sun, October 10, 2004 - 10:48 AMYou're talking about the WikiEnglishToGermanEffect, right?
-
-
-
-