Key Takeaway Points and Lessons Learned from QCon San Francisco 2009
In this article, we present the views and perspectives of many of the attendees who blogged about QCon, so that you can get a feeling what the impressions and experiences of QCon San Francisco (November 2009) were. From the first tutorials to the last sessions, people discussed many aspects of QCon in their blogs. You can also see numerous attendee-taken photos of QCon on Flickr.
This QCon was InfoQ's eighth conference and the third annual in San Francisco. The event was produced in partnership with Trifork, the company who produces the JAOO conference in Denmark. There were over 500 registered attendees, with 75% attending from North America and 25% from Europe, Asia and South America. Over 100 speakers presented at QCon San Francisco including Douglas Crockford, Martin Fowler, Eric Evans, Erik Meijer and Yukihiro "Matz" Matsumoto. QCon will continue to run in the US around November of every year, and QCon London will be running March 10-12, 2010.
Table of Contents
* Doing TDD As If You Meant It by Joshua Kerievsky
* Domain Specific Languages by Martin Fowler and Ola Bini
* Java Performance Tuning with Kirk Pepperdine
* Techie VC's Talk about Trends & Opportunities by Salil Deshpande & Kevin Efrusy
Agility as a Craft
* Programming on the Right Side of the Brain by Michael Feathers
Architecture for the Architect
* Adventures of an Agile Architect by Dan North
* Lessons learned from Architecture Reviews by Rebecca Wirfs-Brock
* Patterns in Architecture by Joseph Yoder
* Roadmap to Continuous Deployment by Nathan Dye
* Strategic Design: Avoiding Responsibility Traps by Eric Evans
Architectures You've Always Wondered About
* Amazon S3: Architecting for Resiliency in the Face of Failures by Jason McHugh
* Facebook's Petabyte Scale Data Warehouse using Hive and Hadoop by Namit Jain & Ashish Thusoo
* LinkedIn: Network Updates uncovered by Ruslan Belkin & Sean Dawson
Cool Stuff with Java
* Scaling Your Cache and Caching at Scale by Alex Miller
DSL in Practice
* Codename "M": Language, Data, and Modeling, Oh My! by Don Box & Amanda Laucher
* A Skeptical View of Language Workbenches by Glenn Vanderburg:
* Internal DSLs in Groovy, Ruby, and Others by Brian Guthrie
* Pragmatic F# in Action by Josh Graham &Amanda Laucher
Kanban/ Lean Software Development
Technical Skills for Agile Development
* Sustainable Design for Agile Teams by Eric Evans
The Cloud: Platform or Utility
* Agile Development to Agile Operations by Stuart Charlton
* Architecting for the Cloud: Horizontal Scalability via Transient, Shardable, Share-Nothing Resources by Adam Wiggins
* Mapping relational data model patterns to the App Engine Datastore by Max Ross
* Patterns for Cloud Computing by Simon Guest
* Software Architecture for Cloud Applications by Michael T. Nygard
The Many Facets of Ruby
Opinions about QCon
Doing TDD As If You Meant It by Joshua Kerievsky
Joel Friedman participated in Kerievsky’s tutorial and noted many things, including:
Joshua spoke a lot on the agile process and what it takes to design software which is reliable, release frequently and most importantly constantly adds value to your “customer” with almost every release. … The way that they do this is decide after a release what customer requests they are going to release that week and when they’ll be able to release them that week. This can lead to release your software to production more than once some weeks and none some weeks. This can certainly have positive side effects, especially in your release process.
Domain Specific Languages by Martin Fowler and Ola Bini
Tim Cull wrote his impressions watching Martin Fowler and Ola Bini, including:
One point they hammered again and again was that you need to keep your syntax, your semantic model, and your execution separate. For example, if you were to write a new kind of Spring configuration file format in JSON, then JSON would be your syntax, the Spring BeanDefinition interface would be your semantic model, and the Spring GenericApplicationContext might be your executing code. Many implementations of DSLs might be tempted to leap directly from parsing the input to calling code on the fly but according to the presenters that usually leads to heartache as your DSL becomes more complex.
They also went into detail about the difference between an External DSL (something you have to write a parser for, like Ant) and an Internal DSL (basically helper functions on top of an existing language, like Rake).
Java Performance Tuning with Kirk Pepperdine
Tim Cull wrote about this tutorial in detail, including:
The best technical tidbit I got out of the session was some insight about Collections classes that have a medium-term life. It’s possible to have a Collections class (say a LinkedList) live just long enough for some of its plumbing to make it into the “old” generation. If that happens, then even if that LinkedList goes out of scope and is eligible for garbage collection, it won’t actually get collected until the next FullGC. Partial GCs only get the “young” generations. That’s not necessarily the end of the world until you consider that many of the objects contained in the LinkedList might have been very short-lived and might be in the young generation heap. But they can’t be garbage collected because the LinkedList still refers to them. These are known as ‘zombie’ objects–objects that aren’t referred to any more, but never-the-less won’t get collected in a Partial GC.
Martin van Vliet summarized the keynote of day one:
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.
Nati Shalom wrote about this in detail, including:
How to Beat the Big Players
- Rely on one of the disruptive forces (OSS, SaaS, Cloud). Leverage the low marketing cost of a community-driven project to gain fast awareness (mostly through word of mouth).
- Start with small components (feature vs. platform) and grow slowly through the value chain. An exception to that example is JBoss - JBoss owes its success to the adoption of J2EE. It is therefore less likely that this model can repeat itself as there is nothing similar to J2EE on the horizon.
- Once you get to the right level of adoption, you need to start building value quickly to be able to monetize on the community. The right acceleration model is acquisition of other tools in that area.
- Focus first on adoption (at the expense of short term revenue), and monetize later. It is very likely that when you start to build your community, you wont have a clear answer on how and where the monetization will happen. The answer often comes somewhere down the road. It is very likely that it will involve a long trial and error experience until you figure out the right combination that will drive revenue out of your community.
Nick Codignotto enjoyed this presentation:
The talk by Michael Feathers was good. He talked about what makes a good programmer and what qualities exist in people that make them good programmers. One of the stories he quoted was popularized a last year. The story was the result of a study that determined good programmers are people who are comfortable with meaninglessness. What this means is that people who were tested to fail at programming tasks look for deeper meaning and aren’t comfortable with a computer that blindly executes what you tell it to. He made reference to Beddy Edwards excellent book, Drawing with the Right Side of the Brain. Don also quoted Paul Graham, Malcolm Gladwell, and others. “People who have a sense of taste can write good code.” On the SR-71… “…something beautiful can perform the same way.” Read voraciously. Accept ambiguity.
Martin van Vliet liked this talk:
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.
As did Nick Codignotto:
Dan North’s talk was a freaking riot. The guy should do stand up. Seriously. His content was solid and he kept the audience’s attention. Some tidbits included advice on introducing “pair programming”: if your team resists “pair programming” and you think it necessary, just call it “helping” and park yourself there for the day. He also said, “A bunch of alpha’s aren’t going to pair. But they are more than willing to show off what they know. So, take advantage of that.” Also, many people at QCon were down on Maven. Dan was too, saying, “Maven is like an obsessive compulsive, comes into your house, brings in apache kids, and begins to rearrange everything.” Also, Dan said an essential role in any team is the role of Shaman, someone who knows the history and who knows why this and that happened. Oh, and ESB’s are only good if they’re beer. Anytime a speaker mentions beer, they have my attention.
Martin van Vliet attended this presentation:
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.
Nick Codignotto also attended:
Rebecca Wirfs-Brock presented a thoughtful look at the process of an architectural review. Lots of talk about getting through logic bubbles, knowing your audience, etc. Two interesting things I wrote down. First, when presenting a few choices and doing pros and cons, remember to summarize these in a succinct sentence before making any decisions. This draws the true value out of the different options. Also, when probing for answers from a domain expert, be patient, endure long stints of silence, and keep probing.
As did Tim Cull:
Wirfs-Brock opened with two slides showing two different ideas of “collaborative.” In one, all the stakeholders and reviewers of an architecture gather together in harmony and all are shooting for the same goal for the common good. In the other, they only collaborate in the sense that the conquered collaborate with their occupying army. It’s important to know which kind of situation you’re in before picking your toolset to deal with it. I was a little shaken when she showed a slide of my boss’ book and said it was an example of a toolset to use in the occupying army kind of collaboration. What does that say about my day job?!
My best takeaway from the talk is that it’s useful to clearly organize your architectural feedback into buckets:
1) Recommendations — we really think you need to do these and not doing them would be a mistake
2) Suggestions — if you do these I predict they will make you happy, but you won’t miss them if you don’t do them
3) Observations — a place to put statements about perceived problems that aren’t really problems, or point out good choices that should be kept
Nick Codignotto was in attendance:
After the keynote, I went off to see a talk by Joseph Yoder, a consultant who helps people write software. He wrote a paper called Big Ball of Mud and he referred to this throughout his talk. His talk was about architectural patterns, you know stuff like client-server, model-view-controller, etc.. His favorite pattern was the Adaptive Object Model and you can read a lot more about that on the Adaptive Object Model website!
Nick Codignotto wrote about this talk:
Next up was Nathan Dye, who talked about continuous deployment. He claimed that Microsoft can deploy up to 200 times a day. A friend tweeted me and said that was often enough to catch every “oops” check-in that happens in a day. What Nathan was describing is that when you can deploy so easily that any check-in can be built, tested, packaged, and deployed, your software is bound to be maintainable. He went into many all of the techniques that can help companies gain the benefits of continuous deployment.
Nick Codignotto covered this presentation:
Day 1 was rounded up by a fantastic talk by Eric Evans. Eric was by far the best presenter, IMHO. I might be saying that only because I’ve shared a beer with Eric on a few occasions since he consults with my company. Like Dan, Eric had the audience laughing, but not at jokes… at scary truths that everyone in the audience was familiar with. Eric’s talk was an introduction to Domain Modeling, the topic of his excellent book on Domain Driven Design.
Tim Cull had several key takeaways from this track, including:
You don’t know scale like these guys know scale. Many of the presenters were talking about applications at truly mind-blowing scale. Historically, that kind of scale would only apply to secret government operations and serious physics research.
Cheap and horizontal, not expensive and vertical. Every one of these guys that operate at scale do so on commodity or almost commodity hardware. I didn’t hear anyone mention 64-way Sun servers, except as a joke.
Asynchronous interaction and coupling. Applications have to be designed for asynchronous interaction. That means not only between tiers, but also with the user. To get the kinds of performance and resiliency gains many of these sessions were talking about, you can’t do it any other way. Also, asynchronicity helps take advantage of future innovations like cloud computing.
Martin van Vliet, a regular attendee of QCon SF, wrote:
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.
Nick Codignotto also had several notes, including:
Amazon S3 has a goal of 99.9% uptime. I was surprised to hear this since I thought enterprise-class uptime was 5 9’s (99.999%). Anyway, Jason went over the main reasons for failure and exhaustively went through the resolutions for each:
- Human error
- Acts of Nature
- Beyond Scale
Tim Cull had several notes from this session:
Facebook handles 200GB/day worth of updates coming in and 12+TB per day if you include derived data. That’s a lot of data and has no hope of fitting in a traditional data warehouse like Oracle. Consequently, they use Hadoop for both data storage and data processing, as do many organizations that work at that kind of scale. But once they started doing that, they ran into the problem that it’s very difficult, especially for analysts, to conduct ad-hoc queries over the data.
So, the Facebook team created HIVE as a SQL-like layer over Hadoop to allow for ad-hoc analysis. HIVE is an open-source sub project of Hadoop. They spent most of the talk describing HIVE and some of the clever ways they use Hadoop and map-reduce to execute SQL-like queries in parallel.
To give you an idea of the kind of load they’re putting through the system, they said they have a production Hadoop cluster with 5800 cores, 8.7 PB (/3 for replication) of data. Over this cluster they run ~7500 HIVE jobs per day. Wow. That’s not just massive scale, that’s mind-blowing scale.
LinkedIn is a 90% Java shop with lots of memcached for caching and ActiveMQ for messaging. They said they started the traditional way with big relational databases and n-tier architectures, but quickly ran into the scale wall. To give you and idea what they’re talking about, they do 35 million updates per week and 20 million services calls per day….
Then they went on to describe some of the infrastructure they user. Interestingly, as updates come in, they are stored in two places:
level 1 storage: temporal, rolling store on Oracle containing CLOB data with varchar keys
level 2 storage: tenured data on Voldemort containing key-value pairs
Tim Cull learned from this talk:
Miller works for Terracotta and so most of what he concentrated on was EHCache and Terracotta. Much of the session had to do with configuring and using each of those tools, but I did get a couple of good reminders about what’s good to cache and what isn’t. Specifically, before caching something, make sure it has good “locality” (i.e. the same piece of data tends to be asked for in clumpy bursts of time) and a good distribution (i.e. the majority of people ask of a small subset of the total data universe).
Ola Bini spent most of Friday on the DSL track and commented about it on his blog:
My colleague Brian Guthrie started out with a strong hour about internal DSLs in various languages. Ioke got a few code examples, which was fun. After that Neal and Nate Schutta talked about MPS. I haven’t seen this much detail about MPS before so it was helpful.
Don Box and Amanda Laucher did a talk about the technology formerly known as Oslo. I didn’t think this tech was anything cool at all until I saw this presentation. In retrospect this was probably my favorite presentation of the conference. What came together was how you can use M as a fully typed language with some interesting characteristics, and also the extremely powerful debug features. It’s nice indeed.
… Magnus Christerson from Intentional showcased what they’ve been working on lately. Very impressive stuff as usual.
Stefan Tilkov had very detailed notes from this presentation, including:
- Interesting similarities btw/ M and MPS
- M is a language for data - one of the most interesting places of data is a sequence of Unicode code points
- Great support for text processing perceived as critical
- Example: extract some data from text - tweets
- Intellipad - default environment for writing grammar files, this is where tool support shows up first, then in Visual Studio
Nick Codignotto also covered this presentation:
M is a language unto itself, it’s not the Lex and Yacc model where you have a spec and you spit out C on the other end. You can build a SQL database with M. You can use M to generate ORM layers. You can dynamically validate data in your own programs. The cool thing about M is that it’s dynamic. It’s also a CLR language so it inter-operates with all of your code (assuming you target the CLR!). It allows you to define DSL’s and validate them at runtime, nay, traverse them, violate them, and do whatever you like. All in all, seems very powerful and the audience seemed to “get it” toward the end.
A Skeptical View of Language Workbenches by Glenn Vanderburg:
Nick Codignotto noted:
- AspectJ-Bring meta-object concepts, instead of building it into the language like CLOS, you bolt it onto the language.
- CLOS, deep meta-programming within the language was a bad idea?
- DSL’s, internal ones, in Ruby community, have been flowering. Ruby has simple syntax… so it’s generally pretty easy to create a SAL directly within the Ruby grammar
And his favorite quote was:
There is a reason why Jedi Knights build their own lightsabers. Programmers should not use a tool that seems like magic to them.
Stefan Tilkov gave a comprehensive summary of this talk, including:
- A DSL is a computer programming language of limited expressiveness focused on a particular domain
- PHP originally started out as a DSL, but is no more
- SQL is an excellent example of a DSL
- Ant as an example of focus on a particular domain
- 2 flavors of DSLs internal and external
- An internal DSL is a kind of API
- high-level DSL should be separate from the domain model [I very much agree; much of it is due to the tricks you have to do to get something that reads nicely]
- keep domain model clean
- a DSL is an API, a language, a conversation
- Martin Fowler: both DSLs for programmers and non-programmers are useful
Nick Codignotto attended this talk:
The session started off with Amanda telling Josh to effective shut his trap as Josh started talking before the mic was ready. I was kind of shocked until I realized that this F# programmer has some bite. The pair then launched into a beginner-grade introduction to the language. This was fine for me since I hadn’t seen any F# code until now. In college I had exposure to Lisp, ML, and Prolog so I knew what functional languages were about. However, that was a long, long time ago at the University of Buffalo and I think I pulled a 2.0 average that year because I was out getting drunk all the time. Anyway, F#, like any .NET language, has full access to the CLR and anything it provides so it’s an important language from that perspective. A few colleagues of mine,Pavan Podila and Kevin Hoffman, wrote an excellent book called WPF Control Development Unleashed and one of their readers went and translated all of the WPF code samples into F#. Neat.
Martin van Vliet liked several of the talks on this track:
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.
Martin van Vliet wrote about this session:
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.
Nick Codignotto had detailed notes from this talk, including:
IMHO, Eric was best speaker at #qcon. … Eric challenges: modeling is not an up-front investment that pays off. It helps you get there in the first place. He also challenges the old agile adage: “The simplest thing that could possible work” is often interpreted as “quickest thing that could possibly work.” Eric says that it would be better stated as, “what is the most concise, clear, and most easily understood way to do this”… His point was to do that requires real work.
Another notable quote: “Typical UML is not a good representation of the model as it is a visual representation of the program. A model, in contrast, is a collection of assumptions, rules, and choices that led you to write the program that way.” Well said, Eric.
Stefan Tilkov covered this session in depth, including:
- Cloud computing changing the game between development and operations
- Suggested design goals for cloud computing
- Integrated approach to application design, development and operations
- Tennis match going on between the dev and ops side
- Performance, scale and availability of design and operational decisions
- You usually can't just tell the platform to scale your app
- The offerings of commercial companies are mostly the result of buying companies that cover either operations or development
- How can agile practices be applied to operations?
Architecting for the Cloud: Horizontal Scalability via Transient, Shardable, Share-Nothing Resources by Adam Wiggins
Stefan Tilkov wrote a detailed summary, including:
- Heroku is a platform to transparently run existing Ruby and Ruby on Rails applications in the cloud
- Heroku has over 40,000 applications, not bad for a startup with 50 guys
- Automatically scaling applications without code changes "scale my app" slider
- Why is it easy to scale out memcached so widely while one can't do that with MySQL?
- Principles: Transient, Shardable, Share-nothing
- Transient: any node in the memcached cluster can be lost
- Shardable: Client lookup by "hashring": load distributed by clients
- Share nothing: Nodes are unware of each other
Nick Codignotto also wrote about this talk:
The very next talk, after the Asgardian, was with Adam Wiggins of Heroku fame… now I know you’re thinking of Andrew Wiggin from Ender’s Game, but this guy was not a 6-year old kid. He had a goatee and possibly earrings. But he was smart… so maybe he could destroy an entire alien civilization from across the galaxy. Adam’s talk was awesome, he took us through lots of nifty technologies you can use to make it perform well at scale: memcached, couchdb, mvcc techniques to data, hadoop, redis, varnish, rabbitmq, erlang, etc. Great talk, plenty of reading material to take home to Colonel Graff.
Stefan Tilkov had another round of detailed notes from this talk, including:
- Datastore is transactional, natively partitioned, hierarchical, schema-less, based on BigTable – not a relational database
- Goals: Simplify storage by simplifying development, management
- Even though Datastore is based on the ridiculously scalable BigTable, you don't need to have scalability problems to benefit from it
- Scale always matters - the problem is not in the second step, it's the first step
- Free to get started (not only for the first 30 days), pay only for what you need
- Let someone else manage upgrades, redundancy, connectivity
- Let someone else handle problems
Stefan Tilkov covered this talk in detail, including:
- Different models:
- Applications must run on-premises – complete control, upfront capital costs
- Application runs at a hoster – lower capital costs, but pay for fixed capacity even if idle
- Shared, multi-tenant, pay as you go – pay someone for a pool of computing resources that can be applied to a set of applications
- Public Cloud vs. Private Cloud – private cloud useful e.g. for telcos offering this to their customers
- Windows Azure – compute, storage, management, based on 64bit Windows images
- SQL Azure - RDBMS
- .NET Service - service bus and access control
Stefan Tilkov had a comprehensive set of notes from this session, such as:
- Anything as vaguely defined as Cloud Computing requires some up-front definition at the beginning of each talk
- There are risks in moving to cloud computing, despite what the cheerleaders will tell you
- Another example LHC: After filtering, each collision creates 15 TB of data
- If CERN processed the data themselves, it would be a choice between heating the town or running the datacenter
- More than 100,000 CPUs, 10 PB of image data each year
- 4 trends: virtualization, commoditization of hardware, horizontally scalable architecture - created the problem of rapid provisioning
- Virtualization vendors tend to underplay the difference to Cloud computing
Nick Codignotto also wrote about this session:
Next talk was on Cloud computing by Michael T. Nygard. After reading that name and seeing the 6 ft. 4 in. dude on the podium, I half expected him to cry Valhalla and pull out a two-handed sword and engage a party of ogres. But then he started to talk about cloud computing and I forgot all about the ogres. An interesting piece of info on CERN. A typical experiment generates a gazillion data points which can’t be stored in any one location for the power needed for the datacenter would dwarf the power needed for the actual experiment. What does CERN do? They put in big fat data pipes and get the data the hell out of dodge before it reaches critical mass, spawns stranglets and consumes the Earth. It’s true. The data then fans out to successive tiers in a complex network of supercomputers where the data is digested so we can find out how to harness the power of the sun or blow up the moon. The whole cloud computing talk dovetails with Nathan Dye’s talk from a day earlier and sessions about computing in the cloud was a hot topic at QCon.
Application Development Trends Magazine wrote about the Ruby track in detail, including:
Backers of JRuby have lately claimed serious traction in the enterprise for this Ruby implementation for the Java Virtual Machine (JVM). This week, JRuby project co-lead Charles Nutter pointed to packed sessions at the annual Qcon developer conference in San Francisco as evidence supporting that claim.
Nutter hosted a one-day Ruby track at the event, which was expanded, he said, to accommodate overflow interest from the sold-out RubyConf (Nov. 19-21) and JRubyConf (Nov. 22), also in San Francisco -- further evidence of Ruby's growing popularity.
Qcon attendees packed the session room for Ruby creator Yukihiro "Matz" Matsumoto's presentation "Why we love Ruby." Other sessions, including JRuby co-lead Thomas Enebo's "You've got Java in my Ruby," and Merb Ruby framework maven Yehuda Katz's "Rails 3," drew big crowds.
I should have known from the title that this talk was high-risk. Alex Zitzewitz’s talk was about cyclic dependencies and how hey are bad and how a six-sigma approach can solve all of your problems. Alex was a decent presenter and not too pretentious, but I kind of shut off once the presentation went into a product demo. Still, if you’re a Java shop, the SonarJ tool might be an interesting tool. QCon invites vendors to pay the bills, but vendor presence is definitely suppressed when compared to other cons I’ve been to (VSLive, VMWorld, GDC, etc.)
Nick Codignotto on his night out at the end of day one:
That evening, QCon hosted a party an Jillians. We got two drink tickets and a whole crapload of bar food. Me and my buddies played pool and met up with Eric Evans, who introduced us to other clients of his. I didn’t know people still programmed mainframes! But, they do since these guys told me they did and I believed them. All joking aside, this is exactly the kind of environment where the domain-driven design philosophy can work magic, helping companies avoid wasting millions of dollars trying to displace a legacy system that works perfectly well.
It's amazing how rich they manage to make the QCon agenda every time.
Ola Bini spoke at QCon and shared his impressions on his blog:
After JAOO, QCon is my favorite conference. They always manage to put together an interesting week with great speakers and lots of things to learn.
The entire experience was a rip-roaring success. First we got to meet some of the leaders in the Kanban community, and even got to spend some quality time talking to them in between sessions.
We gave lots and lots and lots of demos, and the touch-screen was very popular. One guy brought a colleague of his back and basically gave the demo himself, and another attendee told us he stepped out of a session he was in to come see us…because the crowd was too big in between sessions for him to get a good look.
And along the way, we even got to meet some of of “heroes”, like Eric Evans, Martin Fowler, and Douglas Crockford.
The wonderful folks at qCon even let us keep the banner you see in the background. Thanks to Floyd, Roxanne, Geeta and all the other folks at InfoQ and Trifork that helped make the experience such a great one for us. We’ll definitely be back.
Martin van Vliet considered QCon as a conference for everyone:
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 aficionado. This refreshing diversity leads to interesting presentations and coffee-corner conversations.
Great time at #qcon. Love the Craft of software development and infrastructure architecture.
Twitter was filled with a flood of comments during QCon, including:
- Chris Shinkle: It was an interesting conf highlighted by the chance to chat with @davidhussman.
- Rob Ellis: in the ruby room at #qcon Exciting talk to come by Matz!
- Stefan Norberg: #qcon was great fun. I got over 85% "better than expected" from the listeners, which was better than i hoped for.
- Rebecca Wirfs-Brock: Simon Guest gave excellent presentation...also leaving us with idea that the "cloud platform" need not be vendor locked in. #qcon #succeed
- Michael Feathers: Way to know you're at a great conference. They have to interrupt your conversation to take down the tables #qcon.
- Billy Newport: Enjoyed #qcon this week. Panel was good, good session, an interview and made quite a few new contacts. Looking forward to the next one
- Brian Guthrie: Having lots of fun watching @donbox, @pandamonial, @delitescere, @olabini spar at #qcon.
- Neal Ford: #qcon was great this year, & I'm particularly proud of the speakers on the DSL track. They all delivered the goods.
- Alex Popescu: Fantastic answers from Eishay Smith about #scala adoption #qcon
- Don Box: Thanks to @floydmarinescu for throwing an awesome #qcon
- Stuart Charlton: Finished my QCon talk on Agile Operations. Good turnout. Good questions. Amused that some people love models and others hate them.
- Dan North: Language discussion with @olabini, @pandamonial, Erik Meijer, @donbox. Never felt dumber. I'm loving it! #qcon
- Jim Webber: Great context for DSLs from @bguthrie, the conversation metaphor works very well. #qcon
- Sadek Drobi: great and fun talks from Erik Mejier as usual #qcon
- Mark Needham: Best definition I've heard yet of a service: @iansrobinson at#qcon: it's nothing more than a technical host for a capability
- Brian Foote: "Upfront design is a way of locking in your ignorance" #EricEvans #qcon
- Matthias Bohlen: LOL @davidhussman about planning: "When you don't know where you are going, it's easy to iteratively not get there"
- IT_Voyager: #qcon #bestspeaker was Dan North! Funniest presentation I've ever seen.
- Grant Keiser: again, I can't decide between two simultaneous session at #qcon - I guess that's a good problem...
- João A. Vortmann: RT @gchapiewski: #QCon Dave West: "I took a 2 day Scrum course. Now I am a MASTER!"
- Vinicius Freitas: RT: @gchapiewski: #QCon Matz: "Don't focus on the language. Your project is more important than the language." - cool to hear that :):
Nati Shalom had some thoughts:
The QCon conference in San Francisco has always been one of my favorite conferences. Floyd is doing a great job of bringing an interesting blend of people from across the spectrum of the industry (Java, .Net, Ruby) into one place. He also brought some interesting speakers that you don’t normally see at this type of developers' conferences, such as the VC’s talk, which I found particularly interesting. This conference is a great environment to open your mind to other ideas and thoughts outside of your day-to-day realm. It took me a few days to let all the experiences from the various discussions in the conference sink 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 day job.
- Continuous deployment (meaning continuous deployment to production).
Jay Allard commented:
I learned a lot at QCon. Now I have to figure out what to do with it all. Do I scrap current projects, or just put them on hold?
DSL and Cloud Computing are the new buzzwords that I’m excited about.
Chris Riley held a presentation on cloud security and noted:
I was fortunate to speak at QCon San Francisco, CA on November 20 discussing Service Security and my own journey on understanding security but more importantly how services can be hacked. It was interesting when examining the audience to see a mixture of participants but the lack of questions was a little disconcerting. I could take three things from that:
1) Everyone in the audience was familiar with service hacking / security.
2) People are not very familiar and were afraid to ask questions or didn't understand the content.
3) People were not interested.
Since the audience stayed for the entire presentation and questions were basic, I think the majority of the audience was in category 2.
QCon San Francisco 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. Thanks everyone for coming and we'll see you next year!
We'd also like to invite you to our fourth annual QCon London conference. The event is taking place March 10-12, 2010. Registration for the 3 day conference is £1,105 until January 15! The conference will be held at The Queen Elizabeth II Conference Centre, like last year.