Disclaimer: Last year, I spoke at the Better Software Conference, owned by the same group as the Better Software Magazine. In addition, Lee Copeland was my interviewer prior to be accepted as a presenter.
In this month's issue of Better Software Magazine, the Technical Editor Lee Copeland takes a look at the Whorfian Hypothesis and its implications on software development. What is the Whorfian Hypothesis? No, it has nothing to do with Star Trek, instead it's a subtlely complex relationship between words and thought. According to Wikipedia:
Put simply, the hypothesis argues that the nature of a particular language influences the habitual thought of its speakers. Different patterns of language yield different patterns of thought.
So what does this mean for software development?
Think back over the changes in software development in the past five years. Yes, we've had object oriented programming for almost 40 years now, but it's been in the past ten to fifteen years when it has really taken off. If you stop and compare this with history, you see C++ coming into the mainstream in the late 80's and Java being born in the mid-90's so it makes sense from a technical perspective. But what did Object Oriented Programming give us?
I remember when I picked up my first Design Patterns book about four years ago, I was struck by this quote from Chistopher Alexander, one of the early inspirers of design patterns:
"Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you cna use this solution a million times over, without ever doing it the same way twice."
Now stop and combine this quote with the one above… what happens?
Once you have a way of describing the common solutions and even better – a way of communicating them to others – you end up with this odd position of this previously core time-consuming issues fading into the background and you're more able to focus on the aspects custom to your application…. and more importantly, in the last four years or so, the tools have begun to reflect and build upon that. They each are building upon the basis of having separation between the "important stuff" and the underlying operations required for every application.
Regardless of which language you're using, there are a variety of tools available. The ones I'm personally familiar with and might be reasonable places to start are Hibernate for Java, Ruby on Rails, and QCodo and Zend Framework in PHP. This is just the tip of the iceberg and you can dig and play in this area for a long time… and while you're not looking someone will create another.