Capping IT Off

Capping IT Off

The invisible hand, the sequel

My previous post on The invisible hand created several interesting discussions (thanks Andy, Peter, John, Alex and Mark) and I would like to share some of it with the rest of you. Peter (Evans-Greenwood, CTO Capgemini Australia) brought up the interesting theory of swarm intelligence and I’ll quote Wikipedia to bring you quickly up to date: “Swarm intelligence (SI) is artificial intelligence based on the collective behavior of decentralized, self-organized systems. … SI systems are typically made up of a population of simple agents interacting locally with one another and with their environment. The agents follow very simple rules, and although there is no centralized control structure dictating how individual agents should behave, local interactions between such agents lead to the emergence of complex global behavior. Natural examples of SI include ant colonies, bird flocking, animal herding, bacterial growth, and fish schooling.” To extend the list of “natural examples”, I would like to add “Mumbai drivers” as well. If I may. Andy (Mulholland, Global CTO Capgemini) replied on Peter’s comment: “I had not thought of swarm theory for Mumbai traffic but now that it is raised it makes perfect sense”. And it does make sense, really!

  • “The agents follow very simple rules”: Mumbai drivers honk in all situations to warn others
  • “no centralized control structure dictating how individual agents should behave”: very true, haven’t seen any speed camera or police controls
  • And the best one: “local interactions between such agents lead to the emergence of complex global behavior”: As John pointed out in his link that he supplied in the comments, it is the selfishness of the individual that drives a knowledge base, or applied to Mumbai traffic: “The Mumbai traffic participants are selfish in the sense that they do not want THEIR car to be damaged, thus resulting that other cars don't get damaged either.” This all leads to a situation where there are not that many accidents as you’d expect. The selfish drive for self preservation, benefits the whole system.
Alex added a link to a blog entry of the Austrian Economists that did an experiment with speed limits on a highway. On a highway where the speed limit was 50 MPH, everyone was driving 70 and the traffic was flowing rather well. As an experiment, four cars drove 50 MPH just next to each other and thus blocking the traffic, it created a huge traffic jam. If you apply this to Mumbai traffic, you can easily see that there is a much higher throughput possible in this seamlessly chaotic situation. Because they are not following the lanes, speed limits or anything else, but just take every millimeter that is possible and honk their way through traffic. A question that I still have is whether this selfishness or self-preservation attitude from people always creates an optimum? Or better said, in what situations is this behavior desirable? Could you build your commercial software like this? What I think is that you have to distinct two main categories:
  • The team or group is more important than the individual: think about commercial software development and sports teams. Of course you need to have expert developers or star players, but in these two cases, the group aspect outweighs the individual aspect. A nice example is a soccer club that has only the best players of the world in the team. When you look then sometimes at their ranking and game play, you see that each individual is brilliant but there are too many egos walking on the field. 11 brilliant soccer players do not make a brilliant soccer team. The same applies to commercial software teams: if you have five superstar developers that can think of the most incredible algorithms, it is no guarantee that your project is finished in time and in budget.
  • The notion of “group” is actually just a side effect of similar behaving individuals, e.g. Mumbai traffic. No Mumbai trafficker wakes up and thinks “well let’s create a cozy group of mad-driving cars and rickshaws today”. The same applies to economics: a business man’s primary goal is not to create a perfect running economy, but to maximize its business’ profits. But in order to maximize its profits it has to participate in the market workings of supply and demand and thus aid in reaching an optimum. Not because he wants to, but because of selfishness. A good working economy creates a stable environment and thus a higher chance of profits.
To which category does an open source software project belong to? My first reaction is to say the second, but the more I think about it, I’m rather going for the first category. Because when you look at big successful open source projects, they are all managed by either a commercial company, a governing body, some strong community leaders or other way of centrally coordinated effort. True, you see a mixture with the second category in the sense that they often make use of these individuals that are in it out of selfishness. However selfishness in the broadest sense: pride or honor, improving own skills, community recognition or just because they really need that particular feature. Luckily the open source community is mainly driven by the last group that contribute code that was made because of something that THEY needed. I did put the commercial software development in the first category, but would it be possible to have a commercial project that is driven by selfishness of the individual?

About the author

