Skip to main content

Simplicity

I found an interesting comment suggesting Lego blocks as an example of how simplicity could make software better. The poster argues there are "no complicated things" in the universe, but that things often merely seem complicated, an illusion our perception of the phenomena, and that if we just look closely enough (reduce it to parts---reductionism) a simple, linear, non-paradoxical design emerges. "Just look closer" the argument goes and you will see the simple, discrete, isolated building blocks of the seemingly complex system.

This is the reductionist argument.

The poster says this of Lego:

Let's take LEGO. Do you need to test LEGO package? Ofcoz, not. Do you need to test EACH (of hundreds) piece? No.
You have:
1. Global design.
2. Common interface to connect bricks (piece) to each other.
3. Pieces specification.
The problem with this analysis is it ignores that in real complex systems, wholes are sometimes parts and parts are sometimes wholes. Object oriented programming, tries to encapsulate each piece of information or action in a single "Lego block" isolated from all other software components, connected through standard interfaces like the pegs on a Lego piece. It is wrong to apply a mechanistic solution like that of the Lego blocks to information. Software is essentially information, and pieces of information can relate to each other in paradoxical ways, just as numbers and theorems in mathematics can. It's difficult for a Lego block to be a part and a whole, although each block is a whole that can be a part, but there is less chance for paradox and feedback in the Lego block system than say in the atmosphere or the soil.

In the soil, we have a physical system, but the "parts" that are interacting are not "real" but emergent, such as "fertility" that cannot be located in any one place. Thoughts in the brain cannot be located at anyone one place or time either.

One of the major problems I see with the building block approach to software, the object oriented approach, is that it tries to sever the very feedback loops that make a complex system interesting and useful. It fights against complexity until it creates more confusion or rigidity than it is sometimes worth. There is an entire field of study in computer science centered around the "object relational mismatch," which is just a fancy term for the reality that applications are constructed using inflexible objects and relational database systems store information in ways that can be retrieved paradoxically.

In a relational database, parts can be wholes and wholes can be parts, yet there is no system I know of that can capture this kind of complexity, no application or computing framework that can take advantage of the capacity for paradox and feedback in the database. No, the application must have its rigid, isolated objects, where an address book entry is always an address book entry and its parts are its own business and cannot be part of another entity.

In a database, some entities do not even exist until a question is asked. A new unnamed entity is created by the answer to a question the designers of the database never considered and could not foresee. Very likely "expert system" approaches will one day resolve this problem, applications being developed using coding techniques that are capable of handling paradoxical relationships.

So, I do not believe enforced simplicity and borrowing design principles from mechanistic systems like Lego blocks are effective. Complexity exists, we can't put our heads in the sand, plug our ears and continue pretending it doesn't exist, some day the object oriented paradigm will crash and burn and some new one that takes complexity into consideration will emerge.

Comments

Popular posts from this blog

Minolta Lenses on a Four Thirds Camera

During the summer, I bought an Olympus E-510 digital single lens reflex camera. The 510 is a FourThirds camera and because of the of shallow flange of the 4/3 lens mount it is one of the most flexible cameras on the market when it comes to mounting legacy optics (lenses from traditional film SLRs). A 4/3 camera can mount "legacy optics" or lenses from several other manufacturers made before the DSLR era. Although unintended, this makes FourThirds a revolutionary mount. For the first time not only can a photographer mount lenses from different manufacturers who produce lenses to the "open" FourThirds standard, with inexpensive Chinese-made adapters lenses from nearly any manufacturer from the golden age of SLRs can be mounted as well. Third party adapters can be found for Olympus OM, Nikon, Pentax, Zeiss and Contax. The only one missing from the party was Minolta. I purchased an inexpensive OM to 4/3 adapter from ebay and mounted several OM lenses, a 50mm f/1.8, 50m...

Snowball, the Dancing Bird

A video of a dancing bird has become the latest YouTube sensation. Some people thought the bird's performance was faked, but for me, it is not surprising, given the sophisticated ability birds demonstrate for manipulating pitch and rhythm in their songs, that a bird shows the ability to keep time with music. Neuroscientists, including John Iversen of the Neurosciences Institute, have studied the dancing bird and confirm it is capable of extracting a beat from sound. What impressed me most about Snowball's performance is when he lifts his leg and gives it a little shake before bringing it down. As the investigators mention, it may be prompted by the pace being too fast to put his foot all the way down in time with the faster beat, but it piques my curiosity further. It appears Snowball is dividing the beat when he waves his foot, into two or three little waves, which if I am seeing it correctly, suggests birds are capable of division of the beat and perceiving and manipulating ...

Facilitating the Conversation

I was prompted by something Andrew Shafer of Reductive Labs said (on the FooCampers list, so I won't reproduce it here, since it was forwarded to me) about the quality of communication among software developers. He was talking about how communicating the overall design and intentions of the project is vital, so the developers are not left guessing about how the application will be used and what its architects think it should do. What is important is the existence of a conversation between the leaders of a project and the developers writing the code. This hits very close to home, because our farmfoody.or g project is essentially there to improve the flow of information between producers and consumers of food, to enable a conversation . It occurred to me the solution is to throw away the flash cards and bulleted design specifications and just facilitate the conversation. Why not use social networking tools for developers to communicate? (You can get a sense of another approach from ...