Thursday, 19. July 2007
Software Design Creationism
In case you have known me or this web log for a while you probably know that I am all into the evolutionary style of software development. In other words, I am a strong believer in the theory that software design - and software architecture as well - should be tackled step by step, from very easy to (maybe) a little bit more complex, from one requirement to the next. My experience so far has been that almost anything which had to be designed or "architected" could be - or could have been - done in the evolutionary style; see my talk on Evolutionary Software Architecture for more details on that subject.

I emphasized the "almost" in the section above not to stress the impossibility of evolving certain architectural characteristics - I just haven't seen it being accomplished so far - but to point you to an analogous theme: Biological Evolution vs. Creationism. It's the likeness of rationale that strikes me: Creationists very often take an isolated biological item - say the third vertebra of a frog's cervical spine - and argue that since no biologist has shown how this bone could have developed in many iterative steps it must have been created by God. As soon as this issue has been tackled by a PhD thesis or five the next detail will be used to "prove" that "intelligent design" must be at work (see Richard Dawkin's book The God Delusion for more about this topic). I've had to face many similar arguments from proponents of up-front-design and -architecture: "How can security, internationalization, persistence etc. be built into a system step by step and in retrospective? You have to do it right from the start!" I often don't have an answer then ... until someone describes how she did exactly that. I've seen that happen with internationalization, transactions and lots of other stuff and I'm sure more seemingly uncrackable nuts will follow.

Analogies of this kind are a slippery slope, and I don't want to imply that proponents of up-front-architecture have as weak a case as creationists do. No, I'm fully aware that there are systems that have been developed that way and that are as healthy as their evolutionary counterparts. The thing I want to stress, though, is that a few unsolved sample problems are not enough to weaken a theory that comes with strong supporting facts.

... link


Monday, 14. May 2007
Learning Groovy
There's a standard trick I use to force myself into learning new stuff: I agree to write an article or give a talk on a topic that I want to know more about. Groovy - and dynamic languages in general - is one of those topics. That's why I accepted an invitation to talk about the differences between scripting languages next December and that's why I added "Using Groovy for testing Java applications" to the table of contents of a power workshop I submitted for this year's JAX conference which took place last month without me.

Here is where I got most of my Groovy knowledge: Groovy in Action by Dierk König et al. I got involved quite early as a secondary reviewer, so I had the PDF around a couple of months before final publishing. I made use of it - mainly as my source for quick (and offline) reference.

Two weeks ago I received the printed copy... And now I'm all fallen for reading a programming book cover to cover; a very rare thing nowadays after 25 years of mostly suffering from the bad state and style of computer "literature". Yes, I was given a complimentary copy, and yes, it's a great book all the same. It comes with more wisdom about language design and good OO than most books having "language design" and "good OO" in their titles. Put your favourite criminal story away, pick up GinA!

... link


Friday, 27. April 2007
JAX Slides Online
I put the slides from my session and "power workshop" online. For some weird reason slideshare.net does not want to display one of the presentations - I tried it several times. That's why you find the (German) stuff in two different places: It is only a first step, though, as far as Test-driven Ajax is concerned. I'm going to put the demo, its sources and all of its automated tests online. Moreover, I'm really and absolutely and fully determined to write a couple of blog entries on the topic. Now or never.

... link