Many complex systems are based on simple rules. A set of several simple rules leads to complex, intelligent behavior. While a set of complex rules often leads to a dumb and primitive behavior. There are many examples.
How ants search for food? They do not have cell phones, cars and mini-markets near the nest. They should have something simpler to communicate.
Here is how ants work:
- Travel randomly in search for food.
- Take a piece of food and head straight back to the nest. On the way back to the nest lay down an odor trail.
- Notify nestmates of the discovered food encouraging them to leave the nest. These newly recruited ants will follow the odor trail directly to the food source. In their turn, each ant will reinforce the odor trail until the food is gone.
Sounds simple? Take a look at this very nice ants colony model. Drop some food and enjoy the action.
Birds flocks are beautiful. You may think that the movement gets orchestrated by one savvy bird. But this is not the case. A bird flock is guided by three simple principles (every decent bird knows them):
- Separation: steer to avoid stumbling upon local flockmates.
- Alignment: steer towards the average heading of local flockmates.
- Cohesion: steer to move towards the average position of local flockmates.
Simple? Yes, it is. Look at the picture on the right. It's just amazing!
Game of Life
Game of Life was invented in 1970 by John Conway. It is a cellular automaton and simulates the birth, death, etc., of organisms based on certain rules:
- Each cell with one or no neighbors dies, as if of loneliness.
- Each cell with four or more neighbors dies, as if of overpopulation.
- Each cell with two or three neighbors survives.
- Each empty cell with three neighbors becomes populated.
Simple rules. But these rules lead to fantastic diversity of the forms. Different types of the forms have been discovered e.g. still objects, oscillators, gliders, spaceships, etc. It is impossible to predict the state of a system after several thousands steps. Cellular automaton has properties of a complex system such as emergency and butterfly effect. Small changes in the stable structure (for example, adding one more living cell) may cause death of the whole cells population.
Moreover, it is possible to build a computer based on Life! It is possible to implement logic based on stable structures and execute simple calculations. The Game of Life is a Turing machine! How can someone suggest that such a simple system based on four rules has so much power?
Take a break and have fun with Life game simulation.
Simple Rules and Software Development
Is there any relation between simple rules and software development? Sure, there is. Software development process should be simple. Process complexity leads to mechanistic and dumb behavior.
- Information exchange and collaboration vs. standard status reporting meetings.
- Learning vs. stagnation.
- Emergent behavior and creativity vs. Following rules, standards, instructions.
Agile methodologies are simple. Scrum is a very simple thing. It has just several rules, roles and artifacts. Well, it is a lot harder to really implement Scrum. It is hard because you need to break stereotypes and habits. Many people are resistant and don't want to try new things. However, Scrum works. It works because of its simplicity, it lives in accordance with complex systems.
Scrum stimulates learning, feedback, communication and cooperation. Emergency is possible in Scrum.
Here is one sample of unnecessary complexity — too many hierarchy levels:
A potential problem, unlikely in small and medium organisations, is deep organisational structures. According to Peters and Waterman (1982)18, both Toyota and Roman Catholic Church have only five layers of management in comparison to Ford's seventeen.
Do you by any chance happen to have a software development process description in a huge 100+ pages document? Are you still in business?
- Part 1. Agile Software Development and Complex Adaptive Systems: Intro
- Part 2. Software Development is Complex Adaptive System. No Doubt
- Part 3. Edge of Chaos and Hyper Productive Software Development Teams
- Part 4. Simple Rules, Complex Systems and Software Development