I don’t write about software development very often on here, but I’d like to summarize some of the highlights of the QCon conference I attended this week.

First two days: tutorials

I really liked the tutorials, I think mostly because the smaller environment lead to more discussion and diving into details. I attended the Domain Driven Design and Domain Specific Languages tutorials.

The DDD tutorial had a lot of good insights, the best probably was that we should spend the time to figure out what part of the software we’re building is really core to the domain of the business and make sure to design that really well to reflect the business. Other parts are slightly less important, but will benefit from the good design of the core.

The DSL tutorial was more interesting from a forward-looking perspective. I can see DSLs being useful in some cases, and no one was saying they are universally useful. But, there are some very early stage development tools that try to model everything as a DSL. No one seems to know yet how well these tools will work, but it will be interesting to see.

Conference

The last 3 days of the week were the conference. The main themes, at least of the talks I attended, were architecture of large-scale systems, REST vs. SOA, and new technologies.

There was only one session I didn’t like. The architecture talks were generally about how various companies architectures look today, and sometimes how they evolved over time. One of the talks showed how one company composed a new application with pieces of their existing architecture (that are also sold as services) and ended up giving no concrete details of any of it. That’s great if I happen to want to buy those services but provided me no insight otherwise.

My favourite conference talks were:

  • The architecture of Second Life. What set this apart was that he covered how their architecture evolved over time, what mistakes were made, and how they solved them. I find sharing mistakes more insightful than successes. Almost anyone can read a few books and sketch out what should be a decent architecture (not that it would necessarily work, though). But, seeing the problems others ran into while trying to apply those principles in the real world is very useful.
  • The REST vs. SOA talk given by one of the creators of SOAP. Most of the talks were REST-oriented, but this one was most interesting because the entire room full of people was hammering him with questions and counter-points and he fielded them very well. He dove down into very technical details of why each style works the way it does. To me, honestly, this whole religious war between REST and SOA feels very contrived because each has their use. The speakers I saw that I respected the most acknowledged each has their place.
  • Designing for testability. They didn’t go into enough details and examples, in my opinion, but the talk was still good. Anything which increases awareness that we do have to put a little thought into how code we write will be testable is good. And, any person who puts on a slide that “Statics are evil” is a winner in my books.

Another general theme of the conference was of dynamic (scripting) languages. This specifically is causing me to rethink a lot of my old assumptions. I’ve used scripting languages for years on side-projects I’ve been involved with. But, having worked in J2EE for many years now on very large apps and websites, my gut instinct has always been that a very large project required a mature language like Java with all it’s mature frameworks. Parts of the industry are now starting to embrace these languages, so it will be interesting to see how it works out. Languages like Ruby still have performance issues, but those will get worked out over time the same way it did with Java. My current thoughts are that if I were designing a very large website I’d consider implementing the view layer with Ruby or PHP and implement the back-end services in Java (assuming there were complex back-end services (and/or resources!)