Blog Image

Andreas Brink

Software development stuff...

Developer Summit 2008

Conferences Posted on Sat, April 19, 2008 08:50:17

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.

Developer Summit 2007

Conferences Posted on Tue, May 29, 2007 00:08:25

Monday, back at the “regular job” after a couple of very exciting days at the Developer Summit 2007 conference in Stockholm – and time for my first blog post, who would have thought… Well, Jimmy Nilsson must have had some hope left. Still after one and a half year of nagging – he does this in a very nice and supportive way I must add – he hadn’t given up on me.

And now I have something to write about too: I gave my first “official” talk at the conference, Learning from Legacy it was called. A very exciting experience; thanks Conerstone/Josefin for giving me the opportunity! Talking/writing to other people really helps me strucuring my thoughts and is a great way to explore a topic.

When I first came up with the idea for the presentation I though it would be about techniques for testing legacy code; as described in Michael Feather’s excellent book Working Effectively with Legacy Code (I’m linking to ObjectMentor’s site since there are many other goodies there). But instead the presentation turned out to be more about design in general, and the social stuff: how we organize, learn, and act when doing software developement and (so called) “maintenence”. At least that’s my view of it. The attendees watching my 30 slides of Python code might have thought differently 😉 I really did save most of the technical stuff for the workshop I held the next day.

After the presentation I had a really interesting talk to Peter Tallungs. He’d been giving the same message years ago (as I understood it), referring to it as “Aktiv systemförvaltning”. It’s really funny how I thought I’d be talking about things people “never” talk about, and then there is both Peter, and the presenter after me, Mimmi Sundin, who were talking about software maintenance. Though my starting point was in code and Mimmi did not show any code at all, I believe we had very much the same message!

But of course there was much more than “legacy stuff” on the conference. Unfortunately I missed the first day, and the second day my focus on other peoples presentations might not have been 100%. But I saw Niclas Nilsson’s key note Dynamic Languages for Statically Typed Minds, which was very good, and again made me appreciate the fact that I actually get to do Python on my everyday project. I remember this guy at Chalmers (school of technology) who was starting to use Java for his numerical analysis software in 1996, and how he said it was something like 20 times slower than C++ (or whatever the alternative was), but that it would become fast enough soon. I must admit I didn’t really believe that he knew what he was doing; why would the choice of programming language be so important? Now Java has become the new COBOL and it’s time (I hope) for Ruby, Python, etc, to become viable alternatives in more peoples eyes. But on the other hand, I know programmers who insist on using C++ because Java is too slow…

Feel that there are lots of topics in this post I should penetrate, but that has to be in another post. Jimmy, please keep nagging!