Scientific Case for Bottom-Up Rulemaking

In his book Hidden Order: How Adaptation Builds Complexity computer scientist and psychologist John Holland describes a generic pattern for rulemaking in complex adaptive systems (like businesses and software projects).

Performance System
The first part of the pattern is what Holland calls a performance system. It consists of a potentially large number of stimulus-response rules, where the rules are meant to act upon messages received from the environment (or from other rules). The result of applying those rules is that a number of new messages are emitted, either to follow-up rules, or to the external environment.

Being a software developer my mind is filled with plenty of rules for building software. The input that I receive from the environment consists of the things my colleagues are doing (or the things they are only saying they’re doing), the code that I am working on myself, the requirements from the customer, the features and restrictions of the development environment, etc. The many messages from the environment are evaluated, in parallel, using hundreds if not thousands of rules in my mind, both consciously and unconsciously, which results in one or more new actions, like code to be written, changes to existing code, conversations with my colleagues, or discussions with the customer.

I know, this all sounds pretty obvious. But the key concept here is that the performance system consists of many potentially conflicting rules, where different rules are triggered under different circumstances, given different messages from the environment. It is as if the performance system is an ecosystem of rules, where rules are both competing and collaborating with each other, and the “fittest” rules are the ones contributing most effectively to the whole complex adaptive system.

Credit Assignment
The second part of the pattern is called credit assignment. Rules that appear to lead to improved performance of the entire system are credited, which increases their strength within the performance system. Rules that were triggered and subsequently failed to deliver beneficial effects, or even appeared to hurt the total system, will see their strength reduced. The strength of each rule determines the chance of being triggered the next time, for similar input messages.

Credit assignment assures that experience is built up in the system, by strengthening some rules and weakening others. The rules together form an internal model of what the world outside looks like and how the system needs to respond to it. And when the environment changes, strong rules will start failing and weak ones could succeed more often than before. This enables the performance system to adapt to new situations, and to continuously correct and tune its internal model.

Rule Discovery
The last part of the pattern deals with rule discovery: where do the agents in a complex system (or software developers in a project) get their rules from? Holland describes how new rules can be constructed from existing rules by recombination of building blocks. This is essentially how DNA works: by recombination of existing genes and their alleles.

Holland was one of the first to create evolutionary models for rule-based decision-making, which earned him a reputation as the father of genetic algorithms. He not only convincingly described how these performance systems are an interesting conceptual model for complex adaptive systems, but he also showed that they can be implemented easily to create evolutionary algorithms with powerful problem-solving capabilities.

Why am I writing all this?

For one reason only: to help people understand that rule-making is something that must happen bottom-up. And not top-down.

Science proves it.

(image by Syntopia)

This article will be part of the book Management 3.0: Leading Agile Developers, Developing Agile Leaders. You can follow its progress here.

Twitter TwitterRss SubscribeEmail NewsletterLinkedIn LinkedInSlideShare SlideShare

Latest, greatest and favoritest posts:

Management 3.0: The Era of Complexity

Self-Organization vs. Emergence

Self-Organization vs. Anarchy
  • Make A "Social Contract" With Your Team
  • In Defense of Scrum (Please Stop Pissing on It)
Related Posts
free book
“How to Change the World”
  • David Lojudice Sobrinho

    Hi Jurgen,
    First, I’d like to say that the vision of management your are sharing is just great! I’m trying to spread it as much as I can… 🙂
    The second thing is that I’m a system architect interested (obviously) in system complexity.
    I wrote a post about it recently: (portuguese)
    When you say “rule-making is something that must happen bottom-up” it makes me think how I should see the systems I’m working on and how I can stimulate it to create this rules from the bottom-up. This is something I maybe have a clue, but not the answer. Any help?
    And the last thing is that I would love to see a list of books that you recommend that talks about Complex Systems.
    Many thanks.

  • Jurgen Appelo

    Thanks for the support! 🙂
    I don’t see a piece of code as a complex system. It usually does not have agents interacting with each other by itself, through their own motivation. Software is, almost by definition, a top-down system. Of course, with the exception of neural networks and similar systems that are specifically designed to be complex. Perhaps you should look into genetic algorithms.
    You can email me for a list of books: jurgen AT noop DOT nl

How to Change the World - free Workout - free