Anyone involved in the creation of software has likely used or heard the word “evolution” to describe change processes for a software product or team.
Many have also realized – and had a chuckle – the many parallels between biological and technological system evolution. The similarities usually run along the lines of adaption to the environment through the speed of change – agility.
Technology companies that adapt rapidly enough survive, and those that don’t, join the ever-expanding list of case studies made infamous by the likes of Kodak and Blackberry.
Nature, however, seems to have another lesson for us in the area of dynamic system complexity. In software development, the human environment is guaranteed to be dynamic and complex with the pressure of having teams act in a cohesive way to deliver high-quality code rapidly and often. Turns out this complex challenge has been solved by nature – and in a seemingly unlikely way.
Back in 1987, programmer Craig Reynolds created Boids, a program that sought to and successfully recreated the complex motion of a starling murmuration. A murmuration of starlings is a swooping mass of thousands of birds whirling in the sky.
Turns out the key to this display of scaled cohesive complexity is the interaction of individual agents (the Boids, in this case) following three simple rules:
- Separation: steer to avoid crowding local flockmates;
- Alignment: steer towards the average heading of local flockmates;
- Cohesion: steer to move towards the average position (center of mass) of local flockmates.
No choreography, no rehearsal, and no Visio diagrams – three simple rules followed by each individual create beautiful, cohesive complexity.
At BET, our software development Teams are guided by principles (rules if you are a “Boid”), which describe and support how we behave as individuals. In complex, fluid situations these allow us to make the right decisions that reliably result in the delivery of world-class software.