Welcome to the third edition of “Think about it!”
The July 2007 issue of National Geographic Brasil featured an article about Collective Intelligence. It discussed the behavior of birds, bees, ants, and fish, which was being studied and applied in the workplace, at airports, and on the internet. I would add that it can also be applied to software development to make processes easier and more efficient.
An ant colony can solve problems that are impossible for any individual ant, such as finding the shortest path to the best food source. Individually, they may be stupid; collectively, they are agile and efficient. This phenomenon is called “swarm intelligence.”
One very important feature of an ant colony is that nobody is in charge, yet it works very well without a control system. The colony operates through many interactions among the ants, each following very simple practical rules, with communication taking place through touch and smell (pheromones).
Another interesting example is a swarm of bees. Even when they frequently disagree about where to establish a new hive, they always choose the best location. They reach this decision through independent assessments and some kind of vote. Once again, it is decentralized collective work. The queen bee’s only function is to lay eggs.
Ant behavior has been widely applied in computing in the field of combinatorial optimization through the “ant colony” algorithm. It is used to find the best route for a city’s garbage collection, to transport fuel from geographically dispersed oil wells, and to solve other problems, with the goals of reducing service time and fuel consumption and avoiding having a truck drive down the same street more than once.
We can see some of these collective-intelligence principles in Extreme Programming practices such as “Collective Code,” where all classes and methods belong to the team and any member can change them when necessary without asking permission. To make this practice safe, however, the team must invest in creating automated tests.
Drawing an analogy with the ants’ simple communication, XP uses practices such as “pair programming” and “stand-up meetings.” Knowledge can be shared and spread among all team members, thereby supporting collective code and avoiding the risk that a particular routine or piece of code will go unmaintained because a developer is absent due to illness. Someone else can quickly take over because they already have an idea of how the code works. The meetings keep development on track and help prevent it from drifting away from what was prioritized in planning.
There are many other values, principles, and practices in XP, which together make development more productive. But one thing should be emphasized: for it to work effectively, each team member must be committed and take responsibility. This must be clear; otherwise the team falls back into other hierarchical practices, where a developer waits for the project manager to tell them what to do.
It is much like the collective behavior of bees, ants, and fish. On their own they are easy prey and cannot perform complex tasks, but together, with each doing their part, they accomplish things that continue to fascinate researchers.
Well, that’s all for now. Until the next “Think about it!”