I helped run Software Craftsmanship 2009 in the BBC Media Centre a few weeks ago. It was a really thought provoking day where many of the well known master craftsman in the software industry exchanged ideas, taught and discussed what it means to be a software craftsperson.
I started the day helping Jason Gorman and Peter Camfield setup and have to congratulate and thank Jason for organising a very successful day! Also many thanks to Robin Doran who helped massively in getting the logistics of the day sorted.
Jason put together a load of references to other blogs and materials from the talk and a really good summary on Kerry Buckley's blog.
The following are some of my notes and thoughts on the sessions I attended.
Programming in the small: Ivan Moore and Mike Hill.
This was my highlight of the day where Mike and Ivan facilitated a hands-on coding session with the group of about 50 of us. They gave us some example code and asked us to pair up and "show it some love". After 10min of reviewing and refactoring we were asked what we'd done and why. They would then summarise with their main points and repeated the process with two different code examples. Their slides and Ivan's blog contain some really great advice for anyone writing code. Two of the main points from the workshop really stuck in my mind.
- Removing even the smallest amount of duplication in your code is worth it.
- Readability is extremely important to the modifability of your code.
Other smaller points from my pairing sessions were.
- Your tests must be easy and fast to run everywhere, otherwise refactoring is much harder or you can waste time trying to get them to run.
- The Eclipse refactoring tools are fantastic, use them even for simple refactorings so that you get used to them.
I didn't at first think i got much out of this session as I was looking for clear answers to the questions he posed. His main point though was that there's no right way to answer them. It's a powerful message and also a double edged sword. It's powerful because its damaging to follow structured programming and patterns rules without knowing why you're using them. It's also dangerous because it can be used as an excuse by non-experts and experts alike to ignore some of the hard rules that are important in certain situations.
I spoke to experts on the weekend who were ignoring ideas and practices that would help them because "there's more than one way to do it". I'm reminded of my uncle here who still claims that there is no proof that smoking causes lung cancer. It seems to me that too many conversations and arguments in our industry are solely fueled by religious beliefs and not backed by scientific proof. Even when the proof exists it is ignored.
Let's hope that movements such as the recent Software Craftsmanship help us reflect on the skills required to do our job well and improve the software we write.
My Defining Moments: Steve Freeman
There's a very good summary of this one on Kerry Buckley's blog, however the one thing that struck me with everyone who stood up and spoke about their defining moments was that everyone included learning and really understanding TDD as one of, if not the defining moment of their carrer.
Final Thoughts
I had a great day and I hope all of you who were also at Software Craftsmanship 2009 enjoyed it and learned something, I certainly did!