Last week it was time for Developer Summit, Cornerstone's annual conference for software developers. I have the feeling that the conference is growing every year, both in terms of size and quality. As a track host - I was filling in for my colleague Jimmy Nilsson who couldn't make it - I only got to see the presentations on Building for the Enterprise the first day. I am a little biased of course, but I think that it was a very solid track. Succeeding with enterprise development requires skills in a number of areas, that was Jimmy's perspective when he put the track together, and it was reflected in the different presentations:
Rickard Öberg was giving an introduction to his latest design effort, the Qi4j framework - the next level AOP, or OO on steroids you could say. As always, Rickard is pushing the limit of design to try to solve everyday design problems as simple as possible. Now, simple is a relative term, and as Rickard pointed out, old ways of thinking can get in the way when starting to work with Qi4j. One of the things I found interesting was that layering was a built-in code/design concept instead of merely a rule documented in the Software Architecture Document.
Jim Webber was talking about Guerilla SOA, a highly entertaining presentation full of interesting and fun reflections on SOA, ESB-solutions, the state of the WS-* stack, and much more. One of the points Jim made was that systems integration is a messy thing; ESBs don't really help supporting cleaner architecture, they just hide the mess. And that we don't have to reach to the vendors to get a good integration platform - it's already there, and has been for a long time: the web. Http and it's supporting infrastructure has a lot to offer, and Jim was giving examples of design patterns to use for http-based SOA scenarios. The room was packed for this presentation, and I don't think anyone regretted coming to listen to Jim.
Johan Andersson from Qondoc System talked about Automated Acceptance Testing and introduced us to the open source testing framework TextTest he has been involved in developing. Implementing effective acceptance testing is a cornerstone in agile development, and the way it's done in TextTest is quite different from what most people are used to. The approach is basically to put log statements in the source code, and to compare these between test runs; as long as they are the same the behavior is unchanged. For this approach to work we need ways to automate tests at the UI-level. Johan showed a couple of different Java Swing-based UI test-drivers and the remarkable difference in readability of the tests. What still bothers me is that there is a lot of manual work in terms of translation/mapping to obtain that readability. Would it be possible to record understandable tests directly from executing code just by naming UI controls in an appropriate manner; or maybe by applying some metadata to them?
Joakim Sundén made his debut as a conference speaker with his talk Professional Ethics in Software Development - and a great debut it was! Joakim's talk would have fitted great in the People matters too track, but I'm really glad we got to get him in this tech-oriented track. Not only did Joakim manage to create a great atmosphere, and give a highly enjoyable talk, he also touched the very essence of what is important to do well in software development: having skilled individuals who care about their work. As Joakim pointed out: The knowledge, techniques, and practices are all out there, but as a community we are not that good at using them. It's always easier to blame someone else for ugly code: I didn't write it; We don't get time to do good design; We never get to learn new practices. But the fact is that you can often solve the problems yourself. Actually, often the ONLY way to make a change is by starting to change yourself. Joakim's blog is a good starting point if you want to find ideas and references for developing your skills.
Christian Weyer finished the track with some leading edge technology: The Internet Service Bus. I've never met Christian before; I suspect he thought I was a little bit dumb when we first met... Christian was supposed to run some demos and had problems with a shaky Internet connection. My response to that - not just once, but a couple of times - was "Can't you run the services locally?". Finally he looked at me and said "No I cannot, it's the Internet Service Bus - you know...". Guess the title of the presentation was a pretty good hint :-) Anyway, the Internet connection worked after all, the demos worked, and the presentation worked! High energy, some leading edge stuff, and a fun presentation from Christian was a great way to finish the day. The Internet Service Bus definitely is an exciting concept; read more on Christians blog or check out this link.
I gave a presentation myself too, called Testing and Refactoring Legacy Code. Using the L word might not seem to be the smartest way to attract listeners - that's what I thought at least. But after my presentation last year - Learning from Legacy - I've realized that there is a big interest in this topic. And it seems to appeal to developers and managers alike. Guess we can't escape reality: most of us work with code-bases that have been around for quite a while. For me, working with and talking about legacy code has become a great way to better understand and explain software design. Gaining insight from studying history and archeology works in the software domain too.
Apart from the Building for the Enterprise track I did not get to see as many presentations as I would have wanted. However, I was fortunate to be able to go listen to Dan North's talk on best practices. I'd been told that Dan stole the show at Öredev last year, and now I understand why. If you missed Dan's presentation you have the chance to catch up by reading his article on the topic.
Thank you Cornerstone for a great conference! I'll hope to be back next year, in one way or the other.