DDD North 2014

So I finally attended DDD North this year, which was held at Leeds University. It was sold out within a single day or something ridiculous like that, which is a testament to how many people look forward to this conference. I believe next year it (hopefully) heads back up to Newcastle, but we shall see! The day was very well put together by Andrew Westgarth (@apwestgarth) and co., and really was an incredible feat considering it’s a free event.

Audience at DDD North 2014

As much as I’d like to be in five places at once, I could unfortunately only attend one of the five sessions which ran concurrently in each slot.

I started off with Sana Sarjahani‘s “Writing JavaScript Unit Tests” which was an insightful introduction into writing unit tests for JavaScript, using Jasmine in particular.  She gave a good overview of various additional libraries which allow devs to do unit testing, such as Mocha and Qunit (a framework favoured by the jQuery team) and a brief overview of the various test runners available (JsTestDriver, Chutzpah and Karma) before diving into some examples of tests using Jasmine (which happens to be the framework I’ve been using when looking into this stuff more recently).

It was definitely a session for those who haven’t really done any unit testing in JavaScript thus far, and even though I have had the briefest of fiddling around with unit testing on my own prior to attending the session, I think I was a little further on than the talk catered for. I was hoping that she would go into actually running the tests with one of the test runners she mentioned in her talk. That is of course no fault of Sana’s though, and the talk delivered exactly what it said on the tin.

Next up was a talk by Ian Cooper (@icooper) from Huddle with a talk called “Not Just Layers”, which was all about data pipelining and patterns. He was a great speaker and went through the theory and implementation of a data pipelining system, which was something I had never really considered. That, to me, sounds ridiculous, since when I think about it, I use pipeline systems all the time without realising it (the Asp.Net pipeline, for example) and to a lesser extent, have created such systems without knowing that this exists as a “thing” and that it’s a design problem that people have solved and forged a well-known pattern for. The code demo was interesting, but that realisation is what I got most from this talk, which aside from technically interesting, was also entertaining and a joy to attend.

Ian also pointed us to a couple of libraries that I really want to check out, namely TopShelf (for aiding with writing Windows Services) and RabbitMQ for messaging (I admit that I never had a problem with MSMQ, but there seems to be enough angst against it for me to believe I shouldn’t be using it!)

The third talk I attended was from Alastair Smith (@alastairs) from Redgate, called “Refactoring away from test hell“, which was a great talk (if a little hard to hear thanks to the mics not on/working) on things you can do as a programmer to get yourself out of a testing mess, including using libraries and helpers such as Bob The Builder (authored by Alastair himself) and AutoFixture, and pointing us towards some good books and other media, including “Growing Object-orientated Software Guided by Tests” [Freeman, Pryce], “xUnit Test Patterns” [Mezsaros] and, touted as being a must watch video, “Integration Tests are a Scam” [Rainsberger] – which sounds of particular interest seeing as integration testing is something we’re starting to ramp up at work.

The thing I got the most out of Alastair’s excellent talk was that we at Orchid are, thankfully, not in any kind of test hell at all, which is reassuring to say the least. Fortunately, we’re already employing a lot of the patterns and practises that Alastair recommends and have done from nearly the beginning, which I think is what saved us from getting into testing hell in the first place. Despite the fact that we only have ~2000 tests (at least for the area of the code I’m involved with) that number will inevitably grow and I think we’re in a great place to keep ourselves afloat as far as our testing goes. We could do with using the libraries that he mentions though, and I’ve been inspired to write a blog post on a couple of frameworks that we came up with to make setting up tests easier.

After lunch, I attended “Visual Studio CodedUI: Improving Resilience in your Automated tests” from Riccardo Viglianisi (@captainshmaser), who went through pitfalls and improvements that one can make to automated UI tests within Visual Studio to make them more resilient and less brittle, and so that they are truly automated and require little maintenance every time there is a code change. This mainly involved hand-writing UI tests instead of using UI Maps so that you can take advantage of inheritance of testing types and leverage the power of polymorphism – the canonical example from the talk was changing a radio button into a checkbox and having the test execute all the same, something which would break with UI Maps.

While the talk was good and somewhat entertaining, I felt I didn’t get so much out of this one only because I haven’t engaged in any kind of UI testing at all, and so my knowledge coming into the talk was quite a bit less than Riccardo was aiming for – which is absolutely no fault of his; the talk delivered what it said it would. Despite that, I’d definitely recommend seeing the talk if he presents it again at an upcoming venue, if you’re already practising some kind of UI automation with Visual Studio.

Finally, I went along to see Nick McKenna (@nickmckenna) and his talk on “There is no Agile”, which for me was the best talk of the day, mainly because it’s so relevant to us at Orchid. My only wish was that @evadi could have been there as he would have gotten even more. Ultimately, it was a insightful discussion about Agile methodologies and how we’re not really doing anything new that hasn’t already been done for thousands of years. I admit I was a bit worried going into the room that he was about to dissuade us from employing Agile altogether, but thankfully, I was wrong. The main point he was getting across that since we’re doing nothing new, and because everyone does it differently, you can’t accurately define what Agile is and thus it doesn’t exist. He likened it to Stephen J Gould‘s who, after a lifetime of studying fish, concluded that there is in fact no such thing as a fish.

The talk was great, not only because Nick himself is a great speaker and has obviously been doing this for a long time, and not only because he’s a fellow Formula One fan, but also because we got to hear from quite a few other development teams about how they’re practising Agile and some of the techniques they employ (mid-sprint retrospectives??). Much like Alastair Smith’s talk on testing hell, it was somewhat of a relief to see that we’re more or less doing things similarly to how other teams are working, and how Nick recommends we work. Nick really hammered home a point about how Agile teams really must not be doing the same thing today that they will be doing in year’s time, because that means you’re not changing and adapting and improving. That in itself was a big relief as, thinking about how we’ve implemented, used and adapted to suit our team at Orchid (and continue to do so) I think we’re definitely on the right track.

All in all, a great day out and well worth the journey down the A1 to attend, not least because of the free O’Reilly eBook voucher! Very much looking forward to attending next year’s event!