One of these days, I'm going to retire. In fact, about seven years ago when I gave up the "day job" and started writing about computers, software and the Internet, I told everyone I knew that I was retiring from real work to spend more time on my hobby (which was, of course, computers). Hard to say now whether I can still class it as a hobby, and I seem to be working longer and harder than I ever did in the days of a nice office, company car, and corporate pension scheme!
In fact, sometimes you have to sit back and wonder if we are all mad - playing with software that changes by the week and yet still seems capable of falling over when you nip off to make a cup of tea, or even just pause to blow your nose. Still, for those who do it, I guess there isn't much else that can provide the same mental challenges and ultimate satisfaction when you see it all working.
As regular readers will know, the collapse a couple of years ago of Wrox Press, and their subsequent takeover by J. Wiley & Sons, has meant I've had to go out and find some real work, rather than sitting around at home writing the odd book or two. Some of it has been development work, some documentation work, and I still write articles and books in between. I guess it's no wonder I'm busy all the time.
However, recently I've been working with a group at Redmond who are building the Composite UI Application Block (CAB), as part of the patterns & practices division at Microsoft. This is the first time I've actually seen the MS internal development processes at work, and I have to say that it certainly is an eye- opener. While I can't say much about what goes on, the one factor that really struck me was that they follow the agile development process. There are several check-ins and complete rebuilds of the software each day, and the team work closely together in a "war room" sharing information by word of mouth, as well as the more traditional MSN Messenger and email.
Now, I'm charged with creating documentation for this software, and so I'm "in the loop" even though I work 5,000 miles away (isn't technology amazing). Of course, due to the time differences, I actually end up working late into the night while they are just yawning and stretching, eating their corn flakes, and thinking about starting work. Yet it does seem to all come together. The last time I worked night shifts was in a factory when I was 17, so it's a bit of a shock getting back into it. And there always seems to be other jobs that need doing in the day. Thankfully, it's only a limited period contract!
The one problem with agile development, of course, is that it is agile. And so is the software. Only weeks away from release, the API and sample applications are still changing several times a day. My documentation has more "track changes" marks than original text, and never does seem to actually match the product. Meanwhile, of course, the documentation production team wants it signed off as complete yesterday. I wonder if this is the one downside of agile development. Maybe it works best if you finish building the software first, and then document it. Of course, that's never going to happen...
Anyway, to finish off, here's the plug of the month. If you are building Windows Forms user interfaces, especially for complex scenarios or to provide access to multiple back-end services and processes, go and take a look at the CAB at http://www.codeplex.com/, or the patterns & practices home page at http://msdn.microsoft.com/practices/.