Mike Beedle’s position paper for the upcoming Feyerabend workshop at the Santa Fe Institute in
April of 2002.
Copyright Mike Beedle, 2001

Software intelligence
should depend on context. That is, in
some cases we do want intelligent software in some cases we want to be
completely prescriptive, and most of the time we'd like to be somewhere in the
middle that allows humans to have a symbiotic and coevolving relationship with
the software.
And ecosystem, in my view,
can be defined as a collection of interacting organisms, some of them which are
made of software and human agents that have a common purpose, and that play
cooperative games to help each other.
For example, a set of software and human agents that cooperate with each
other for trading stock can be considered a multi-agent.
Since we are talking
about a general biological framing of computing and software development, maybe
it is a good idea to see "the big picture" and include human
organization in a larger context.
In this context we can
talk about a biological frame for the teams and organizations that develop the
software in their own right, and even a whole business. Some work has already been done in this area
in the explicit and premeditated application of CAS (Complex Adaptable Systems)
principles to software development, for example see:
http://www.controlchaos.com http://www.e-architects.com/scrum
http://jeffsutherland.com/scrum/
In the realm of human
organizations, we can propose some blunt hypothesis for a living metaphor of
organizations, including the software development activities.
We can use the same
analogies for tissues, organs, organ systems and living organisms to map
directly into teams mapping to tissues (case, process, etc.), collections of
teams in the within the same business process (mapping to organs), and larger
aggregations that correspond to organ systems i.e. like a larger business
process such as order fulfillment that may depend on lower level functions like
shipping.

We can propose that the
unit of human organization is an individual:
agent == individual
and that these agents
also satisfy all the previous internal constraints:
sensing messages from
other agents or the environment,
translating these
messages or measurements,
filtering the messages
or measurements,
interpreting messages
and determining actions,
queuing actions by
prioritizing actions according to plans,
generating beliefs,
storing beliefs,
and external inter-agent
constraints:
- individuals in the
organization _must_ also play balanced cooperative games, that would allow them
to seek their well-being as well as the well-being of the organizations. And
again, through this cooperation, individuals may form symbiotic communities
that coevolve with each other
- the individuals
interact with each other through spoken and written languages in the hope to
share knowledge and information. These
are the "agent communication languages" at the organizational level.
- individuals also have
the ability to sense and share knowledge about the overall well being of each
community, other communities, and even
the whole, and they must have means of communicating this information.
- individual also have
shared and non-shared ontologies i.e. individual knowledge, team knowledge,
organizational knowledge. This really
boils down to cultural stuff.
- individuals and
organizations at any level may have a basic set of given contingent plans in case
of "system faults" and also be provided with the ability to learn
from errors. At the people level, these
are emergency procedures and "lessons learned", things that come from
reflection, introspection and feedback.
- each team or
organization would be semi-independent and would self-organize according its
internal control systems, but also affect the whole. In Scrum we certainly do that.
We can seek to maintain
homeostasis in the organization by using both internal and external
controls. Internal controls are
controls used within a single team or organization. External controls are checks and balances among different teams
and across the organization.
As before, most of the
control systems depend mostly on negative feedback i.e. they measure states and
react inversely to the rate of change to compensate.
THE INTEGUMENTARY SYSTEM
- what is the "skin" of an organization? Its interfaces with the external world?
THE CIRCULATORY SYSTEM -
what is the "circulatory" equivalent? Do we need this metaphor for an organization?
LYMPHATIC SYSTEM AND
IMMUNITY - Firing, Corporate moles, security checks, clearances, cameras,
tracking systems, audits, etc.
THE DIGESTIVE SYSTEM -
Probably not an applicable metaphor.
Though some companies do treat their employees like defecation ;-)
THE NERVOUS SYSTEM -
definitely the main extrinsic and homeostatic system for an organization:
spoken language, emails, phones, meetings, the collective consciousness, status
meetings, status reports, assignments, agreements, signing up for work,
documented plans, executives, the board, etc.
THE ENDOCRINE SYSTEM -
Don't know how this would apply to organizations.
THE REPRODUCTIVE SYSTEM
- asexual reproduction makes sense for organizations i.e. fission, budding,
fragmentation, cloning, slicing, etc.
THE MUSCULAR - don't
think we need this metaphor for organizations.
SKELETAL SYSTEMS -
buildings, hallways, etc.
THE RESPIRATORY SYSTEM -
Don't think we need that metaphor for organizations.
THE EXCRETORY SYSTEM -
Disposing of unusable information of materials?

In an identical fashion,
we can propose that organizations evolve from small embryo teams to
full-fledged organisms through morphogenesis.
And again, this morphogenesis is a directed differentiation process
dictated by a pattern language kept in every agent i.e. the individual.
As the organization
grows there would be sensors and rules in place that would determine the
existence of a context and trigger the rule - a pattern, to execute and
transforms individuals, and teams, into new forms. The resulting context would then set a new context from where
other patterns can be applied.
