05.27.08

Programming Languages – Clades and Clones

Posted in Software Development at 5:47 pm by Pablosan

You may recall from one of my previous posts that Freeman Dyson used English as his example of a linguistic clone and the Romance Languages as his example of a linguistic clade. This is a rather harsh handling of the English language, but I do see his point. It seems to me that, while more and more people can communicate in English, the language has become increasingly utilitarian. Following this to its end, it is not surprising that there are far more great works of art from countries like Italy, France and Spain than there are from all English-speaking countries combined. This is to say nothing of the superb artisans of the Far East, Africa and elsewhere. This supports the idea that clades foster diversity while clones are evolutionary dead ends.

When I look at programming languages, I see the same contrast. There are a couple of programming language clades that come to my mind: Functional Languages which include Scheme, Erlang, Haskell, ML, etc., and Dynamic Languages with some of the current chart-toppers being the ECMAScript family, Eiffel, Groovy, Ruby, and Python. These are the rebels: embracing change, trying new things, sometimes crashing and burning, sometimes leading the way into exciting discoveries.

I know I’m going to step on some toes here, but the clones are the long line of C-based languages including C++, Java and C#. They are the utilitarian languages: the languages most developers know. They are rather generic, meaning they do not excel at anything in particular but work fairly well in most situations. Evolutionarily, they are dead ends. This does not mean they are dead, just that they are more concerned with maintaining their position than exploring strange new worlds: diversifying. They are the old stalwarts. They may not be exciting, but they rarely let you down. And they do change over time, but the change is very deliberate; cautious.

Mr. Freeman’s harsh handling of clones notwithstanding I think, at least when it comes to programming languages, we need both clones and clades. In fact, I think all software developers should have members of both in their toolbox. Focus 100% on clones and you may go extinct. Focus 100% on clades and you may find a lack of opportunity. Working in Java, Javascript, Ruby and Erlang, while sometimes challenging to keep straight, has been a key ingredient in improving my craftsmanship. I would challenge any developer to do the same. Branch out; learn a new language; diversify. You’ll be glad you did!

05.20.08

Agile is a Clade

Posted in Agile at 12:19 pm by Pablosan

Just as the primary language of the Roman Empire, Latin, was replaced by the clade of romance languages, the Waterfall software development methodology has been replaced by the clade of Agile.

Like Latin in the Roman Empire, over time the Waterfall process became homogenized and ubiquitous: this was the beginning of the end… for both Latin and Waterfall. Latin did not disappear with the advent of the Romantic Languages, it simply became marginalized. So, too, I believe Waterfall is not dead, it’s just “mostly dead.” But this is old news.

Far more interesting to me is the parallel between the clade of romantic languages and the clade of Agile. As Freeman Dyson mentioned in his book, the shift was more than linguistic. He argues that the resulting societies with their cultures, arts, philosophies, etc. would not have occurred without the diversity of languages. So, then, diversity in spoken language plays a crucial role in the evolution of civilization and, more specifically, humans. In the natural world, diversity is a very good thing.

I find it fascinating how closely the timing of the arrival of Agile coincides with the arrival of so many new technologies: Aspect-Oriented Programming, Inversion of Control and Dependency Injection, Spring, Guice, AJAX (and all it’s associated frameworks and libraries like GWT, YUI, dōjō, script.aculo.us, etc.), Ruby, TDD, OSGI, Social Network Services, Cruise Control, Hudson, and many, many more! It seems to me that at the same time Agile showed up on the scene there was an explosion of new discoveries. Maybe this is just coincidence, but my hunch is that methodologies like eXtreme Programming, Scrum, Lean, FDD, Agile Unified Process, Crystal and DSDM were the spark at the beginning of this technological explosion. I’m not saying that Agile is directly responsible for all of this, but that it was a significant enabling force behind this rapid proliferation of new technologies.

Another way to put it: I don’t think we would have the technical diversity we enjoy today had we stuck with Waterfall. In technology, as in nature, clades bring life and diversity: clones are dead ends.

05.16.08

Clades and Clones

Posted in Agile at 3:44 pm by Pablosan

One of the things I look forward to about business trips is a chance to catch up on reading. I have a stack of books that continues to grow taller because new books are being added to it faster than I can read them. Some of these books are the obligatory, computer geek books; some of them are fiction (many times, these are common “geek” fare, e.g. Neal Stephenson’s Cryptonomicon); and some of them are a bit more esoteric, many times dealing with topics like science or religion and, rarely, philosophy or history.

