If observation is the first stage of scientific discovery, watching what people are doing in a field will tell you what the academics and theorists will write about in a few years. By this reasoning, SD West and SD Best Practices are important bellwethers for programming theory, even though there’s little theoretical about the conferences.
Take an exercise performed with the audience by leading Agile proponent Scott Ambler. He had us spend thirty seconds thinking how we’d design a simple interface. He then pointed out that most of us probably thought over a variety of considerations from requirements to data design and choice of programming language. In other words, real programmers don’t compartmentalize the way the waterfall theorists would like us to. We bring all considerations at all levels into the very initial stages of design.
Another amusing insight came from a session by another SD West favorite, Neal Ford. (SD West maintains a stable of practitioners who tend to offer a lot of sessions and tutorials each year.) The central lesson of his session on test-driven development was that it’s a good way not just to eliminate bugs, but to produce a better design. For instance, one tends to modularize code more in order to make it easier to test, and each module tends to have a clear purpose with easily understood parameters and side effects.
The theorists tell us to modularize code, as well as to do the other things promoted by test-driven development. But few programmers take the theories to heart. By following a practice with clear benefits (coding around their tests) they end up doing the right thing. That lesson could be the general take-away from the contest.
Code is law, even for programmers. Years of being harangued by academics to do modular coding didn’t change programming practice, but the embodiment of good practices into easy-to-learn languages (such as C++, whose creator Bjarne Stroustrup won the conference’s Excellence in Programming Award) turned modular coding into industry-standard practice.
Similarly, although leading theorists have always disdained debugging–because it simply fixes one error while proving that your code is vulnerable to more errors–and Linus Torvalds famously banned debuggers from the Linux kernel tree, robust code review practices that reduce the need for debuggers won’t take hold until there are more popular tools to support them.
Bouncing from one commitment to another, I never got a chance to see an entire session. So I don’t know whether the practical session leaders discussed the practical drawbacks of their recommendations: how much overhead is introduced into a program through the fine-grained modularization that Ford promoted, or whether the rigorous testing and deployment strategy Ambler described in his talk on behavior-driven database design would really reproduce the conditions experienced with exabyte-sized data stores.
The conference was not exclusively about project management; there were plenty of tutorials and some more advanced sessions about useful new technologies such as Java I/O, LINQ, and CardSpace (Microsoft’s interface to current standards for identity management). I attended most of Bruno Schäffer’s talk on design patterns for Rich Internet Applications. Once again, the focus was on making theory fit real-life practice. You have to put more of the MVC design than you want onto the client, but there are ways to simplify it. Schäffer recommended adding a presentation model to the MVC and keeping all state in the presentation model layer, so that the view can be trivially small.
One of the most inspiring moments–other than the JOLT awards, five of which went to O’Reilly–was the keynote by James McLurkin, designer of a distributed robot control system called Swarm. Technically, his research into making distributed systems converge on the best solution to a problem–and demonstrating that at least some of the time, a swarm of systems communicating only locally with systems less than a meter away can converge on the best solution–was quite interesting. More fundamentally, he reminded engineers that we are facing the greatest threat to humankind in our history, global warming, and that engineers have to mobilize to fix the problem.
He also urged engineers to speak out publicly to attract young people to engineering fields and convey how much fun it can be. His approach to teaching is the just-in-time learning that our Head First series and MAKE division promote. Disciplined learning is sometimes necessary; after all, McLurkin has learned (and taught) a lot of physics. But engaging the learners and getting them to put their hands on what they’re learning is crucial.