Chris Richardson - enterprise POJOs

My book

Calendar

««Jul 2008»»
SMTWTFS
  
1
2345
6
7
89101112
13141516171819
20212223242526
2728293031

My Top Tags

                                                                               

My RSS Feeds








 

I run a consulting and training company that helps organizations build better software faster.

We provide a variety of services including:

  • Development - we can build your application for you
  • Deployment - we can find a hosting partner or deploy your application on Amazon EC2
  • Training classes for Spring, Hibernate and Acegi Security
  • Jumpstarts to get your project off to the right start
  • Reviews to improve your architecture, code and development process

For more information contact me.

 

My bookmarks

Mailing List

The Spring Experience and the singularity

posted Monday, 10 December 2007

This Wednesday I'm off to the Spring Experience where I am giving a couple of presentations on building and testing rich domain models. I'm excited about going for a few different reasons. There are the fond and not-so fond memories of working on the final few tasks of my book during the 2005 conference (see Ted Neward's posting for description of what that was like). Also, my last three trips were to places that were close to or below freezing (e.g. 15F) and so going to Florida will be a welcome change. Last but not least, speaking at sea level should be a lot easier than at my last conference where the air was noticeably thinner due to the altitude (9300 ft).

I'm not sure what book I'm going to read on the plane this time but on my last two flights, I read the book "The singularity is near" by Ray Kurzweil. It describes how technology, which is improving exponentially (e.g. Moore's law), will, in 20-30 years, dramatically change many aspects of life including what it means to be human! While reading the book I kept on wondering whether we could develop the necessary software? Software, of course, plays a major role in modern technology and this begs the question: are we as developers improving exponentially? In other words, are we becoming exponentially more productive and more able to tackle larger and larger applications?

There are reasons to say no. Development practices have certainly improved significantly but have not been adopted universally : to paraphrase Steve McConnell "it's as if pencillin has been invented but doctors are still using leeches". With programming languages and tools the opposite is true. In the past 20 years, there have only been a few significant improvements to programming languages and tools. For example, aspect-oriented programming, IDEs supporting refactoring and tools such as Mylyn. Instead, powerful concepts and tooling that were pioneered by niche languages such as a LISP and Smalltalk have become widely adopted.

On the other hand, there is one reason to be very optimistic: the availability of a large number of often free, high-quality libraries and frameworks. Although, LISP and Smalltalk have rich libraries they are dwarfed by what's available for Java.  For instance, the code for even a reasonably complex web application is often insignificant when compared to the megabytes of frameworks that it's built upon: open source libraries such as Spring and Hibernate, the application server, the JDK etc. Certainly, not every framework is suitable to every application but using the appropriate frameworks can boost productivity.

Sadly, not everyone believes in leveraging frameworks. Recently, I was surprised to hear about a Java web application team that is apparently proud to "program as close to the metal as possible"  and avoids using Java frameworks. Perhaps they really are a super-productive team that is able to write high quality code without leveraging frameworks.  I know, however, that for the applications that I build, frameworks such as Spring boost my productivity and improve the quality of my code. I can't tell whether it's an exponential improvement but it's certainly another reason why I am going to the Spring Experience.

tags:            

links: digg this    del.icio.us    technorati    reddit