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:
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 glock is guided by three simple principles (every decent bird knows them):
Simple? Yes, it is. Look at the picture on the right. It’s just amazing!
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:
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.
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.
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?