It’s been a funny couple of months. Since the start of 2004 I was working on a large content management and publishing system for a large Australian company. On this project we had some great people and mostly very interesting technology. We invested heavily in a very effective build system and continuous integration. Automated unit testing was used extensively and we measured coverage to find weak areas. We did a lot of pair programming, and tried to have daily stand-ups. We used a lot of agile development techniques. I’m really proud of the quality of product that we delivered and particularly the components that I was responsible for.
The project management however was not agile. I’m not suggesting that the best agile ‘coach’ would have saved this project but it broke all the rules – for substantial periods during the project there seemed to little or no stakeholder involvement. How many releases to production did we make during those 2 years? zip zilch. Finally 2 years or more later after a change of CEO, CIO and substantial amounts of senior management overhaul and many other changes to the company landscape it turns out that the project wasn’t building what was wanted any more. Poof – no more project. This was a trifle disappointing for a great many people, including myself. That’s an understatement by the way.
So where do you go from there? A little difficult to get enthused about job interviews when 2 years of work has been canned, I must say. I courted with a couple of companies but ended up taking a contract again, this time in the financial services industry. What I love about it is that there are some smart people to work with, some interesting tech, a new problem domain to explore, and they are building systems that people are REALLY USING. However I do miss a lot. Having worked with substantial unit testing (I hesitate to say TDD) for a few years and continuous integration for at least a couple it does feel very odd to go back to the 1990s… Needless to say I’ve started to introduce people to the joy of jUnit and jMock, and have a super-secret clandestine cruise control server running (on my desktop!) – it might take most of my 6 month contract but I’d like to think that some of it might rub off.
Being exposed to the other side however has really brought home for me what I like about the agile development techniques (I’m being specific here – I mean unit testing, continuous integration, and pair programming mainly… I’ve not yet had the opportunity to work on a project which is project managed in an agile fashion). If I get time I’d like to write some more about what they mean to me – in particular their effect on fear in programming.