Keynotes at SD West 08
09 Mar 2008Conferences like SD West provide a venue for developers to keep up with a rapidly changing industry, and learn practical techniques to become more productive. However, the industry is sometimes a bit short-sighted, and overly focused on the latest technologies and buzzwords. By contrast, keynotes typically feature legendary speakers who are unencumbered by the pressure of the current fads, and as a result take a broader perspective to reflect on the history of the industry.
Scott Ambler’s topic was, not surprisingly, Agile, and where it is headed. As usual, his talk was very dynamic and entertaining. I have a personal interest in survey issues, so I especially enjoyed this pearl from his survey on Agile, which among other things shows that 78% of managers claim their team is doing Agile, when only 61% of developers say they do. It’s an interesting discrepancy, which surprised Ambler, who was expecting a possible tilt in the other direction, reflecting that developers would do Agile “undercover”, in spite of their management. I wonder if this indicates that Agile has become so mainstream that it is now another buzzword of corporate speak, liberally used by management to describe the same old process? Beyond that, I appreciated the honesty of the talk, especially coming from someone blatantly partial to Agile. Rather than stopping at the self-congratulation, he discussed the changes that are needed for Agile to successfully scale to large projects. In particular, he emphasized that while Agile works well for construction, some adaptation is required to cover the early phase of a large project (inception), and the hand-off phase. This is to an extent an obvious point, but there is not much material from the Agile community around these issues, which are secondary on smaller projects, but essential to the success of large ones.
“Beautiful Code” came out in June 2007; I have not had the opportunity to read it, and was therefore very excited to see that 6 of the 20 book authors would discuss that topic in a panel. Interestingly, very little was said about elegant algorithms. One unexpected angle of the discussion focused very literally on code as a body of written text, with which needs to be read a lot, and thus requires good presentation. In retrospect, I should not have been surprised; I know by experience that one reliable way to get a heated discussion started between software engineers is to ask if the right indentation is 3 or 4 blanks. A pivotal idea in the discussion was that beauty in code came from the constraints; there is no beautiful code per se, but an economical solution to a problem with a specific context. This resonated with my belief that design is all about trade-offs, and obtaining the simplest possible system with the most capability. I also thought it was good food for thought that ugly code is often beautiful code that has been modified by people scared to change it.
In the last keynote I attended, Bjarne Stroustrup discussed object-orientated and generic programming. In a nutshell, Stroustrup considered the duality of object orientation, where inheritance allows easy reuse of implemented behavior, but poor functional extensibility (he introduced the idea of “intrusive operations”, such as adding a method to objects in a hierarchy), vs. generic programming, where algorithms can be extended easily to multiple entities, at the expense of object reuse. Not being a C++ guy, I may have missed some points here and there, but I got the impression that C# (which he mentioned in his slides but never once pronounced) benefitted from the history of C++, and I am grateful to be working with the .NET platform, where generics and lambda expressions do provide what seems to me a solid foundation, as well as a much more palatable syntax, to address these issues. Regardless of language specificity though, this was a great talk, in that it provided a clear conceptual map of challenges and trade-offs a language has to face.