I was too busy enjoying the QCon London 2001 conference to blog whilst I was there, so I’m writing up my notes now before I forget too much, mostly for my own benefit, but I’m posting it publicly it case it’s of interest to others.
Keynote – Scaling Lean & Agile : Multisite or Offshore Delivery / Craig Larman
Craig Larman was speaking about his experiences of creating agile teams for development projects spanning different countries and large teams. Although his first point can be summed up as “Don’t do it – if you can use a 10 man team, do”, there was a lot of good information on how to split up tasks to distribute them effectively across teams and how to maintain a common vision and feedback path across many locations. The details of this are described in his books, so have a look at his website if that’s something you want. On the strength of the keynote, his experience in this field would put his books right on my list for learning about distributed development.
A couple of interesting points he made were that teams should have functional rather than modular responsibilities – i.e. don’t have “database” and “UI” teams, have “HSDPA” or “credit card payment” teams whose responsibilities cut right across the codebase so that the eyes on the code in one module never get stale. He also recommended against proprietary software (in particular IBM ClearCase – the first of many to advise giving IBM a wide berth) – mainly as licencing issues create major problems across borders, and generally do not provide enough value over free alternatives (even just Google Spreadsheets) to justify the expense.
Why Don’t We Learn!? / Russ Miles
In the first proper session, Russ Miles spoke about why the things we hear about at conferences don’t always translate back to the office, and how to do more than just cutting and pasting ideas into a new context without thought. Apart from calling Freud a Psychologist, and a long reading list, this was a great talk about why critical thinking and experimental practice, with feedback, are essential for improvement.
There was a wonderful dialogue structure to the talk, in the best philosophical traditions, and it pulled in ideas from across philosophy, the scientific method and psychology theories to provide a coherent basis for how to apply the knowledge gained from experience or from others, and to measure its effectiveness in order to obtain more knowledge for the future.
Lean Programmer Anarchy / Fred George
Probably the talk that generated the most discussion. If Agile is about throwing away the layers that separate developers from clients, Anarchy is about throwing away the hierarchy and process to so that development teams become self-organizing around targets and around projects. It’s a fascinating idea, and involves a high level of trust and self-determination amongst the development teams. For the projects I’m used to, there’s a lot of frameworks in place to protect financial and legal considerations, which seem to be incompatible with the basic premise of Anarchy, but it’s a proven model within the FOSS world, where developers choose where they want to spend their time, which targets are important, and where developers tend to self-organise.
There’s a few themes in this talk that I saw repeated in other discussions, the develop-ship-monitor loop rather than the develop-commit-test-ship loop. This works for his teams because the code is small and short-lived so can be thrown away easily, and the code tends to be for internal teams, rather than external clients. However, the basic idea of constantly monitoring live sites to show that they keep working rather than just demonstrating it before deployment is something that seems to be a trend across many of the speakers.
Do’s and don’ts on Android / Lars Hesel Christensen
There were a few nice general points in this talk, but at its heart was a fascinating discussion of how to improve performance and respond to customers and their devices. The talk was based around the Android version of an App for customers of Danske Bank across Scandinavia.
There were a few tricks, mainly from Google’s Android Dev site, that allowed them to improve animation speed for the main interface components from around 12 FPS to around 47 FPS (which was inline with the iPhone performance), partly by simplifying the graphical structure, but also working around limits in the Dalvik JIT compiler, in particular in regard to a slow dynamic lookup for polymorphic method execution.
On the customer side, there were a few tips on how to augment your apps to make crash reports available via the Android Market more useful, and a list of problems with cameras that led to custom patching for some devices and disabling of cameras on other devices, all managed through an extensible framework that was partly controlled by the server so that preferred resolutions could be tested and sent by the server without requiring a client software update just to support a new device.
Mobile app privacy: you’re doing it wrong (and so am I) / Graham Lee
Graham Lee (http://www.fuzzyaliens.com) gave a very entertaining, if slightly misnamed, talk about good User Experience design, that was mostly about privacy but covered security aspects, comic books, and had some great examples of the good and bad out there.
There was a great explanation of why phishing and spamming work, and how developers and app store curators and designers could do more, mostly with an eye on affordability and design (for which there was another long reading list – I doubt I’ll get all this reading done before QCon London 2012). The biggest takeaway was that if you want your users to make a decision about privacy, you have to get them to do it at the right time with easy to understand language, and allow users to ignore your warnings if they know best. There was a big discussion around this with email clients. If I write “please see the attached document” and then don’t attach anything, the mail client should warn me, give me the option to correct my mistake, or the option to ignore the warning, and there is a GMail labs experiment to do just this. In this case, showing a warning when an attachment is not required (false positive) is far better than not showing a warning when it is required.
Making Apps That Don’t Suck / Mike Lee
Or : how to design software the Apple way.
This was easily the busiest talk of the day, with standing room only, and the only one presented by a pirate. The general theme was not to believe your own hype, and accept that you can always make something suck less. Great design will always trump poor design and will lead where others follow.
The Apple history of the speaker was well in evidence, and there were a few places where that distorted the core message.
The most interesting thought of the talk, and the one that went against the “release early, release often” mantra in evidence across the rest of the conference, was the idea of releasing “version 3” of your product. Version 1 proves the concept, you then get feedback for version 2 to fix all the bugs, you then get feedback for version 3 to make it shine, and seems like magic. This will make a simple, seemless experience that your competitors cannot match.
There was a great demonstration of an early iPhone app that failed to live up to this philosophy, but also demonstrated how much the market and the philosophy of apps has changed in the past few years. I believe this talk is on a world tour, so keep an eye out for a pirate in a town near you, and go see him.
Keynote : Innovations and Integrations: Applying Trendy Technologies to NASA Mission Operations Planning / Mark Powell
An interesting choice of keynote this one. Sonic screwdrivers, Cylons, Star Trek and many other sci-fi references, and lots of cool videos of robots and AR/VR technologies, and lots of talk of their hoe-grown cloud for image manipulation and rendering 3D landscapes from Mars rover data, but there was so much technical content that was just below the surface that we didn’t get to hear about, which I found frustrating. I would love to hear more about the technology behind the curtain, rather than a couple of Eclipse screenshots.
A couple of things that should apply to all software, not just where millions of dollars of equipment is involved:
Always use units; and
Never use default values.
A wide range of talks, including a couple that I don’t think I would have seen otherwise. A few themes that I saw today were to get repeated elsewhere, in particular the reduced emphasis on testing and requirements as speakers are looking to move beyond Agile, but it’s not clear how much is ideological, how much is misunderstanding and how much is just lazy. A few speakers moved onto new ways to implement the Agile manifesto that allowed them to throw out the current best practice with something that provides a better fit for their needs, but I worry that people will start taking the messages and throwing away the tools of Agile without understanding why those tools are there, which would be a retrograde step.