Agile Hands off or Shock Therapy?

July 17th, 2009 tkadom

 Invariably when you migrate from waterfall to agile you will look for "best practices", or new processes to help guide you along your newfound path of wisdom and light.  While there are plenty of agile recipes and methodologies, getting an agile prescription from someone outside of the team generally means you are probably still in a command and control mindset, and are looking for solutions to be imposed from the outside.   You will frequently be told to "let the team decide!"

Does this mean you have to walk over all the cliffs that the people before you have walked over before you reach your agile nirvana?  No, not really.  Take SCRUM for instance, http://scrumalliance.org (or for the more visual among us video) lays out a framework for getting started replete with artifacts and ceremonies.  What should be most striking is that while there are outlined and suggested roles and responsibilities for a SCRUM project, the assignment of who does what, and how those responsibilities are assigned is pretty much up to the team.  

The goal often prescribed by Agile coaches would be guided self organization, where the guidance comes not only from other peoples failures, but from existing successful frameworks.  When you are about to ask your agile coach what he or she recommends you do, the question is re-directed inwards to your organization instead.  The agile coach acts as your sounding board for the agile framework.  If the word "should" ever escapes that consultants lips, then according to the gospel, it better be along the lines of where you are straying off an agile cliff rather than prescribing something your team ought to be doing.  But is this really helpful for a new team?

Thats a nice lofty idealistic approach, but when you have a fortune 100 company with dozens of product lines that is moving multinational development shops to agile, where do you begin?  could there not be such a thing as an initial prescription?

That is the crux of the challenge for clients I have worked with in the past and am working with now.  Everyone wants to know what they need to do.  Sometimes the mantra of self organize just is not enough for a new team that is forming.  The analogy of a child holding your hand when crossing the street while they are young, and crossing the street on their own when they are older really does apply to new agile teams.

I think reading Jeff Sutherlands "Shock Therapy" poskind of underscored that point for me.  If your first reaction is not to prescribe, perhaps your first reaction is misplaced.  Perhaps the first prescription for a a brand new agile team is relentless control and prescription until the team is able to stand on its own…

Tim

 
 

 

Posted in Random | No Comments »

What is the role of QA in an agile development shop?

July 13th, 2009 tkadom

Recently I was in a meeting with a group of QA managers of a fortune 500 company which had decided to take the agile leap.  The question before the managers was:  “How will our QA processes map to an agile environment?  How do we interact with Agile development teams, and how can we ensure that we deliver a quality product? This was no small feat, considering these managers represented several shops over a dozen product lines, with a diverse international staff of consultants and full timers.  The challenge was not just shaping the strategy for moving to agile, but also identifying the tactics that would make that strategy a reality.

Due to the time constraints we decided that the meeting should first focus on strategy, and the tactics would fall out of the strategy or even be left for another day.  After we got over some of the basic conceptual hurdles of what it means to be agile, and the QA managers accepted the notion that there would be one team rather than two federated competing departments, we landed on the definition of “done”.  The general consensus was that it was not done until it had completely passed all system and integration testing.  The group lamented how development would just throw stuff over the wall and label it as done to collect the points for velocity. 

In their initial attempt to combat this behavior, they decided on multiple states for “Done”.  They would have a “development done”, a “user acceptance done”, and a “QA integration done”.  The “user acceptance done” would be enough to satisfy the requirement that a story met the basic acceptance criteria and the points for completion could be awarded, but it would then be fed into the much harsher QA filter where it could ultimately still be rejected.  From the QA perspective this was the only way to ensure that the quality was in the product, and since their behinds were on the line for the quality, they would not accept anything less.  Due to the additional quality filter, their agile environment demanded that all stories for an iteration be delivered early so that full regression testing could be done prior to iteration end.  A waterfall smell.

