InfoQ Homepage Articles Key Takeaway Points and Lessons Learned from QCon London 2010

## Irresponsible Architectures and Unusual Architects

Hugo Rodger-Brown mentioned about the introduction to this track:

Great presentation about the use of REST, and the role of the internet as an application platform. Over-intellectualized for my liking – some very simple concepts made to seem very complicated - but I liked the message. I totally agree that everyone should understand the core HTTP fundamentals – request/response pattern, HTTP verbs, status codes, header values – the specification is there, use it.

### Command-Query Responsibility Segregation by Udi Dahan

Doug Winter appreciated this talk:

This was excellent, and it was pleasant to discover that an architecture we’d already derived ourselves from first principles (which I can’t talk about yet) had an actual name and everything!  In particular he concentrated on divining User Intent rather than throwing in your normal GUI toolkit for building UIs – he took data grids to pieces, and championed the use of asynchronous notification.  The idea of a notification stream as part of a call-centre automation system, rather than hitting F5 to reload repeatedly, was particularly well told.

### LMAX - How to do over 100K contended complex business transactions per second at less than 1ms latency by Dave Farley & Martin Thompson

Hugo Rodger-Brown liked this session:

Great presentation from the team at LMAX on how to achieve 100k tx/sec at a guaranteed 1ms latency. Turns out it’s about getting some very clever people together and letting them solve some simple problems. Really impressive to hear from people at the top of their game about how they did it; so much more impressive than the waffle the blogocracy come out with (he says, whilst blogging). Inspiring.

Ok, the only thing I can say is - this hurt my brain. Their solution was computer engineering elegance, hitting the sweet spot at every point in the chain - really forced me to think about how to approach problems and really reminded me of the early days of PC's where every bit of performance was eeked out of the system.

### Simplicity - the way of the unusual architect by Dan North

Tim Anderson blogged on this presentation mentioning among others:

North talked about techniques for lateral thinking, finding solutions from which we are mentally blocked, by chunking up, which means merging details into bigger ideas, ending up with “what is this thing for anyway”; and chunking down, the reverse process, which breaks a problem down into blocks small enough to comprehend. Another idea is to articulate a problem to a colleague, which exercises different parts of the brain and often stimulates a solution – one of the reasons pair programming can be effective.

A common mistake, he said, is to keep using the same old products or systems or architectures because we always do, or because the organisation is already heavily invested in it, meaning that better alternatives do not get considered. He also talked about simple tools: a whiteboard rather than a CASE tool, for example.

Glen Ford noted on this talk:

Dan is a great speaker, entertaining and engaging. The talk started with a comical biblical style story with one of my favorite lines being - "And Maven brought forth a Plague of Apache Commons, and there was a flood of all the Libraries of the Internet as a judgment upon the people"

The talk was about how we over complicate things, gradually over time we introduce further and further complexity. Dan presented some techniques to try and address these tendencies.

### The Counterintuitive Web by Ian Robinson

One of the best talks of QCon, Ian delved into the differences between Operation and Resource centric architectures - some overlap with Mondays tutorial, but was in many ways complimentary.

He talked about how to map Domains on to Resources and how HTTP can be used appropriately as the Application Transfer Protocol and not just treated as a Transport Protocol. One of the best tag-lines of the talk was 'Intention should be written on the wire'. The idea that contracts can be expressed simply in the combination of link relations, media types, HTTP idioms and an entry point URI.

## IT - more than tools and technology

### What are we programming for? By Martin Fowler

Martin’s talk was given without slides and what appeared as mostly from the heart. It was basically a sampling of situations where work ethics come into play in our profession. His main message was that many software developers seem to view themselves as ”hired guns”, mercenaries that will do anything as long as you give them a spec. Questions like ”For what purpose will the software be used?” and ”Do I want to keep supporting this employer/client?” never seem to enter their minds. Well, maybe it’s time they did? Think about your own life for a second. Exactly for what are you giving away your talents? […]

I loved this talk and so did the crowd. Martin received very strong and warm applause. Coming from Adaptiv myself, a company with a strong CSR commitment, I was very happy to see these topics broached at a geek conference.

Tim Anderson made some remarks on Fowler’s talk regarding ethics in programming, including:

The topic itself has many facets, perhaps awkwardly commingled. Should you walk away if your customer or employer asks you to code the wrong thing – maybe enforcing poor practice, or creating algorithms to fleece your customer’s customers? What about coding for proprietary platforms owned by vendors with questionable business practices? Fowler mentioned that around 50% of ThoughtWorks solutions are built on Microsoft .NET; and that the efforts of Bill Gates to combat malaria was something that helped him make sense of that relationship. […]

