Sunday, July 06, 2008

Convention Over Configuration, Are We Going Round in Cirlces?

Convention-over-configuration is becoming increasingly popular as a term of reference to that which is the design or usability principle. I speculate that it is picking up momentum nowadays due to the Jedi-like Force that is Rails, a bunch of hokery-pokery, voodoo and black-magic. What strikes me is that not so long ago there was similar advocation of declaritive-over-imperative, presumably for language paradigms. It therefore seems to me that we are going in cirlces: I have seen the Ruby/Rails guys I work with wave their magic-wands and it sure as hell looks like a bunch of imperative command-line stuff to me. But perhaps, generally speaking, I just have the wrong perspective, a two-dimensional perspective. What if we look at this in three-dimensions and shift the metaphor to a cone rather than a circle. And with each iteration we move toward the apex; we move up a meta-level in search for the ultimate abstraction, whatever that maybe. So what is next? Are we due a declarative-renaissance? Kind-of feels too soon for that, ay? As well as Ruby on Rails, my colleagues and I are developing Flex apps. I mention this as Flex's MXML is the closest thing I can think of, off the top of my head, that is declarative (there is Maven, but let's not go there). If we limit the space for things to consider to UI frameworks, MXML trumps all others. In fact (or at least in my opinion) it is, by design and intent, a deliberate declarative abstraction on ActionScript. Somehow this example does not quite fit the bill. It may epitomise declaritive-over-imperative but I feel it causes too little displacement, or rather too litle attention relative to Rails. It does not really exemplify something so grand as the community chorusing an opinion [as if it really ever does]. Perhaps my exploration of this idea is going to far ahead. MXML and whatever are likely residual from the last wave-of-declarative. Incidentally, I think it is safe to say we are entrenched in a configuration mess. However, continuing with the metaphor: While rising to the top of the cone, our radius and thus space for improvement is shrinking. If what we are doing is layering abstraction on absraction to make what we have been doing (OOA/D/P) easier, maybe it is time to change what we have been doing. Perhaps get behind the functional-renaissance; perhaps adopt Erlang. Perhaps we will have a new cone for what we would be doing, thus a new base and therein a greater radius to improve the common practice of what would be done.


So this is what happens when I sit and explore a wild thought in isolation. What I have articualted I see is tangential in places, but I hope not (too) incoherent; it could be a bunch of BS or maybe there is some substance there. In anycase comments are welcome, validating or invalidating.


Unknown said...

Who tells you that the cone is not upside-down and the radius is getting bigger and bigger while we are moving up?

Darren Bishop said...

It's just the way I visualized it.

When new technologies come out, they are often raw, over comlicated and thus have limited application. Then someone comes along and abstracts away the clunkiness and makes it more accessible.

Consider a straight up development project, especially if done Agile. The greatest value should be gained earlier. Then (arguably) dimishing value is delivered as time progresses i.e. while observing the law of dimishing returns, to know when to stop.

I guess for me the metaphor of an upward pointing cone works to reflect the marginal improvements in each abstraction increment. This perhaps would be the inverse of the breadth of what one can achieve leveraging that level of abstraction.

Anyway, it is after all a 'personal thought'. Turn the metaphor on it's head if it suits you.

Cheers for your input.