Archive for February, 2009

Software Craftsmanship 2009

Yesterday I attended the Software Craftsmanship 2009 conference held at the BBC media centre in London. Overall, it was a great day with some really interesting sessions covering a wide variety of topics. It was especially interesting to share ideas and experiences with developers from different backgrounds using different languages and platforms.

The first session I attended was Pitfalls in Test Authoring with Dave Cleal and John Daniels from Syntropy. This session was an open discussion on identifying test anti-patterns. Some really good points were raised and the discussion was very open and frank. There was some debate on whether unit tests should ever hit the database and what the scope of a unit test should be. This discussion later led to an open spaces talk on functional (integration) testing versus unit testing.

The next session I attended was Gojko Adzic’s talk on Specification Workshops. Gojko gave an excellent presentation on running workshops for the whole team to discuss the requirements for an iteration. One point that stood out for me was that the workshop should focus on what the software needs to do and not how to do it.

Over lunch I had a good chat to some java developers on why we should minimize code comments and the use of NOJOs ("Non Object-oriented Java Object", or DTOs to us .NET developers).  I also had a chance to catch up with some ex-BBC colleagues who were attending the conference.

After lunch I went to a session on Responsibility-Driven Design with Mock Objects by Willem van den Ende and Marc Evers. This was a live pair-programming session developing a text-based adventure game using RSpec and Ruby. The tests were focused on object collaboration rather than state. It was really interesting to see the use of mock objects in Ruby. I also found the focus on pure mocking for testing object collaboration to be very different from using mock objects to simply replace dependencies.

The next session was Empirical Experiences of Refactoring in Open Source by Steve Counsell from Brunel University. Steve presented his findings on the use of refactoring in open-source software. His findings were interesting but I was left a bit confused by what the results of the study meant for software teams. I would be interested to learn more about the conclusions of the study.

The final session I attended was on Test-driven Development of Asynchronous Systems by Nat Pryce. Nat gave a good talk on his experiences with end-to-end testing of asynchronous systems.

We finished the day with a tour of the BBC Television Centre and a few beers in the bar upstairs. A few of us got to see Jonathan Ross recording his Friday night show and apparently U2 were guests. Unfortunately we didn’t bump into Bono, but we did get to have a photo with a TARDIS.

All in all it was a great day and I would like to thank Jason Gorman for organising this excellent event.

Focus On Quality Improves Delivery

Ron Jeffries explains why software quality and speed of delivery are not mutually exclusive. If you want to continually deliver working software quickly, then you need to maintain high quality:

http://xprogramming.com/blog/2009/02/01/quality-speed-tradeoff-youre-kidding-yourself/

Uncle Bob has also posted his thoughts:

http://blog.objectmentor.com/articles/2009/02/03/speed-kills

I often find there is a lot of focus on delivering software quickly, but not so much on maintaining quality. I think this is because it is generally considered that maintaining high quality means greater expense and later delivery. However, the higher the quality of code, the better able we are to deliver working software quickly and repeatedly. My belief is that the quality leaver should never be touched, or you risk taking on crushing debt.