Monday, August 11, 2008

A plea for sanity ...

There has recently been a lot of discussion about "evolutionary" concepts in the cloud computing world.

As an ex-geneticist who trained at Cambridge University, I would be very grateful if all those wishing to use evolutionary theory as part of a PR exercise would actually read something about the subject matter before mangling it.

I know it is tempting to simply combine half misunderstood concepts like "gene mutation" and "survival of the fittest" into your own grand unifying theory of evolution, but please try and do some background reading first. That's the annoying thing about science, it does require some hard graft and learning.

Whilst an in-depth understanding of a few computer based languages makes the learning of other computing languages a relatively trivial task, this logic does not hold for other systems. Just because I can make a reasonable hack with C++ & SQL, does not make me a master of the universe, a great philosopher and omniscient about all other fields.

It sometimes seems as though some within the IT industry can get a bit carried away with their own abilities ... cure for cancer, no problem, I can already create entire universes in smalltalk.

If you're going to start discussing a field, have the courtesy to read about the subject matter before making your pronouncements.

P.S. On the subject of smalltalk and virtual worlds, I think the work being done at the Croquet Consortium is worth a look.

4 comments:

Anonymous said...

"Just because I can make a reasonable hack with C++ & SQL, does not make me a master of the universe, a great philosopher and omnipotent about all other fields"

But if it's in Ruby...

swardley said...

Well, obviously if it's in Ruby, that goes without saying.

phil jones said...

I get the main thrust of what you're saying, but to play devil's advocate for a moment, surely there *is* something very interesting about the mindset of software development.

Programming, understood well, seems to be a kind of synthetic mathematics : a whole set of conceptual tools and approaches to understanding complex systems through constructing working models of them. In particular what software geeks should be good at, is thinking about how to construct low level mechanisms that are sufficient to *implement* high level abstractions. In other words, they're specialists in the mappings between theoretical levels.

Today it seems that much of what we want to know about the universe is the behaviour of complex aggregations. And in many cases, approximate models can tell us more than "traditional" analysis and experiment on the individual parts.

Given that Darwin framed his model of evolution without any reference to genetics, isn't this actually a good example of a case where the specifics of the parts has actually mattered less than the overall framework?

Of course, science (and disciplines like bioengineering or materials science) requires a two-pronged attack, from the bottom up and the top down. Software people are unlikely to make breakthroughs in actual science without a full grounding in the details. (Although are they any less likely to make breakthroughs than pure mathematicians working on abstractions that only find application later?)

However, to apply the lessons of evolution or immune systems or the biological cell (as in the inspiration for objects in Kay's version of OO) to other complex systems seems to be far more about understanding the general forms of the theory and inventing relevant implementations that suit the constraints of the prefered substrate, than caring about the specifics of the orginal implementations.

swardley said...

"Software people are unlikely to make breakthroughs in actual science without a full grounding in the details", in other words people who are not experienced and knowledgeable about a subject are therefore less likely to make discoveries in it.

This is the problem at the heart of the statement that "In particular what software geeks should be good at, is thinking about how to construct low level mechanisms that are sufficient to *implement* high level abstractions". Unfortunately you cannot create low level mechanisms without an understanding of the subject and some '"traditional" analysis on the individual's part.

Of course I agree with you that our best methods of modelling the world today include probabilistic and fuzzy based complex adaptive systems, however, many (if not the majority of) software developers are not directly familiar with complex adaptive systems and are instead trained in very linear models.

The willingness to apply "general forms of the theory" without any understanding of what those "general forms of the theory" are, is more than just a lack of caring about the specifics. It's a willingness to make up half baked conclusions based upon half heard concepts rather than to actually do some investigation.

This is what I object to.

Interesting comment phil.