Finally, he talked about the male/female imbalance in software development, rejecting the idea that it is the consequence of natural differences in aptitude or inclination. Rather, he said, we can’t pretend to have the best people for the job while the imbalance continues. I’d add that since communication is a major theme of Agile methodology, and that females seem to have communication skills that males lack, fixing the imbalance could improve the development process in other ways.

## Non-Relational DBs & Web Oriented Data

### Auntie on the Couch by Enda Farrell

Some interesting info on CouchDB use at the BBC, primarily around the ops side (restarts so quickly (<1s) that they can recycle processes on live production servers without triggering alerts). In summary, it works, at scale, and is easy to manage - go try it. (It powers users’ homepage preferences for one thing).

### MongoDB: huMONGOus Data at SourceForge by Mark Ramm

Twitter feedback on this session included:

kirkwy: From the MongoDB #qcon talk: "Figure out what YOUR app needs; don't obsess about scale you'll never need/achieve"

kirkwy: MongoDB talk: nearly as fast as Tokyo Cabinet, faster than CouchDB, with simple query language built-in

### Not Only SQL: Alternative Data Persistence and Neo4J by Emil Eifrém

Henrik Engström wrote many notes on this sessions, including:

The meaning of the term NOSQL is:

• not "Never SQL"

• not "No To SQL"

• is "Not Only SQL"

4 Emerging Categories of NOSQL

