Wednesday, May 2, 2007

Software Process vs. Software Culture

So, I have just finished reading "The Inmates are Running the Assylum" by Alan Cooper. I know, I am only a decade behind...but, I am actually very glad that I read it when I did. I have had a few years to zero-in on an Agile-based process that I really like, which I believe allows an engineering team to focus on short iterations while still adding truly innovative solutions to real customer problems. When used to create a culture of customer-oriented development iterations, it balances solving difficult problems with providing the customer regular releases (we have averaged a customer release every 5 weeks for the past 2 years at my current company - each one iteratively better than the last).

In the book, Alan Cooper talks quite a bit about the need for clear documentation, and how short iterations, which he classifies as 12 months, are not long enough to be truly innovative. This is the only major assumption in the book that I disagree with - but, had I read this before narrowing in on an agile process that works, I may have been deterred from trying the agile approach.

As well as our agile process has worked, the one thing that has always been missing is the true customer focused input to drive that process, thus creating a "culture" rather than simply implementing a "process". This customer input has traditionally be the purview of Product Management, with some PMs actually owning and designing the GUI in addition to their other job responsibilities. The problem, as Alan Cooper so eloquently outlines it, is that GUI "design" never happens in that model - it is usually already implemented by a developer, and the PM is asked to simply review the interface, re-word the text and maybe move some buttons around. It is almost always an after-thought. Alan Cooper calls it "dressing the corpse" - I prefer "putting makup on the pig". Either way,it flies in the face of test-first design, which is another key Agile concept.

After reading Alan's book, and taking into account the Agile concepts that we have already proven will deliver innovative solutions to customers, I now believe that I have the final piece to the puzzle.

I believe that if we could combine the Interactive Design and prototyping techniques described in this book with the Agile-based process of short, iterative releases and minimal documentation, we would be well on our way to developing a culture where customer needs are met very quickly, with high quality and in manner that not only does not stifle innovation, but breeds it.

The problem that this notion poses is the implementation. In order to truly create a software development culture requires discipline and agreement to the culture by every department that participates in the process - much more than just Development and Testing. Delivering high-quality products that meet real customer needs requires solid GUI design, test-first methodology and creative development to fulfill the vision, as well as management that is disciplined enough to keep the train moving while allowing the culture to take root throughout the organization.

Possible? Definitely. Easy? No way. Fun? You bet! Sign me up.

No comments: