I've been thinking a lot recently about my start in the software business as a games programmer. A few themes keep coming up in the agile community which for me are simply being rediscovered.
Pair Programming - yep, I was doing that in 1983, but we only used it on new stuff, stuff with high uncertainty. What might be called "research" - faster methods for scrolling the display, masked sprites, 3-D graphics engines, multi-channel sound.
Very Low Defect Software - the audience for computer games in the early 1980's was teenage boys and they just didn't tolerate defects. In fact most of the "journalists" were teenage boys too and they didn't tolerate defects and had the power to kill sales game with a poor review. In fact the defect rate was close to zero per game though I do know of at least 2 of the twenty or so games I published that shipped with a defect.
Short Lead Times - this Crash interview from 1985 demonstrates that it only took a small handful of us - only 2 or 3 developers - to ship games with up to 60,000 lines of code every month. Games were a lot simpler in those days - and a lot less expensive to produce.
Re-usable Code - one way that we met these incredibly short lead times was excessive re-use of code. Towards the end of the 1980's we had refined this into what amounted to an object-oriented language executed through the use of macros in the assembler. Each object (a data structure) had sets of behavior (assembly procedures) which could be run against it. There was effectively encapsulation and polymorphism but no inheritance.
Perhaps what was most odd - looking back - was that we took it all for granted. It was reasonable to develop 80 lines of code per day (as an aggregate average over 3 years) with near zero defects. In the games world, we were lean and agile or we ceased to exist. None of us had any comprehension of the inefficiency in what we came to know as information technology.
I have many memories from those days but one that stands out for me, was the day that I took my watch off and didn't wear it for a couple of years. Why? Well I was too troubled with clock watching whilst I debugged problems. As I was being paid on completion, time spent fixing bugs was eating into my hourly rate - yes, even at 17 years old I was worrying about this stuff. I felt that clock watching and stress were counter-productive to software quality so I took my watch off and just didn't wear it. I measured time with Mazlov's hierarchy issues like "Am I tired?", "Am I hungry?"
So it is surprising to me now, to encounter the SEI's Personal Software Process (PSP) which is all about time management and both estimating and tracking of time spent on specific development tasks in order to improve quality. There does seem to be anecdotal evidence to suggest that the method works. My employer's IT division are adopting it. There are other case studies. Watts Humphrey has run scientific studies on it. As a result of work I'm doing writing a formal software development method, I'll be studying PSP and its big brother TSP (the Team Software Process) a lot more. This means I'll be writing more about them here at agilemanagement.net over the coming months.
I come to this with a feeling that although PSP/TSP can be shown to work, I am skeptical that they are the only true path to almost zero defect software development. It is unreasonable to correlate time management and time based estimation and tracking as the only way to achieve high quality in software engineering. I'm personally very familiar with someone with a track record of delivering defects in the order of 1 per 10,000 lines of assembly language without the use of anything other than the sun in the sky and an empty stomach to estimate the passing of time. It's important that we don't forget that the existence of one set of empirical data does not prove that a method is correct to the exclusion of others, it merely proves that a method is effective in a set of circumstances. PSP seems to be effective but to my mind, is not the only way to achieve low defect software, nor is it the only way to achieve a CMM(I) rating of level 5. Do you have experience with PSP? Please share!