• key-value stores (based on Amazon's Dynamo Paper). Example Programmes: Dynomyte, Voldemort

• big table clones (based on Google's Big Table Paper). Example Programmes: HBase, Hypertable, Cassandra (which is used by e.g. Twitter)

• document databases (collection of key-value pairs, inspired by Lotus Notes!). Example Programmes: CouchDB, MongoDB

• graph databases (nodes, relations, key-value pairs). Example Programmes: Sones, Neo4J, AllegroGraph

### Project Voldemort at Gilt Groupe: When Failure isn't An Option by Geir Magnusson

Tim Anderson attended this presentation and noted:

Geir Magnusson from Gilt Groupe talked about the challenge of running a web site which has extreme peaks in traffic, and where every user needs dynamic data and transaction support so simple caching does not work. They were unable to get their relational database store to scale to handle thousands of transactions a second. They solved the problem with an in-memory non-relational database.

Hugo Rodger-Brown summarized his impression on this session:

Enjoyed this one - some great insights into using NoSQL from an ecommerce perspective (used for inventory / shopping cart if you're interested.)

### Social networks and the Richness of Data: Getting distributed webservices done with Nosql by Lars George &Fabrizio Schmidt

Matt Zimmerman also has many notes on this presentation, some of them being:

Lars and Fabrizio described the general “social network problem”, and how they went about solving it. This problem space involves the processing, aggregation and dissemination of notifications for a very high volume of events, as commonly manifest in social networking websites such as Facebook and Twitter which connect people to each other to share updates. Apparently simple functionality, such as displaying the most recent updates from one’s “friends”, quickly become complex at scale. […]

This [the need to rearchitect their system] led them to an architecture based on:

• Nginx + Janitor
• Embedded Jetty + RESTeasy
• NoSQL storage backends (no fewer than three: Redis, Voldemort and Hazelcast)

[…]

Their list of lessons learned:

• Start benchmarking and profiling your app early
• A fast and easy deployment keeps motivation high
• Configure Voldemort carefully (especially on large heap machines)
• Read the mailing lists of the NoSQL system you use
• No solution in docs? – read the sources
• At some point stop discussing and just do it

## Pragmatic Cloud Computing

### Development Model for the Cloud: Paradigm Shift or the Same Old Same Old? By Ümit Yalcinalp

Ümit focused on the PaaS (platform as a service) layer, and the experience offered to developers who build applications for these platforms. An evangelist from Salesforce.com, she framed the discussion as a comparison between force.com, Google App Engine and Microsoft Azure.

### Situation Normal, Everything Must Change by Simon Wardley

Tim Anderson made a comment on this talk:

Wardley’s most striking point, repeated perhaps too many times, is that we have no choice about whether to adopt cloud computing, since we will be too much disadvantaged if we reject it. He says it is now more a management issue than a technical one.

In the Cloud Solutions track, Simon Wardley of Canonical (of Ubuntu fame) had a good talk on the ominous ”cloud”. He explained the process of commoditization, being driven by both suppliers competition and customer competition (getting a cheaper, better deal than your competitors). Many products and services are subject to this process, from fridges to electricity to computing resources. Personal note: That doesn’t mean all things are subject to gradual commoditization. Creative, human-intensive services, for example, are not. […]

Simon said the biggest myth surrounding the cloud was this: Companies actually believe they have a choice.

### The Cloud Silver Bullet: Which calibre is right for me? By Chris Read

Matt Zimmerman made a concise summary of this session:

Chris offered some familiar warnings about cloud technologies: that they won’t solve all problems, that effort must be invested to reap the benefits, and that no one tool or provider will meet all needs. He then classified various tools and services according to their suitability for long or short processing cycles, and high or low “data sensitivity”.

## SOA 2010

### Does REST need middleware? by Bill Burke

Hugo Rodger-Brown wrote on this talk:

This was a great wrap-up for the conference as a whole – how to use an existing, simple, well-understood protocol (HTTP) to satisfy some pretty complex requirements – SOA, reliable messaging, transactions etc. Really elegant solution (REST-*), and definitely something to watch. A great way to end.

### RESTful Business Process Management by Cesare Pautasso

Hugo Rodger-Brown also attended this talk and commented:

Dry, academic, talk that demonstrated quite nicely that terms like ‘REST’ and ‘Mashup’ do not mix with terms like ‘BPM’, ‘SOA’, etc. from a cultural point of view, if nothing else. Yes, you could build an SOA using REST services, you just wouldn’t call it SOA – and neither would you use a visual tool to do it for you. Enterprise and community are not happy bed-fellows.

One thing I did quite like was the use of the HTML ‘embedded resource pattern’ for building composite services. Embed the URI of another service in a service response and shift the burden back on to the client – exactly as HTML does with web pages, where the browser is responsible for building the composite view from all of the embedded URIs.

## Software Craftsmanship

### Beyond Masters & Apprentices: A Scalable, Peer-led Model For Building Good Habits In Large & Diverse Development Teams by Jason Gorman

Matt Zimmerman wrote a detailed description of the talk, including:

Jason explained the method he uses to coach software developers. […] He began by outlining some of the primary factors which make software more difficult to change over time:

• Readability: developers spend a lot of their time trying to understand code that they (or someone else) have written
• Complexity: as well as making code more difficult to understand, complexity increases the chance of errors. More complex code can fail in more ways.
• Duplication: when code is duplicated, it’s more difficult to change because we need to keep track of the copies and often change them all
• Dependencies and the “ripple effect”: highly interdependent code is more difficult to change, because a change in one place requires corresponding changes elsewhere
• Regression Test Assurance: I didn’t quite follow how this fit into the list, to be honest. Regression tests are supposed to make it easier to change the code, because errors can be caught more easily.

He then outlined the fundamental principles of his method:

• Focus on Learning over Teaching – a motivated learner will find their own way, so focus on enabling them to pull the lesson rather than pushing it to them (“there is a big difference between knowing how to do something and being able to do it”)
• Focus on Ability over Knowledge – learn by doing, and evaluate progress through practice as well (“how do you know when a juggler can juggle?”)

Finally what I think was the most interesting talk of the conference and one directly relevant to my current work, Jason Gorman gave a fantastic talk about a training scheme he is running with the BBC to improve software craftsmanship using peer-review. I’ll be trying this out at Isotoma, and I’ll blog about it too!

### Danger: Software Craftsmen at Work by David Harvey

David Arno commented on this talk:

My favorite talk of the day, but the one that is most difficult to summarize. David Harvey argued that one should treat the Software Craftsmanship movement with caution. Tying in with Dan North’s comments regarding software not being like bike riding, David highlighted our desire to borrow metaphors from other human endeavors to try and describe software. Computer science, software engineering, software architecture, software craftsmanship etc. Each of these words: science, engineering architecture and craftsmanship risks imposing negative baggage on the software industry and is at best a poor fit. So whilst software craftsmanship is a good idea, maybe we should just call it “best practices and professionalism”.

### Sharpening the Tools by Dan North

Dan is speaker that is a joy to listen to; with a great sense of humor. Sometimes I feel that he has so much pure, British charm he doesn’t actually need much in the way of content.

Dan’s main message in this talk was that we as developers, from beginner to master, must never cease improving, i.e. sharpening our tools. Apparently, switching jobs was a humbling experience. Dan used ”tools” in a very general meaning and could be anything from, for example, the technical, methodological, personal, team or leadership domain.

First up was Dan North, talking about software craftsmanship. The key thing I took away from Dan’s talk is the blindingly obvious, yet easily missed, fact that software isn’t like riding a bike. To explain: one can learn to ride a bike, not go near one for 15 years, then get straight back on one and continue riding as if that 15 year gap had never occurred. I know this from personal experience.

Software is not like bike riding. Take a 15 year break and upon your return, the mainstream software industry will be unrecognizable to you. All software developers need to put effort into constantly learning about new frameworks, languages, tools, patterns etc just to stand still. Stop learning new stuff and your developer skills will rapidly atrophy.

### Software Craftsmanship, Beyond The Hype by Corey Haines

Joakim Holm summarized the talk:

Corey held an inspiring talk on the software craftsmanship movement. I really liked his rundown of practical initiatives and activities that has happened under that umbrella; things that would never have occurred otherwise, for example, Kata video casts or Craftsman swaps between companies.

Corey said another interesting thing: Think about where you would really like to be, competence-wise and professionally, under ideal circumstances. This is your current goal of excellence. Then, think of how you develop software under stress. That’s when you revert to the practices you really master, not the once you are trying to adopt. Now, subtract the last from the first – that’s the amount you currently suck!

## The Concurrency Challenge

### Embracing Concurrency At Scale by Justin Sheehy

Adrian Hills shared his thoughts on this talk:

Justin Sheehy […] with a talk on "embracing concurrency at scale" - eventual consistency was a term becoming more and more at the forefront of my mind, as was the point that ACID does not work with a distributed, scaled system. Instead you have a trade-off with BASE:

• Basically
• Available
• Soft state
• Eventually consistent
which leads to Availability and Partition tolerance (from the CAP theorem).

### Message Passing Concurrency in Erlang. An architectural basis for scalable fault-tolerant systems by Joe Armstrong

Twitter feedback on this session included:

div_: best #qcon quote so far ? Joe Armstrong quoting Mark Williams; "They are going to drop bombs on our stuff, but I think it will work"

## Social Events

Adrian Hills enjoyed the second day’s social event:

Day 2 ended with a number of usergroup events, and I went along to the NNUG(Norwegian .NET User Group) / alt.net beers event at a pub in Soho. It was somewhat surreal for me, having drinks and chatting with the type of experts I can only strive to be (to be very geek, heroes): Ayende Rahien (Oren Eini), Jon Skeet, Roy Osherove, Udi Dahan to name but a few. It was fantastic to see a number of other .NET developers show up that hadn't attended QCon, and was good chatting to them. This was my first usergroup event - lesson being, I really should have attended one before now. Take that as another TODO on my list.

Twitter feedback on this session included:

flurdy: Enjoying the free beer and snacks by atlassian at #qcon. Not many here thu, Our litlle gang is 50% of the people here! :)

chrismdp: On way home after excellent #qcon. Really enjoyed meeting all you fine people. Highlight? NNUG pub night yesterday.

Tim Anderson enjoys QCon because it is not vendor specific:

I’m just back from QCon London, a software development conference with an agile flavor that I enjoy because it is not vendor-specific. Conferences like this are energizing; they make you re-examine what you are doing and may kick you into a better place.

Doug Winter described QCon:

A couple of us went to QCon London last week, which as usual had some excellent speakers and some cutting edge stuff.  QCon bills itself as “﻿enterprise software development conference designed for team leads, architects and project management”, but it has a reputation for being an awful lot more interesting than that.  In particular it covers a lot of cutting-edge work in architecture.

Adrian Hills summarized what he learned at QCon:

Some of the key points I'm walking from the conference with:

• keep things simple - complicated doesn't work. If you find your design is complicated, then the chances are you're probably doing something wrong!
• focus on optimising for an individual task, rather than one-size-fits-all approach
• ACID doesn't go well with scaling
• eventual consistency - does it matter if your data is persisted throughout immediately? Probably not. As long as the system is eventually consistent, that's usually all that is required and allows you to scale better
• asynchronous messaging
• rules of thumb do not apply - use existing patterns as a starting point for discussion - just because you've done something one way before, doesn't mean you should automatically do it the same way in future

And so QCon is over for this year, and it’s been a great conference (IMO). I’m not sure I learned anything totally new – it was more an affirmation of things I’d thought / heard / read about – and a chance to see some of these things out in the wild. The speakers ran from big conference names to academics through some front-line experts, so a real range. I don’t think I attended a single sales pitch, and although a few named products slipped through the net, they were all OSS projects, not commercial products. All-in-all it seemed to stay true to the “for programmers by programmers” promise.

I would also like to point out that if you have the chance to go to any QCon conference you should! They are the best.

I had a great time at Qcon London last week, it really is one of the more forward thinking conferences out there for the enterprise.

kiltec: Seriously, I'll be in trouble in #qcon, lots of talks I'm very interested in taking place at the same time... :D http://bit.ly/aQSRee

marcjohnson: Great 1st day at #qcon topped off by good conversations in pub with@jimwebber, @iansrobinson, @martinfowler, @KevlinHenney, @olabini et all

div_: #qcon wrapping up, been an interesting ride.

joshdevins: Nice conference #QCon, nice view of the London Eye and Big Ben too! http://twitpic.com/184613

shs96c: Really enjoyed #qcon. Now to round out the evening with nerd talk and coding.

fedespagno: #qcon Great experience, great speakers, great people. Many Thanks to #qcon team

stiiifff: #qcon 2010 is over. Amazing conference. I plan to come back every year ! Zillions of ideas that I need to organize now.

stilkov: Traveling home from #QCon, great conference, as usual. Looking forward to next year!

zukunftsalick: Great week at #qcon in London, now, sadly, back to Madrid...

timrgoodwin: good week at #qcon. great to catch up with so many great people. so long and thanks for the pints.

jacekskrzypiec: Back home after my first #qcon. Plenty new ideas on how to create better applications.

rossmason: Still buzzing after #qcon well done to Floyd and his team and Trifork. You guys nailed it!

mtnygard: This week at #qcon has left me physically tired but mentally sustained.

marcjohnson: Had an awesome #QCon and then TW pub, met loads of new people from all over the world, some of which are heroes of mine, some new friends

martinnjensen: back from #qcon, what a trip! my head is still spinning

kiltec: And I definitely will come back to the #qcon next year, even if I had to pay everything on my own.

doxla: Back at home with a nice bottle of 2004 Rioja. Great week at #qcon some of it turned my ideas inside out.

## Takeaways

Kevin Seal considered there are so many things going on that one cannot follow all of them:

QCon felt quite diverse this year, running tracks on Agile, Java, .NET, architecture, craftsmanship, design, web and mobile development, testing, and more. As such, it’s quite hard to come away with some sort of over-arching feel for what’s driving the industry at the moment. Perhaps that’s really the take-away message this year: that there are numerous movements bubbling under, but a growing sense of pragmatism over technology choice and process adoption. […]

There was a huge amount in addition to this at the conference -- certainly a couple of consistent technical themes that are worth tracking down on the QCon site. In particular, Dan Ingalls provided a reminder of the enjoyment we can get from developing software and that we shouldn't lose sight of this in our work.

So many inspiring speakers, a packed schedule of talks over 3 days on a number of tracks and a great bunch of people. This was my first QCon, and cannot recommend the experience enough. The only thing I didn't enjoy, was having to decide between which talks to attend. But that's the true sign of a good conference.

Some of Hugo Rodger-Brown’s impressions:

The overall theme seemed to be that you can achieve pretty much whatever you want using bits and pieces that are already out there and tailoring them for your particular problem domain. There is no one-size-fits-all solution, and very little reason to pitch up to a big COTS vendor and buy their product suite (beyond internal accountability and CYA.) The real key is getting the right people and empowering them to solve the problem for you. Small teams, with the tools they need, no more, no less, will get you there. The same solution applies whether you’re tackling problems of scale of planetary proportions (Facebook), or focussing on extreme performance at the chip level (LMAX). […]

Highlights were LMAX and Facebook – amazing teams breaking new ground – inspiring stuff from both, and a big thank you to the speakers, Aditya Agarwal from Facebook, and Dave Farley & Martin Thompson from LMAX.

On a technology front, the web is ubiquitous, as is mobile, though what that means is still a problem (what makes something “mobile” if my netbook runs the same software as my desktop – is it GPS, AR?) If you’re working client-side then it’s HTML/CSS/JS and HTTP; if you’re working server-side it’s offline, async, and message-based. Nothing new, although you might want to think about storing your data in somewhere other than an RDBMS. Just make sure you know why you’re doing what you’re doing, and can defend your choice if necessary.

Twitter feedback on this session included:

natpryce: Take-away thought from #qcon: we need an alt.java movement that champions simplicity over complicated but standard APIs.

## Conclusion

QCon London was a great success and we are very proud to have been able to offer such a conference. It will continue to be an annual event in both London and San Francisco, with the next QCon being around the same time next year in each location. We also look forward to continuing to run QCon in other regions which InfoQ serves, such as China and Japan, and introducing it to Brazil for the first time this year. Thanks everyone for coming and we'll see you next year!

Style

## Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Is your profile up-to-date? Please take a moment to review and update.

Note: If updating/changing your email, a validation request will be sent

Company name:
Company role:
Company size:
Country/Zone:
State/Province/Region:
You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.