The book I was able to finish on my recent trip to Buenos Aires is Freeman Dyson’s Disturbing The Universe, which is part auto-biography, part science text book, and part futuristic imaginings. Toward the end of the book he discusses the role of evolution in the progression of human language. Mr. Dyson holds that language diversification was a necessary ingredient in human evolution:

“It is true that a world with a universal common language would be a simpler world for bureaucrats and administrators to manage. But there is strong evidence, in our own history and prehistory as well as in the history of contemporary primitive societies, to support the hypothesis that plasticity and diversity of languages played an essential role in human evolution. It is not just an inconvenient historical accident that we have a variety of languages. It was nature’s way to make it possible for us to evolve rapidly. Rapid evolution of human capacities demanded that social and biological progress go hand in hand. Biological progress came from random genetic fluctuations that could be significant only in small and genetically isolated communities. To keep a small community genetically isolated and to enable it to evolve new social institutions, it was vitally important that the members of the community could be quickly separated from their neighbors by barriers of language. So our emergence as an intelligent species may have depended crucially on the fact that we have this astonishing ability to switch from Proto-Indo-European to Hittite to Hebrew to Latin to English and back to Hebrew within a few generations.”

Dyson goes on to talk about the roles of clades and clones in biological and linguistic evolution. His primary example of a linguistic clade is the appearance of the romantic languages:

“A great civilization, unified by the Latin language, collapsed. In its place appeared the clade of new Latin-derived languages – French, Spanish, Italian, Portuguese, Romanian – each eventually giving rise to a new civilization with literature and traditions of its own. The clade also contained some other languages – Catalan, Provençal and Romansh – which still must struggle for existence against their more powerful brothers.”

In contrast, his description of a linguistic clone (the antithesis of a clade):

“A linguistic clone is a monoglot culture, a population with a single language sheltered from alien words and alien thoughts. Its linguistic inheritance, propagated asexually from generation to generation, tends to become gradually impoverished. The process of impoverishment is easy to see in the declining vocabulary of the great writers of English from Shakespeare to Dickens, not to speak of Faulkner and Hemingway.”

I have always been interested in linguistics, etymology and the like, but what on earth does this have to do with software development!? Quite a bit, I think. Maybe I’m being a bit too simplistic, but the primary lesson I see here is “diversity is a good thing.” Any time we seek conformity in our approach to software development or the tools we use, we risk becoming a clone. A clone is a dead end. Embracing diversity, while making things more complicated, also seems to be the road to rapid progress. I see two concrete examples of these conflicting ideas in software development: first in software development methodologies and, second, in programming languages. I’ll delve into each in my next installments.

05.07.08

Spending Some Time With My Fellow Americans

Posted in Travel at 3:49 pm by Pablosan

I am wrapping up the fourth and final week of a business trip to my company’s office in Buenos Aires, Argentina. It has been a wonderful experience, and I have learned much during my stay here.

I am down here to perform training: LOTS of training… as much training as can be crammed into a four week trip. I asked my first class this question: “Does it bother you that we, in the United States, refer to our country as ‘America’?” The answer was unanimous: “Yes!” It does seem a bit presumptuous on our (the U.S.) part, doesn’t it? And this is only the beginning…

I had a great conversation with a new friend, Fernando, over lunch last Sunday. He reminded me (all in good fun) of how many ways the U.S. seems to come across as “a world unto itself.” First, pretty much every spot on the globe currently uses metric as their measurement system. Not only is the U.S. one of the very few holdouts, we have the audacity to call our measurement system the “Standard” Measurement System.

Then we talked about sports. Our baseball series finishes off with the “World Series”, at which nations from all over… er, one continent vie for this title of global dominance. From their we go to the NBA… same story, only this time it’s relegated to a single country. Another that I am almost ashamed to admit: WWF. Finally, the pièce de résistance: football. The rest of the world, including all other English-speaking countries, uses the term for a sport where nearly all of the players on the field move the ball with their feet (novel concept, eh?). The U.S. decided to apply this same term to a game that is only played in the U.S. and where only one player from each team can actually move the ball with their foot!

I started this trip with certain expectations: that I would be dealing with bright people who are eager to learn and ready to work hard. Having been here for over three weeks now, I can honestly say my expectations have been exceeded. My suspicions have been confirmed: the reason companies in the U.S. are opening development centers around the globe is because there are many people, like the people I have had the pleasure of working with here in Buenos Aires, who are very intelligent and very eager to make the best of new career opportunities. I think many software developers in the U.S. could learn a thing or two from our fellow Americans from the south.