L. Provoos
L. Provoos
9 Comments Leave a comment
I don't know whether it is actually wise to say this, but I choose my employers using a rather selfish approach. I'll stay committed as long as MY personal expectations are met. My guess is that I am not alone in that attitude. Moreover, I often advice more junior colleagues to always be clear and transparent about their expectations. Individual job satisfaction leads to healthy companies. So, I have just used the word company as a synonym for "swarm". In these swarms, people behave in such a way that their personal happiness is not violated and preferably increases. Developing mashups will currently increase my happiness by at least 2%, so bring it on, Capgemini!
so this proves my mother wrong at one point: being selfish is not always bad ;-) for all the other points she raised, she is still right. mostly. kinda.
all jokes aside, i was just thinking about the fact that sacrificing yourself for the greater good would lead to... no good... BUT i actually forget that it is also about selfishness.
if everyone agrees in a company to have a lower end year bonus in order to save the company, one could argue that the employees do it for the greater good: preservation of the company. but when you think about it, this is pure selfish behavior just like the invisible hand theory in economics! the only reason why the employee would do that is if the company survives he or she can keep their job. there you have it: self preservation.
damn, are we selfish creatures or what: :)
Actually, we are quite dualistic beings. We are selfish and social at the same time. The social side is that we feel more secure about our behaviors and opinions when they are shared with others. We tend to do what others in our surroundings (even if these are virtual, like online communities) do, especially in unfamiliar situations.
You were talking about how we could benefit from selfishness in software development. I believe that it is at least important to know what personal goals the members that you select for a team, have. These goals should be balanced in such a way that unresolvable conflicts can be avoided.
Actualy the Wikipedia definition is a bit too crude to my liking. I the case of social insects (bees, ants, termites) there can be said to be a certain form of central coordination. i.e. a queen who controls behaviour by means of feromones. I do agree that in herds of wildebeast and flocks of birds there probably is no centralized control (although there may be a social order, think of the pecking order in a group of chicken).
It might be interesting to see if this difference between having or not having some form of central control has any influence on group behaviour, and how this translates to ways of working in humans.
Should check out this blog article by the Austrian Economists on the "Invisible Hook", the earlier discussed theory of the invisible hand applied on pirates :-)
<a href="http://austrianeconomists.typepad.com/weblog/2008/05/the-economics-o.html" rel="nofollow">http://austrianeconomists.typepad.com/weblog/2008/05/the-economics-o.html</a>
jarnold's picture
Sorry, I disagree.
I don't think Mumbai traffic is a good metaphor for software development. The rules of engagement for software development are much more complex than for traffic and would never arise in a self-organised way.
Someone had to sit down and think about compilers, version, configuration and release management, requirements gathering and all the other CMMI fun. That's before we even start to think about making sure that new updates don't disable old code.
And one more point about Mumbai traffic (and Indian traffic generally), having experienced it: it's deafening! That's an externality that the Indian traffic market can't handle.
gasharma's picture
"The Mumbai traffic participants are selfish in the sense that they do not want THEIR car to be damaged, thus resulting that other cars don't get damaged either.” This all leads to a situation where there are not that many accidents as you’d expect. The selfish drive for self preservation, benefits the whole system."
It depends what you mean by "benefits of whole system " If system here is traffic of Mumbai then selfish behaviour hardly leads to collective benefit. In fact everybody loses because of delay caused by un-orderly traffic. You can view it from Games Theory perspective. If every driver was playing the game with win-win transaction in mind then they would self discpiline themsleves instead of creating deadlocks and jams because of "me first" behavior.Games theory also proves that self-serving behavior is a winning behavior in a group in long run. But what you see in Mumbai traffic is actually behavior which leads to collective (and hence individual) loss. If drivers in Mumbai were thinking of optimising thier gains (and hence being selfish) for long term benefit,they would self discipline and organise into lanes. What they are doing is that they are looking for short term gains and hence as a group losing.
Gaurav, you are correct. This chaos does not lead to a more efficient traffic flow. The selfish behavior I was referring to does benefit the fact that in my view, there are remarkably few accidents happening when you look at the driving style.
The thing I am wondering about is if everyone would follow the traffic rules as they do for instance in the Netherlands where I live most of the times, would that change much? It still does not solve the root of the problem, which is too many people on the road and badly designed traffic situations.
After living a month in Mumbai, I think it is a problem one cannot solve with enforcing traffic rules. Given the population and growth, having a massive metro system and more carefully designed traffic situations (that avoids bottlenecks) could solve partially the problem.
But you are right, I am sometimes wondering about this when I am in the auto rickshaw and seeing yet another driver that squeezes itself into a small hole, thus blocking a part of the road, with the effect that this blocked lane does block someone else a little bit further and everyone is standing still. If only that driver would wait like 15 seconds, the problem would have never happened.
A lost case?

Leave a comment

Your email address will not be published. Required fields are marked *.