This post began life as a comment on Stephen Downey’s blog.
If I was to sum up the web2.0 ethos in one sentence it would be this…
If someone says “you can’t or shouldn’t do XYZ on the web” – just go ahead and do it.
I’ve been steeped in Java and J2EE culture since 1999. What I’ve noticed is there’s a tendency among Java programmers to agonize and fret over things like scalability and reuse to such an extent that we end up using over-engineered frameworks, libraries and APIs. The canonical example of Java over-engineering is the XML API.
You want to read an XML document in Java ?
First you need to create a DOM parser object.
But wait … before you can do that you must first create a DOM parser factory.
But wait … before you can do that you must first create a DOM parser factory builder
… and so on and so on…
Dynamic Languages don’t have all these hangups, which makes it much easier to just get things done. I think web2.0 is a by-product of the wider adoption of dynamic languages. If you’re constantly being told that XYZ can’t scale or XYZ can’t/should’nt be done on the web, you either listen to your elders (Java has more than it’s fair share of self-appointed thought leaders) and acquiesce or ask yourself ‘why not ?’ and go ahead do it anyway.