On the behalf of my current customer I went to PLM Europe in Frankfurt on October 9-11, a UGS User conference. UGS is one of the major suppliers of software supporting product life-cycle management (actually meaning parts, articles, hardware). After visiting three days of presentations and workshops, some more marketing than workshops, some mediocre and some really inspiring, I found that many things being said was also applicable to software. But there are genuinely different properties in software and software based products which this branch of the engineering business has yet not understood. I also realized that replacing the first letter in the PLM acronym with an A gets you ALM, Application Life-cycle Management, which has created some whoa lately. I guess I’ll have to dive into that area also.
Yesterday Andreas Larsson and myself hosted the first ever Coder’s Dojo in Sweden. If you have never heard about it before you can visit its home page and explore more.
It was an interesting experience. Having run through the Bowling Kata a number of times, both together and by ourselves, we still found that discussing with people was a learning experience since many of the attendees did not have the experience we did. And as always, talking about something forces you to be clear in a way you don’t need to otherwise.
My personal insight with the Kata the way we played it out (inspired by Uncle Bob’s presentation of it) was how strong the urge to create new classes is in all of us. Andreas and I fell into that same hole when we did the Kata in Oulu the night before XP2006.
I also discovered that I had insights that I where not aware of with regards to the brittleness of testcases; that you should be careful to test the intended behaviour, and not the design. E.g. when doing the first test case for the Bowling Kata, don’t test that the score of the created (presumed empty) game is zero. That’s implementation! The required behaviour (and the only thing that should be tested) is that calculating the score, after all the rolls of the game, should give the correct result.
And of course, you can find a lot of thinking on the BDD (Behaviour Driven Development) on the web.