Monday, 21 January 2008
Day One
I went to this tutorial as well, which I thought was OK.
Frank Buschmann is someone that has really lived creating and building a big, distributed system, and it showed. He is rather tall, but stooped and is very animated when he speaks. He definitely lives for the code and maybe has seen a few too many software corpses for his own good.Kevlin Henney on the other hand, is your typical relaxed consultant - guru, who seems to take everything in his stride (i.e. "OK, relax there Frank, everything will be all right..."). Together they make a good team and they interacted reasonably well, swapping over from each other after a couple of slides.
The basic idea that I got from the tutorial was that an architect can create a whole system just by applying one pattern after another to accommodate the forces working on the system to be developed. This idea was originally put forward by Christopher Alexander in his book, The Timeless Way Of Building, which was about applying things like the courtyard pattern to make a building a nice place to live in.
In software development, there are many different patterns and most have been "discovered" to work under a specific context. For instance, the Gang of Four patterns in that famous book are now seen to be a set of patterns for building frameworks (i.e something like swing or struts) and not really applications. Application patterns are much more context dependent. A pattern used for a logging service in a distributed environment would be different to the same service used in a non-distributed environment, because the forces under consideration are different in those contexts.
Buschman and Henney are both distributed system experts and they have spent a long time documenting and publishing a book or two on these types of patterns, so their examples were from this domain. They told a story demonstrating how they built a system using these ideas, and did things like applying the domain object pattern onto the big ball of mud at the start and using something called a half object pattern to span object state over several parts of a distributed system. I thought these ideas seemed reasonable, especially when they emphasised things like coding to an interface and layering your code properly.
At the end of the session I asked Kevlin if he thought that test driven development could be of any use in this way of building systems, and he surprised me by saying that it is no coincidence that the primary discoverers of the design patterns movement were also the primary movers in the test driven development movement. Its clear to me now that you can't really build high quality software without unit tests.
In summary, there is a lot more to patterns than the gang of four, and I have yet another set of books to stick on my wish list.
Keynote : Software and Services - Konvergenz von Web 2.0, SOA and SaaS
Microsoft have made some good games in the past (for example Urban Assault) , but I had some bad experiences programming Visual Basic as a noob, so I had this sinking feeling when
I saw the name Microsoft on the slides. It looks like Microsoft are going to try to support open
APIs in the future. I'm not sure though, because it was late and it was in German, and the word 'monetise' appeared on several slides). I wanted to ask Ms. Sondermann if she knew when the next version of Combat Flight Simulator was coming out, but she didn't take any questions at the end.
Night School : 10 Ideas Java Guys Should Steal From Ruby
In my night school I saw Bruce Tate. Bruce was a major league Java guru and has written several super java books, one of which really helped me in learn spring. Bruce turned out to be a very, loud, active, enthusiastic speaker who still looked like he can ride up a mountain or two. I guess he was so loud because otherwise we would have fallen asleep, but the information he gave out should have kept everyone awake.
His theme is that there are several ideas in Ruby language and the community that could be used to improve the overall process of programming in Java. He gave several examples using closures, continuations and meta-programming, demonstrating how easy it is to write small pieces of code that do a lot in this language. He also pushed the idea of Convention over Configuration (which has been picked up by Maven) , using the trash can (when something has been deprecated, eventually throw it away) and obsessing over testing (exactly).
All in all, a very cool talk, but I think someone called Bruce should be wrestling crocodiles for a living on Australian TV. Something to consider for the future if the old Ruby thing doesn't work out.
OOP day 1
Ansonst läuft hier alles mit deutscher Ordnung ab. Wir haben unsere Ausweise auf deren Rückseiten auch alle reservierten Vorträge gedruckt sind (weil nur die dürfen wir besuchen). Die Ausweise werden bei jeder Veranstaltung gescannt und dann noch beim Mittagessen und Abendsnack. Bei den Toiletten haben sie uns noch nicht gescannt, aber das kommt sicher noch…
Tutorial: Pattern-Oriented Software Architecture
Gleich zu Beginn eine positive Überraschung: Frank Buschmann und Kevlin Henney sind ein wirklich gut eingespieltes Moderatorenteam, die sich mit Witz und Elan über Pattern als Architektur-Konzeptionshilfe auslassen. Im besondern geht es darum von den (bekannten) alleinstehenden Pattern zu verzahnten Pattern (complements und compounds; eine Klasse erfüllt Rollen in meherern Pattern!) und weiter zu Pattern Stories und Pattern Sequences (die Reihenfolge in der man mit Pattern Requirements erfüllt begrenzt das weitere Design) bis zu einer Pattern Language. Da ist brauchbares für unser Legacy System dabei! Pattern Language ist imho momentan noch zu guru (James ist begeistert davon ;-), aber Pattern Stories wären ganz praktisch für ADDs. Und die Pattern Complements und Compounds sind eigendlich Basics, um Pattern richtig anzuwenden. Ja, das Tutorial hat uns ziemlich begeistert und die Unterlagen sind echt angenehm zu lesen.
Keynote: Microsoft: “Software und Services – Konvergenz“:
Wow, time for buzzword bingo. Die MS Tante hat ihren Werbevortrag sehr brav auswendig gelernt. Aber in einer MS Präsentation die Logos von Firefox, Apache, Redhat u.s.w. zu sehen war den Spaß wert ;-)
Nochmal Frank Buschmann, aber nach dem langen Tag schon etwas angeschlagen. Der Vortrag war ein bißchem am Titel vorbei. Die ganze Reihe von Warstories über gescheitere Projekte war zwar sehr praxisnah, aber Fehler machen wir auch selber genug ;-) Was ich am interessantesten gefunden habe, war ein Beispiel mit einem fast schon „soft“ agile Ansatz. Statt den nervigen daily/weekly Meeting eine Art interner Milestone alle 4 (oder gar 6) Wochen, bei dem einfach der aktuelle Stand mit dem geplanten Soll verglichen wird. Damit kann man Entwicklungen in die falsche Richtung immer noch rechtzeitig abfangen, ohne gleich inkrementell arbeiten zu müssen. Das wäre vielleicht etwas für uns.