In case you haven’t heard, Stack Overflow is a free programming Q & A site from Joel Spolsky and Jeff Atwood that was born out of frustration with the existing sites in this genre. Stack Overflow has been going just over a year and during October and November Joel and Jeff have teamed up with Carsonified to embark on a world tour, with the aim of exposing developers to a diverse range of topics. Think of it as a sort of tasting menu for software developers. Along with my friend John Conners I attended the London event at Kensington Town Hall on the 28th October. This is my brief account of the day.
The conference opened with a humourous five minute video showing Joel and Jeff in their respective offices attempting to record the weekly Stack Overflow podcast using Skype. I say “attempting to” because Joel kept being interrupted by various top-flight Fog Creek Software developers, who were portrayed as being completely clueless with Joel acting as their cranky drill sergeant. It got a good few laughs and acted as a nice introduction to when Joel himself stepped up on stage, wearing a Union Jack baseball cap.
Joel’s a good speaker and gave a witty and entertaining talk about the tension between the quest for software simplicity and the fact that adding features drives sales. His talk was peppered with lots of examples of when software interrupts the user asking them to make decisions about things they don’t care about, e.g. “New Windows Updates are available”! Although he was exaggerating for comic effect, I think that to say that it’s possible to replicate a 37signals‘ application by adding a textarea to an HTML page was a bit harsh. Often a lot of effort and refinement goes into making something that appears so apparently simple. One of Joel’s points seemed to be that you need to add features to software in order to win customers who are holding out for that one feature that they need, although I'm not entirely convinced by this argument. After all, 37signals seem to be just as successful as Fog Creek.
Michael Sparks from the BBC was next, giving a live coding session that demonstrated Python. This was a line-by-line dissection of a small and clever spell checking program that apparently is used by Google. I know that some people attended Dev Days in the hope of seeing lots of code, but I found Michael’s talk to be quite a change of pace after Joel and all that code made it just a little dry for me.
Following a break and in a last-minute line-up change, Joel was back on stage giving a demonstration of his company’s flagship product FogBugz 7 and its new companion, Kiln (currently in beta). Most of this talk was familiar material to me having attended the FogBuz World Tour. The big story for FogBugz 7 is that it has a plug-in architecture and indeed Kiln itself is a plug-in that provides a front end to the Mercurial hosting that Fog Creek are now providing. Kiln seemed very much inspired by GitHub to my eyes, although it does add a well-executed code review workflow. However, I'm not sure how well this will work in practice because I've always found that a lot of value in a code review comes from being sat with another person and having a conversation about the code. I guess Fog Creek know their market and think this will fly.
There are some nice new features in FogBugz 7, but I'm always struck by how you can see some cracks where it’s outgrown its humble bug tracking roots. Fog Creek now like to position FogBugz as software that will handle all your development team’s needs, including bug tracking, estimation, discussion forums and email. It’s packaged as a complete project management solution, but some of the terminology used is still rooted in bug tracking. For example, bugs, new features and even emails are all called cases and the slick Evidence-Based Scheduling feature has a slider with notches for Must Fix and Fix etc. that can be used to filter a graph showing when you’re likely to ship a new feature in your product. I don’t know about you, but that’s not the terminology I use when thinking about these things i.e. as a user, FogBugz isn’t using my language. Finally, a lot of people present were complaining on Twitter about having valuable time taken up with what amounted to a FogBugz commercial, but I thought it was a fair trade-off given the very reasonable ticket price for the whole event.
Reto Meir opened his Android presentation by asking the audience for a show of hands from people who had an Android phone. It must have been a bit disheartening for him when about six people raised their arms in a sea of iPhone owners! I would even go so far as to say that I don’t think I've ever seen such a concentration of iPhones. I may have seriously misjudged things, but I find it very difficult to get excited about Android and nothing in Reto’s talk about developing for it changed my mind. From using Java, to creating GUIs by editing XML files, it all looked a bit tired. It didn’t help that Reto kept zooming his screen in and out in an attempt to show the code clearly, but probably just succeeded in making us all feel sick. I came away with the impression that you have to do about five times the amount of work just to support the various hardware differences that implementations of the Android platform straddle.
Remy Sharp gave a nice overview of jQuery, although undoubtedly most of the audience were already familiar with at least some of this material. Although I haven’t yet used jQuery, I found the section on what it takes to write a good jQuery plug-in to be particularly interesting. Lunch followed and we opted to get some fresh air and food from the Marks & Spencers over the road. I'm glad we didn’t try to get some subsidised food from the venue itself because there was still a long queue of hungry people when we returned for the afternoon sessions!
I'm not quite sure what my expectations were, but Jeff Atwood turned out to be just as interesting and confident a speaker as Joel. He spoke about the passion and care that have gone into the building of Stack Overflow. I'd already heard some of Jeff’s talk on the previous week’s podcast and was a bit taken aback as to how the live version in a different city almost matched it word-for-word. Jeff did confess that this trip was the first time that he'd been to Europe, which provoked some Twittering about whether the UK should be regarded as being in Europe or not. I guess it just doesn’t matter when you've never ventured across the Atlantic before.
Jeff was followed by Pekka Kosonen from Nokia who gave a presentation about developing for the Nokia platform using the Qt framework. As I have zero interest in anything to do with Nokia I was probably posting to Twitter during those bits. For the rest of the time I was listening to Pekka telling jokes and speaking in a disarmingly non-corporate and deprecating manner about the realities of Nokia development. Some examples: “Nokia are well aware of how difficult Symbian was to program” and “we used to suck but we’re getting our act together”! Pekka also dispensed some advice about how to get around the daft restriction that Nokia’s bizarrely-named and probably irrelevant Ovi store only accepts submissions from companies, not individual developers.
Attention in the room picked up again when Chris Eubank sound-alike Phil Nash started his presentation about what it was like to develop for the iPhone. This was the one that the iPhone wielding majority of the audience had been waiting for. A quick straw poll earlier had already established that a surprising majority of the audience were .NET developers—I guess they’re more opened-minded than we thought! ;–)—so Phil’s Objective-C boot-camp must have come as quite a shock! Phil deliberately avoided using Interface Builder, instead running through some basics of Objective-C before live coding a simple iPhone application that performed an animated transition between two images upon receiving a touch event. The #devdays Twitter channel lit up with disillusioned C# programmers proclaiming their new-found hatred of Objective-C and I think that unfortunately Phil probably put a fair few people off developing for the iPhone who may have been considering it. That’s not at all a comment on Phil’s presentation which was very good, rather a reflection on the shock of seeing the Objective-C syntax for the first time. I must admit that it did look like a lot of hard work and I've seen it before. So the superficial take-away from Dev Days appears to be that Android/Nokia/iPhone development sucks!
For many the next talk by Google London’s Jon Skeet was the highlight of the day and I would probably include myself in that category. Jon is the top dog on Stack Overflow, having acquired the most reputation points—as voted for by other users—through his answers and contributions to the site. I must admit that before the event I'd mentally pigeon-holed Jon as someone with far too much time on his hands who needed to get a life and spend less time answering questions on Stack Overflow. I'm happy to report that I couldn’t have been more wrong and Jon’s lively and imaginative session on how as developers we dismally fail at even simple tasks such as using strings, numbers and dates properly was ample proof of that. Rather than the sallow, reclusive geek I was expecting, we got a great speaker who used hand-drawn slides and shared the stage with a sock puppet! The overall effect was charmingly quirky and British.
PhD student Paul Biggar talked about the lessons he'd learned from his studies on how not to design a scripting language. There was some interesting material here on the differences between dynamic interpreted scripting languages and static compiled languages and the technical reasons why the former can’t be as fast as the latter. The only problem was that I kept expecting Paul to tell us what the answer was and he didn’t. Perhaps he’s keeping it a secret because he has something special up his sleeve.
Finally, Christian Heilmann told us about the Yahoo! Development Tools. I was already familiar with the YUI Library but the demo of the Yahoo! Query Language (YQL) came as a revelation to most of us in the room I think. YQL is essentially a SQL-like language for easily manipulating data across Web services. Christian gave some amazing demonstrations that included querying Flickr for cat photos by typing what was pretty much a SELECT statement into the console on the YQL website. The results get returned as XML or JSON depending on your preference. YQL provides a single endpoint that developers can use from within their applications to query, filter and combine data from a variety of sources. In turn, developers can make their own application data available to YQL using what Yahoo! are calling Open Data Tables. It’s impressive technology and definitely worthy of further investigation. I'd say that learning about YQL was worth the price of admission alone.
Overall I found Stack Overflow Dev Days to be an interesting and enjoyable day out with more hits than misses. Joel asked for a show of hands at the end to gauge the demand for a return next year. If it happens then I’ll be there.