How The Paradox of Choice Influences SoftwareFiled Under Thought Stuff
Barry points out how the number of absurdly trivial choices we are forced to make on a daily basis has grown exponentially in recent times. Rather than increasing our satisfaction, he argues that this trend actually detracts from our quality of life by leading to paralysis, distraction, and dissatisfaction stemming from lost opportunity costs and unmet expectations.
At one point he cites a study done on investments in voluntary retirement plans which showed that participation in the program dropped by 2% for every 10 mutual funds that the employer offered. The increased complexity and effort required to make a decision in cases where employers offered too many fund choices seems to have paralyzed many participants, thus causing them to miss out on thousands of dollars of employer matched funds.
This line of thought led me to think about Jeremy Miller’s recent post, Breaking News: Java trounces .Net in OSS activity. In this post, Jeremy laments the relative lack of Open Source activity and framework alternatives in the .NET space as compared to the Java space. The underlying assumption in this position is that a high number of options is a desirable metric and that .NET developers should strive to create as many if not more alternatives than currently exist in the Java space.
Although I am of the opinion that we currently suffer from too few alternatives in the .NET world due to the domination of a single vendor, I am not convinced that we should strive to outdo the Java world in terms of the number of alternatives we have available to us.
I remember listening to an old interview with Don Box, Ted Neward, and Mark Pollack in which they discussed the differences of the Java and .NET worlds in terms of values and culture. One difference they talked about was the overwhelming number of choices available to Java developers and how choosing the development landscape at the beginning of a project could be a time consuming endeavor, especially if the team consists of several strong willed developers with different preferences.
I can’t help but wonder if this dynamic is less than optimal from the business perspective in terms of lost time and productivity. I also question whether I would really want to spend my own time learning the relatively trivial nuances of dozens of a particular type of tool or framework in order to make an informed decision when it comes at the expense of diversifying my skills in a wider range of other areas and technologies.
At the end of his talk, Barry emphasizes that excessive choice is definitely only a problem of affluent societies and that there are plenty of places in the world that suffer as a result of too few choices. He muses that what is really needed is a redistribution of choices in order to improve everyone’s lives.
Perhaps the same analogy holds true in the world of software.
The trick is to figure out whether either Java or .NET are currently in the sweet spot when it comes to the number of choices they offer. Do they both currently represent unhealthy extremes? Will both camps remain at these extremes due to their origins?