So the conversation shifted to who was responsible for the quality of the product in an agile environment.  Was it the QA team, or the development team?  Clearly the quality responsibility for a self directing self organizing team would have to be on the development team, and not on QA unless QA was embedded as part of that team.  However, lacking embedded QA, If the team took responsibility for the quality of the product, would the QA managers then be able to lift the toll gate entirely for product quality? 

The answer was a unanimous “yes… but”.  The “but” obviously being tied to the failings of developers to test anything properly or consistently.  “Developers do not know how to write proper tests”, and “Developers do not have access to full integration tests, and therefore their testing can only be limited to their code”.  Were common refrains.  Putting those arguments aside for a moment, in an agile environment, the product owner or client ultimately agrees to accept software from development.  The argument basically boiled down to product owners and clients not having the “know how” or “white box understanding” to properly “accept” a story. 

That was certainly a worthwhile point to arrive at, because we had established that if the development team and product owner truly owned the “Quality” of the product, then the “Assurance” portion of the QA title was no longer relevant.  What was now “QA” would then be something minus the “assurance”, but what would that “Q” look like? 

“Q” would have to work directly with the customer in accepting stories so that stories could be accepted based not only on meeting the acceptance criteria, but on how they integrated with the system, and how they met the more stringent guidelines for acceptable use. 

The problem with this definition was basically the time to acceptance.  Acceptance of a user story should not take a great deal of time.  Certainly not more than a day, and if at all possible story verification should be near instant from the customer and developer perspective.  Clearly system testing needed to be automated, and regression tests had to be readily available to be triggered on story delivery. 

This finally landed the QA managers where I felt they needed to be.  On the customer side accepting stories, automating acceptance, and regression testing.  What I did not realize until today is that while this concept was basically agreed on by the managers, it also redefined the department and the meaning of “QA”.  There are many agile presentation slides that kick the building down on QA.  QA is dead in agile, QA does not exist, QA is a roadblock.  This is clearly not true.  QA still exists, but the function is split.  The assurance belongs to the team, and the quality decision belongs to the product owner.

However, since the product owner is unable to fully determine the quality risk, QA slips into the role of “Q”, or to avoid any references to star trek, perhaps “Product Quality(PQ)”.  “PQ” is tasked with working closely with the customer or product owner to ensure that the conversations in the user stories are accurate and that the product still works beyond those stories.  “PQ” is a filter, not a gate.  The product owner can still overrule PQ, and the PQ manager will not get fired if the product owner does so to the detriment of the product.  Renaming QA is better than killing it.  The function still exists, but the responsibility shifts. 

Tim

Posted in Architecture, Random | 2 Comments »

OS 10 or OS Eks …

July 12th, 2009 tkadom

 I find it amusing that in polite company, whenever I use the term "OS Eks" to refer to my latest favorite operating system, someone will invariably work a polite corrective "OS 10"  into the conversation".  Naturally, that does not deter me, and I continue on unabashed using "OS eks" to my hearts content.  I understand the history.  I also don’t recall system 9 being labeled Max OS IX.  More importantly, I can always point to apple product announcements…

from apple: "Mac OS X Server v10.6 Snow Leopard is scheduled to be released in September 2009. Sign up today and we’ll let you know as soon as it’s available."  (link is here for the moment)

Hmmm… thats odd a…Why would there be an X and a version there?  Perhaps all those polite folks are mailing Apple now to announce that they "sure are excited System 10 version 10.6 Snow leopard will be released soon".

Canonically, for the folks who feel they must be right, its pronounced "OS 10" based on Apple’s own statement about how  the operating system name should be pronounced.  For the rest of us who like the ‘Eks’, and for whom the X represents unix, and NeXT, perhaps you can cut us some slack with the corrective measures :)

 

Tim

Posted in Random | No Comments »

ATLRUG - RankNStein Sinatra App

July 11th, 2009 Tim Kadom

Posted in Random | 3 Comments »

ATLRUG - Ruby Gem for Mechanical Turk

July 11th, 2009 Tim Kadom

Posted in Random | No Comments »