For a few years now, November has been the month of QCon San Francisco for me. So far it has proven an excellent conference with lots of thought-provoking presentations and conversations. This year was no exception. Read on for my personal high- and lowlights. The Conference If you've never heard of QCon before, the conference bills itself as a conference for and by software developers and architects of any "denomination". Walking the hallways you are equally likely to encounter a Rubyist, Javaan or .NET afficionado. This refreshing diversity leads to interesting presentations and coffee-corner conversations. For me as a Java developer, it also meant that the news about Java 7's closures by and large passed me by. :) Given it's target audience of predominantly teamleads and architects, QCon has less technical depth than, for instance, the Devoxx conference. But with entire tracks dedicated to Ruby and emerging languages (including some C#/F# sessions), it certainly has more breadth. For me personally this is one of the key reasons to attend. Keynotes The keynotes this year were a bit of a mixed bag. On Wednesday, two venture capitalists spoke about what they looked for in startups when deciding where to invest. The process they described resembled the Lean Startup ideas of iterating as fast as possible with direct customer involvement. Interestingly, they mentioned Scala and Groovy as developments that they as VCs keep a close eye on. Don Box experimented with Twitter during his keynote. Not saying a word, he wrote tweets on his laptop for the first 20 minutes. An interesting experiment, but it didn't manage to hold the attendees' attention. When the subsequent code demos either failed or proved unable to bring the audience back, Don himself also ran out of steam and brought the keynote to an abrupt and disappointing close. Still good of him to try something new. The last keynote of the conference was by David Chappel of Oracle who presented and then demonstrated Oracle's cloud tooling. Way too Oracle-centric for my money. For next year, I really hope QCon will do away with the vendor keynotes, even if this means going back to 2 keynotes like the last few years. Someone like Kent Beck or Uncle Bob has much more interesting things to say. Highlights Dan North's presentation about a challenging agile project was great. It was filled with lessons about transitional architecture and agile adoption and plenty of humor to boot. In Lessons learned from Architecture Reviews Rebecca Wirfs-Brock discussed not only how to perform an architecture review, but also how to effectively present an architecture depending on your audience and the political environment. Eric Evans talked about incorporating modeling and design into the agile development process and presented an early draft of his model exploration process. Eric uses this process when doing DDD consulting for clients and is useful for anyone applying the technique. There was a lot of interest in lean software development and kanban as well. I attended presentations by Jeff Patton and David Laribee which provided useful practical tips and real-world experience. Though I didn't attend it myself, I heard a lot of good things about Henrik Kniberg's talk as well. One of the most impressive tracks at QCon is Architectures you've always wondered about. I'm always inspired by seeing how sites such as eBay or LinkedIn handle their scaling requirements. This year's session about Amazon S3 was equally impressive, describing design patterns for building applications that can guarantee uptime in the face of hard drive, network or machine failures. To test their service, Amazon regularly holds unannounced "game days" where they take an entire datacenter offline to see if their architecture can handle it. That is some serious testing. Trends During the conference, I noticed a lot of interest in:
- teaching people the craft of agile software development. Presentations discussing personal traits required for programming and software apprenticeship were the result.
- JVM-based languages like Scala and Clojure. This is hardly news, but what surprised me was the level of interest there was from non-Java developers. Several people I talked to told me that they were experimenting with these languages in their spare time while working .NET at their dayjob.
- Continuous deployment (meaning continuous deployment to production).