QCon London 2013 – Agile in Actuality, Open Data, Latin as a Programming Language
After an exciting few days at the QCon conference in London last week, I am slowly recovering from all the new input I got, and decided to do this by writing a little summary of “all things agile” from the Thursday as well as the highlights the other two days too.
Cherry Picking Wednesday
On the first day of the conference I didn’t follow a complete track, but rather cherry-picked talks the ones that sounded interesting. The day started with the keynote from Barbara Liskov about the basic software engineering research which influenced current languages and design. Stefan Tilkov talked afterwards about how to do web development right. He challenged many commonly-held assumptions about how to best develop web applications. Furthermore he gave his insights on how to really use the web core languages like HTML, CSS and JavaScript and the Web’s core standards, HTTP and URI. After that I heard Alvin Richards from 10gen talking about MongoDB schema design. Our colleague from Trifork, Janne Jul Jensen, gave interesting insights about the development of the Danske Bank mobile banking application: how do you do user experience testing if your project is top secret and you can’t give it to real users? Mark Nottingham finally informed us about the current status of the Google SPDY-based HTTP/2.0 specification, which gave interesting insights of the shortcomings of the HTTP/1.0 implementation and how HTTP/2.0 addresses them without becoming incompatible.
Damian Conway, the inventor of Perl gave, after a little beer break (that’s England, I guess) an unusual closing keynote: Fun With Dead Languages. He presented a little toy problem, which he solved with three different languages. First, he used PostScript, then he rather misused C++ and finally he showed us his own implementation of the Latin programming language. Latin? Right, Latin, the old roman language! There was, however, a serious background. Most of us develop software only with Java and/or C# and some SQL and JavaScript. His key message was that with a much broader knowledge of various kinds of programming languages we’re programming better and easier-to-read/-extend software (which probably excludes Perl) even if we only use Java/C# in production.
After the keynote, we warmed up with a couple of beers, before we left the conference center to join the conference party at the truly cool Central Hall Westminster.
Agile Thursday
On Thursday I only visited the presentations in the agile track. Most speakers reported that one thing makes it really difficult to be agile these days: project teams do perfectly implement “Scrum by the book”. Sounds good, but… Having a look at the agile manifesto we see that agile teams should value individuals and interactions over processes and tools. Doing Scrum (or any other agile method) by the book unfortunately leads to situations, where teams value the written down process in the book over interactions with the team mates (“you have to do it like this, because otherwise it’s not Scrum, I read it in the book/heard it in some talk”). Ward Cunningham said during a chat: “Kent Beck and me wrote the extreme programming book, but we’re not doing it like described in the book. It’s just a point to get started. You have to understand what makes you tomorrow better than today. That should influence and drive your process”.
The first talk from the agile track was from Glen Ford, explicitly talking about People over Process. He shared his experience from being a tech lead at a start-up. He recognized that his team’s doing Scrum as a ritual act, without asking why they’re doing certain things. They discovered that a process isn’t a rule of law, but rather a set of concepts. Instead of following rules, they formed a team vision and a why for everything they do. If you don’t find a why, don’t do it. In their specific context, they couldn’t find a why for estimations, so they skipped it. Finding a why also encourages communication and the more communication they had, the less process they needed. The best and most open communication is among team members, which know each others strengths, weaknesses and quirks. So they decided to do not break teams apart, but rather to form long-running teams, which eventually got hyper-productive.
Hyper-performing without the hype by Dan North was seen as the highlight of the day. Indeed, it was the expected hour of entertainment paired with agile expertise. Dan explained the things he saw in the past, which made teams performing extremely well. I won’t mention all, but only those I learned as well in the past: developers should also be absolute domain experts., e.g. you can only be a great team developing trading software, if every developer of the team knows the trading business well. Developers have to participate in trading classes and you should seed your team with domain experts the developers can practice with. In times of Lean Software Development everyone is seeking for value, but we should nevertheless prioritize risk higher than value. Even if a solution promises high value, the question remains how much uncertainty we have to face for that solution. He then moved on to a classic: planning is everything, plans are nothing. Plan as far as you need and adjust along the way. He also strongly recommended to try out technical things regularly, even if you’ll never use them in production: languages, programming concepts, etc (I personally get stomach ache when writing for-loops in Java filtering or mapping list content since I learned functional programming…). Finally he recommends to release often, if possible daily, even if you think the software is not ready. It sounds weird to show the customer something which isn’t ready yet, but if you give the customer the chance to use the software, you’ll get feedback from real use, which is extremely helpful (think about opportunity costs).
Besides the presentations, we also had the opportunity to chat two hours with Ward Cunningham about Technical Debt (beyond the current hype and all the misunderstandings around that) and Agile Software Development (also beyond the hype around Scrum and all the misunderstandings around that). All agilistas completed the day with a fire-site chat with Dan North and Ward Cunningham organized by the Agile London user group.
Big Data and Architectures of the small & beautiful on Friday
The opening keynote from Damian Conway was one of the highlights of this conference. He talked about how to do interesting and fun technical presentations. He gave a great example, because the 45 minutes with him were super-entertaining and we all got very valuable take-a-ways for preparing presentations.
Cool talks about MongoDB, Hadoop and Riak followed the keynote. Since Hadoop and Big Data are a big hype, the speaker Jamie Engesser from HortonWorks pointed out, that we should really, really do Big Data for a reason and not because it’s cool 😉 Matt Asay from 10gen gave a nice talk about the past, present and future of NoSQL. He pointed out, that there is a set of exclusive use cases for document-oriented, column-oriented, key/value-oriented and relational datastores. But: there are many overlaps, where either one of them could be a good solution. He questioned polyglot persistence, because he’s not sure if an organisation can really deal with several different databases in operation. Andy Gross from Basho gave an honest talk about the problems Riak faced the last 5 years and how they solved them.
For me, the absolute highlight of the day was the presentation about the Triposo travel guide architecture. The presenters, former Googlers and ThoughtWorkers are avid travelers and wanted to know, if they can do better then the common travel guides like Lonely Planet & Co. So they started what they learned at Google: crawl the web, aggregate, match, and rank. They send their crawlers to fetch gigabytes of travel related content from all kinds of sources like Wikitravel, Wikipedia, Facebook, Open Street Maps, Flickr and some more.
Once they have all the data, it’s time to parse. From each source they extract information about the places like villages, cities and countries, and the points of interest (restaurants, museums, shops, trees, etc). They’re looking for patterns to create one bucket of information for a particular place from all the various sources they crawled. After this phase they end up with exactly one record for each place or point of interest that has all the information from any of the sources they’ve used. Now it is time to rank and these ideas were pretty cool. Among other things, they extract meta data from Flickr pictures like where and when the pictures were made. That brings them interesting information about possible events, e.g. there are many pictures around 52°38’N 4°45’E, but only from April to September and only Fridays between 10.00–12.30 a.m. There must be something interesting! That’s the cheese market in Alkmaar. So, if your on a trip in Amsterdam, your Triposo travel app proposes you a day trip to Alkmaar on Friday (with my Lonely Planet book I usually see that only when it is already too late). I don’t know if their app will revolutionize the way we travel, but it is an interesting idea how to use the huge amount of publicly available data (=Open Data).
Since not only the idea is nice how to use Open Data, but also the available languages and services they use (Python, Google Spreadsheets, Amazon S3, Amazon Mechanical Turk, automated deployment into the App Store with a browser remote control, etc) we invited them to give a presentation at one of our GOTO nights.
QCon London was absolutely worth it this year and hopefully I’ll be back for more inspiration next year. I was really impressed by the quality of the conference – tracks, speakers, keynotes, chocolate cakes and the selection of international beers. QCon London is one of the best technical conferences I’ve participated in and I recommend it for anyone interested in enterprise software development (It’s almost as good as GOTO Amsterdam ;-)).