An Interesting perspective : Treat a system like a lump of clay. There can be no advance notion of what the sytem will be. Working and shaping the clay, the clay forms itself. Is XP an UnSelfConsciousProcess "When I was in college, I took a ceramics class and my sculptures never seemed to work out. I would start with preconceived notions and then try to mold the clay into those notions, not spending much time trying to learn what the clay was telling me. The best sculptures, meanwhile, were coming from a woman who seemed to work without any conscious thought at all. She just plunked down a giant hunk of clay and started moving it around, discovering the shape the clay wanted as she went along. Her works were gorgeous, sumptuous loopy objects, monumental and playful at the same time. Incidentally, she seemed much happier than me, too. " regards
So I just start coding. I let the program tell me what it wants to be. I might get a word processor. Or a heart monitor. Or a shooter game. Sorry, just goofin. I kinda liked the discussion of the closer connection to your code in Smalltalk because the file system, compiler, listings, all those things are taken away. But I don't really buy that a Java programmer cannot achieve a Zen state of oneness with the code. When you're in the zone the couple seconds it takes to compile doesn't matter. The drawing of mapping a physical problem space to a logical one, designing a logical solution, then building a physical solution is exactly one that we drew in the 80s when Ed Yourdon's books were new. I don't think XP eliminates that, just does it in iterations as short as "write a test, make it run." [ November 11, 2003: Message edited by: Stan James ]
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Two separate thoughts: 1) The story about "finding the shape in the clay" is curious. I've done some woodcarving over the years, and in that context it's fairly common to hear this idea of "finding the shape inside the wood." People say that about marble, too. But both wood and marble have grain and internal structure to them. Clay has none. There is nothing special about a given piece of clay that says it should be this shape or that. While wood or marble really can guide you, clay cannot. If you try to cut marble in a way it doesn't want to be cut, it can shatter. If you think you're being guided by clay, though, it's like a ouiji board, just the power of suggestion. The shape is actually all in your mind. Is code like clay, or like marble? I think you could make a good argument that particular languages are like different woods and marbles, because a language can make writing certain kinds of software easier or harder. 2) Another thought: there are, broadly, two kinds of sculpture: representational and nonrepresentational. You're either trying to make a sculpture of something, or you're just looking to express an idea or feeling. When you're doing nonrepresentational sculpture, you can let the materials guide you. But when you're doing representational art, you have to coax the material into following your wishes. Is there such a thing as nonrepresentational software? I would say not, but maybe someone else has another opinion.
Originally posted by Ernest Friedman-Hill: Is there such a thing as nonrepresentational software? I would say not, but maybe someone else has another opinion.
I think software does have both aspects. There is the representational aspect - the functionality the customer is asking for. I guess that is what you were thinking about above. If the customer wants a payroll system, it wouldn't be wise to tell him "but the code wanted to be a tetris clone!" But there is also an important nonrepresentational aspect - the way in which the functionality is achieved, the internal design. Here you *can* let your design decisions be guided by the existing code. With some experience regarding refactoring, it can feel as if "that method wants to be on a different class", for example. (Possibly you also need some zen-like imagination... )
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus