Friday, December 19, 2008

Patterns of the Agile Organisation

Of all the software, technical and management books I've purchased over the years, there's one that really stands out for me - Organizational Patterns of Agile Software Development by James Coplien and Neil Harrison.

Organizational Patterns goes straight to the core of what's required to design and develop great systems, on time and on budget. Agile, of course, has been a buzz word in software development circles for a number of years now. For me, though, this sort of defeats the object of Agile, i.e. people are writing endless books about Agile (543 according to as of December 2008), rather than rolling their sleeves up and developing software systems!

The difference with James Coplien's book is that he started working on this text way before Agile became a software industry term, let alone fashionable. James admits in the books Introduction that they tacked the word Agile into the title purely for 'marketing' purposes. The basic premise of the book is that software development is broken into 'nuggets' of people behaviour and social relationships that make projects really work. Pretty much everyone of the Patterns discussed I recognise in one shape or form.

The best bit about the book are the 'anti-patterns', i.e. ways of working that definitely do not work. Most techies when they read these will definitely recognise typical non technical 'management' behaviours here. For example, adding more developers to an already late project in the vain hope that doubling the workforce will magically half the schedule. Invevitably, of course, we all know it ends up doubling it and some.

I have this book on my desk at all times. Amongst other things it keeps me sane and grounded in what really makes software projects work.

My favorite pattern in the book is the description of the role of the Wise Fool. The Wise Fool is the 'techie' in the organisation who really knows his (or her) stuff and what's going on at the coal face of projects. More importantly, is willing to raise 'uncomfortable truths' and openly question the management. To quote:

"A Wise Fool, though known for lacking tact, is usually highly respected technically and may be (or become) a Legend Role. They usually eschew managerial opportunities and may even show disdain for management. An acquaintance of the author was onced honored with the following words 'In the face of management opposition, he charged ahead and did what was right'"

I try to live up to the role of the Wise Fool every day of my working life! If you're struggling with problem IT projects then I highly recommend this book.

Welcome to Thoughts on Information Technology

First of all the URL Why 380z? Well first of all coming (relatively) late to setting up a Blog a whole load of URLs have gone. I was looking for a URL prefix that'd be appropriate for an IT Blog, something to do with Computing history, e.g. bootstrap, turing, cpu.

In the end I delved into my own personal 'Computing history' and looked back to the first Computer I got my hands on - a Research Machines 380z. I was pretty lucky going to a school that (i) had a Computer at that time (we're talking late 70's here) and (ii) allowed access to pupils.

This got me all nostalgic for the 380z and, of course, got me Googling for it. A couple of good articles about the 380Z can be found at and By modern day standards of course, the 380z was primitive. We didn't have the luxury of 'diskettes' and had to boot the OS from cassette! That was a pretty haphazard arrangement, you had to fiddle with the volume and tone control on the cassette deck to get the OS to boot!

One of the comment entries on reminded me of one of the cool features of the 380z. You could halt the machine to go back to the Bootstrap ROM, 'fiddle' around with settings and then return to your program where you left off. Try doing that with rebooting a modern PC!

BASIC was the main language available for the 380z, apart from the 'true geeks' who could write in Z80 assembler. If I remember rightly, all my attempts to write Z80 code ended in the machine horribly crashing, sometimes to such an extent that even the big white reset button wouldn't get me out of it. So I generally stuck to BASIC.

My first real program was a game I called 'Shoot the Rapids'. The 380Z had a very basic graphics capability though an extended ASCII character set. You could generate different shaped blocks, which, when assembled in the right sort of order, got you pixels. Obviously I'm not talking XBOX 360 resolutions here. The game was a vertical scroller where you controlled a canoe going down, you guessed it, the rapids. As you progressed, the rapids got narrower with more rocks. The longer you lasted, the greater your score. May be I should write a new version for the XBOX 360 using Microsoft XNA?

Going back to the 380Z Googling effort, the most bizzare thing I came across was a 380Z BASIC Programming Guide available on Amazon of all places, a snip I thought at £272! Second hand, obviously.

Thinking about my experiences back then on the 380z is the inspiration for this Blog. Computing back then was still fairly in the pioneer stages, just at the start of the hobbyist computing revolution with likes of the Altair. Which, if my computing industry knowledge is correct, is the platform that got good old Bill Gates and Paul Allen of the ground with Microsoft with a version of BASIC.

So, that's that then it is.