Wednesday, October 27, 2010

Resume Driven Agile

A couple of years ago, we had an evening talk on Agile by Venkat (Dr.Venkat Sumbramaniam) that was organized by ASCI (Naresh Jain and group) at Bangalore for the local Agile User Group. The topic was "How to approach Evolutionary Design". We were fortunate to have sponsored that talk.

During the session, I was fascinated by a term he explained in humor - RDD - Resume Driven Design - where Architects play around more with power point than code and implement technologies for the customers based on what they would like to carry on their resumes.... not what the customers need.

Our recent discussions on the APM forum on whether hacking (coding) should be a competency in Agile, motivated me as much. Many respondents especially from the "Certified Scrum XOs" felt that Agile Coaches and Agile Trainers need not know software development as in coding, testing, refactoring, CI etc. I am shocked by their understanding of Agile Software Development and its rationale, in terms of what is carried in the Agile Manifesto and Agile Principles.

The reason our software development industry has had the highest records of project failures (source: Standish Chaos Reports) is that people who manage software engineering process, quality assurance and quality control have rarely understood the intricacies involved in programming and design. By my own experience, more than 95% of the managers, leads and staff involved in Process Engineering, Quality Assurance and Quality Control in our software development industry have never written productive software ever that was paid for.

We cannot carry the same burden into Agile. My response to a post where someone questioned if coding should be a competency required to work in an Agile environment, I answered :

".....I did not say that we want a hard rule that Agile Coaches should know coding as a mandate.

However what I see in real life is that when Teams transit to Agile from Waterfall, they have to learn new evolutionary design engineering and programming skills, which may not have been necessary in waterfall.

Since they have to code in an IID environment, they need skills to code with TDD kind of a strategy, they need to set up a build pipeline for CI, they need to understand the need for and implement a continuous refactoring of design, code and tests as requirements evolve over each iteration. They need to set up automated testing environmentfor continuous, repeated regression testing with every build, that happens multiple times a day.

I see most teams stuck on these, and the Agile Coaches are not able to help them resolve these competency gaps. Otherwise we need an Agile Process Coach and an Agile Engineering Coach for the teams helping them at least in the initial phases of learning and development.

I therefore felt that if you have only one Agile Coach, he should be able to play both roles well, which otherwise will call for a supplementary coach as in Cricket. We have a bowling coach, batting coach, and fielding coach and the main coach.

However inside the Cross Functional Team, I would still insist that everyone is a "combatant" as in a commando team. If you cannot use a revolver to defend yourself, you cannot be in a commando team, lest other members in the team spend more time defending you than working towards the team goals."

In serendipity I found a new acronym for the context.

I am now pleased to coin a new acronym for the Agile Community (especially for the Scrum Community). RDA - Resume Driven Agile - for those who wish have agile certifications but do not wish to know, understand and appreciate how software is engineered and built in an Agile Software Development Environment (Incremental and Iterative)