I took in two BOFs tonight – one led by Joel Semeniuk on Agile Planning Tools – that included the likes of Steven Borg and Clementino Mendonca as well – there was some lively discussion – not all of it about Planning tools per se, but perhaps approaches to planning – I thought it was an excellent discussion and in the least made people think and hear the views of others which I think captures the essence of Birds of a Feather very well.
One of my comments in the session was that there is no ONE tool for Agile planning – I believe there is tooling (perhaps it is Excel or Project which were the two most common mentioned) needed for Iteration planning (tactical planning if you will) and perhaps with co-located teams a sticky board is good enough (although having the traceability that you get with a tool like Team Foundation Server is valuable and you can see teams like what David Anderson is doing at Corbis where they use cards on the wall and TFS).
I also think there is a need to manage the strategic space and the needs of the strategic space are different than that of the tactical. Another gentleman in the room captured that well in a comment about the decrease in granularity that is tracked as you move farther out on your roadmap. The items farther out are broader strokes of functionality or ideas that represent where you "may" go.
At the end I chatted with Clementino, Steven Borg, and Martin Danner (from Accentient along with Steven), and Rob Lowe from my group at Intel about how easy it would be to put out a simple tool to enable card like planning. I was thinking something in WPF (it would be fun) and Steve mentioned using AJAX and the web (can you do drag and drop – maybe a Silverlight alpha test?). It wouldn’t be too hard to make it such that you could plug in adapters for the backend technology that you used (VersionOne, TFS, etc…). We are going to talk some more on it and CodePlex seems like a good place to host that – we’ll have to see where that goes.
The second session was on TDD/Mocking/Dependency Injection and facilitated by James Kovacs. Again it was interesting to hear people’s perceptions on mocking and TDD. I think in general most in there with a couple of exceptions perhaps were behind TDD. There was a little bit more variability in mocking and the levels that people were using mocking and even what mocking was. My input was
- TDD is about driving your design and development through testing – it isn’t ABOUT THE TESTS – the fact that you have unit tests as an output that you can run for validation – to me – that is like a side product to a degree. TDD is a great at helping the right design emerge from your code (and I love ReSharper helping me get there!)
Mocking is a tool to help you test in places that may be difficult – the example I used where it came in handy was when I was trying to mock a successful windows authentication for a login procedure. I didn’t want to hard-code a correct account with the password so we injected the authentication object in and mocked it so that it always returned true (since we didn’t care to test the windows authentication procedure – that is MS job). In that case and many others I see mocking and dependency injection working hand in hand. And I believe (as do most of the patterns books) that dependency injection is a key principle to produce loosely coupled systems. Mocking is great at helping test in those dependency injection scenarios. Several others brought up using mocking more generally and I am sure there are cases – I guess my advice would be mock when you have to and no more.
In all the discussions about mocking and mocking frameworks Rhino Mocks was the only name mentioned of course there are others, but it was the only one called out by name perhaps speaking to it’s popularity in comparison to the other frameworks right now.