Sunday, November 28, 2010

Agile Story Estimation via Dog Grooming Exercise

Practice story estimation techniques with this exercise in dog grooming.

Related Post:
   Affinity Estimating: A How-To by Sterling Barton.
   Dogfood David why I feel like an expert in the concept of eating one's own dogfood.
   Slideshare:  Affinity Estimation - Size 60 Stories in about 20 Minutes.

For each dog below, estimate the work effort (size) required to groom the dog.  Assuming that you have the tools and experience to groom dogs.  Grooming includes washing, drying, combing, nail clipping, and hair triming in some cases.

Start with the ever popular:
Golden Retriever (22-24 in, 50-90 lbs).

The short haired Dachshund (15-28 lbs).

The Standard Poodle (15-18in, 40-80 lbs).

Bernese Mountain Dog (25-28 in., 65-120 lbs).

German Shepherd (23-26 in, 50-90 lbs).

Yorkshire terrier (5 in, <10 lbs).

Beagle (13-16 in, 18-35 lbs).

Boxer (26-31 in, 55-110 lbs).

Bulldog (40-55 lbs).

Labrador Retriever (21-25 in, 55-130 lbs).

Great Dane (28-38 in, 120-200 lbs).

Komondor (25-32 in, 90-130 lbs).

What are some of the questions that needed resolving when estimating the grooming of each of these dogs?  Did you wonder about cutting the hair of the Komondor?  What was your Product Owner's response?  Did you ponder sizing one or two Boxers?  Did the temperament of the Yorkie matter to your team?

Wednesday, November 24, 2010

Buy vs. Build Decisions & User Stories

Where does the typical engineering Buy vs. Build decision making process happen within Agile software development?  How does Agile's User Stories help us with this decision making process?

Case Study
In the late 1990s I worked with a talented group of people creating a product to deliver high speed Internet service via satellite download links.  The version 1.0 product was done and functioning well, venture capital was secure for version 2.0.  There was a window of opportunity to release a 2.0 product into the market place and we were racing to that market place with a competitor.

Although we were not using any formal Agile process (the term had yet to be coined in Snowbird, UT), we were like many start-up companies using such a lightweight process that it had no name.  It is best to describe the development process as "just make good decision - and do it fast."

One of the features for the 2.0 version was greatly enhanced product licensing.  The new licensing feature wish list from Marketing had these desires:
  • license codes easily generated & transmitted to customers
  • demo license & timed trial licenses expire
  • annual licenses managed & easily renewed
  • perpetual licenses
  • add-on product features individually licensed
The existing 1.0 licensing algorithms were hand made by the company and known to have  some defects.  It was a much simplified and last minute design that allowed simple on/off behavior based on some hash-key techniques.

We were not using Agile User Stories and we were not estimating in relative story points and deriving duration.  However, we had experienced developers working in a known domain.  We estimated the License Management feature to be about 2 man-months of work for the team.  We had the "What" of the story - the "How" was up to the team.

Doing some initial design investigation, there appeared to be significant risk in designing our own solution for this complex problem space.  I had previous experience with many product's license management tools, and recommended we investigate a buy vs. build decision.  Our 2 man month estimate gave us a starting point for the data going into the decision.  In rough terms that would be $200,000 of development time.  Along with the opportunity cost of not doing other core competency development on the satellite networking code.  What would our alternatives cost?

An alternative solution was FlexLM - a best of breed license management solution that ran on all of our target platforms, except one.  That one missing platform was in development and could be considered functional beta on Novell's Netware.  It provided all of the features desired by our marketing group and provided an easy to integrate API for the development team.  This solution was going to reduce our work load to a week, and cost and upfront investment with recurring annual fees.

Working on our BATNA (Best Alternative To a Negotiated Agreement) with the FlexLM company we expanded our offering by agreeing to use our core competency, Novell Netware development, to help them with their Novell beta of FlexLM in exchange for waving the initiation fees.  This required about a week of consultation time, sharing code bases and cross-compiling and debugging techniques on Netware, which was our forte.

Our solution then was to use the FlexLM product, integrate into our code base their simple API for license management and pay the annual fees, in exchange we consulted with their development team on their code port to Novell.

Application of User Story model
Given that this case study took place before the advent of Agile User Stories, one must make some assumptions to draw conclusion on the usefulness of User Stories to the Buy vs. Build decision.  The decision is an economic model based upon the scarcity of capital, and the trade-offs of opportunity cost.  The inputs for the decision are monetary amounts, however, Agile User Story units of Story Points for effort don't compute.

Can one derive the necessary dollar amounts from the Story Points on an Epic feature to use in a buy vs build decision.  Yes, using a team's known Velocity (Story Points completed per Sprint) and team cost per Sprint (typically about $100,000 for a 7 person team) the cost of a feature may be derived - do the math.  The assumption is that a known velocity is applicable to the domain.

In the case of the license management this might not be true.  There were known risk associated with developing outside the core competency of the team.  These risk would tend to increase (not decrease) the cost of in-house development.  In the case study these risk were mitigated by the purchase decision and the partnering agreement.

Futher reading:

Using Agile for Buy Vs. Build Decisions - IEEE Xplore Digital Library - Agile 2008 Conference

Sunday, November 21, 2010

Interesting Motivation links

For some crazy (but interesting) reason the most popular blog post on my site is about Motivation and the Hertzberg Two-Factor Theory. So in keeping with the concept that if that is what people are coming to see - then maybe that is a topic of concern - here are some interesting links and info on Motivation.
One of the best TED Videos on the topic: Dan Pink on the surprising science of motivation
If then rewards do not work! Example: If you perform at a high level - you will get this reward. Social science knows that this does not work in cognitive skilled areas. Did you know this?
See RSA's rendering of Dan Pink's speech.

From the author of "Flow". "Mihaly Csikszentmihalyi has contributed pioneering work to our understanding of happiness, creativity, human fulfillment and the notion of "flow" -- a state of heightened focus and immersion in activities such as art, play and work."

Mihaly Czikszentmihalyi asks, "What makes a life worth living?" (a TED Video).

A quote from The Heart of Innovation blog "The Four Currents of a Culture of Innovation."
"If you can find a way to unlock the primal mojo of your workforce, you won't need to manage as much as you do. You won't need to rely so heavily on incentive plans, performance reviews, pep talks, frowns, and punishment. That stuff only exists because your workforce is disengaged. But when people are on fire with purpose, in touch with their own authentic desire to create, a culture of innovation will naturally evolve."
See Also:
Motivation & Herzberg Two-Factor Theory

Where does your Creativity emerge?

A great boss knows that you do not schedule meetings during your work groups most creative portions of their day.  If you are a morning person - schedule meetings in the afternoon.  Bored, Lonely? - call a meeting.

I have great ideas for blog post in the morning, by the evening they have dissipated into just mediocre and the motivation to write them has gone.

What is required for those creative moments to produce fruit?

"People often credit their ideas to individual "Eureka!" moments. But Steven Johnson shows how history tells a different story. His fascinating tour takes us from the "liquid networks" of London's coffee houses to Charles Darwin's long, slow hunch to today's high-velocity web."
TED Talk:  Where good ideas come from - Steven Johnson

Johnson relates the myth of Eureka moments vs the Slow Hunch - or the innovation process.  Why is the open forum (a network of people) where ideas are exchanged so important to the innovation of ideas?

Here's an excellent article from the Heart of Innovation blog - 20 Reasons Why Creative People Work in Cafes

Networks of creative people require an environment that supports them, what are the properties of that environment?

Long Live the Web by Tim Berners-Lee

The Web is critical not merely to the digital revolution but to our continued prosperity—and even our liberty. Like democracy itself, it needs defending.
The principles underlying the success of the Web: Linked-data, Decentralization, Universality, Open Standards, Separation of Layers, etc.

Do you know how to stack the deck?

You want to make an Agile transformation in your work group.  What one action could facilitate that Agile transformation?

I have a friend who's 5 year old son was learning to play card games. After learning a few games, she noticed that he had learned to stack the deck. No one had taught him, he discovered he could influence the outcome of the games if he ordered the cards in a "better" way. Shuffling is so old school.
Would it be cheating if you stacked the deck?

The most successful Agile transformations I've been a part of were rigged games.  The sponsors allowed the teams to hire new staff (programers, testers, team leads, coaches).  The staff they hired were not typical - they were Agilist.

All you need to transition a team to Agile is three developers.  A team is 7 +/-2.  If just 3 of those people are going to do the Agile thing given any problem - then the team is stacked.

Image a retrospective.  The team is trying to decide on a problem: Last sprint we were disorganized, fighting lots of story "fires" but it could have been more focused.  We didn't plan out the stories very well.  A proposed solution is to Task the stories during planning meeting next sprint.  With a stacked team, that should be an easy consensus (Fist to Five) to change the teams process toward a more Agile (Scrum) process.  Or the team could experiment with limiting work in process and encourage swarming - a Lean technique.

These stacked teams transitioned to an Agile life style much more quickly than other teams without a stacked team.  Wonder why?  Is it because behavior that is described and modeled is easier to assimilate into our own behavior?  We are use to learning by example.

Sunday, November 14, 2010

Agile tools for your iPhone/iPad

There is an App for that, but are they any good for helping with your Agile software team?

Here are a few iOS apps I have on my iPhone.  I'm not sure they are going to replace the sticky notes and a whiteboard.

Clock Pro - it has a multi-city world clock for visualizing timezone differences.  Great for those dis-located teams.

Agilely Timer - a clock timer for scrum meetings and round table discussions.

User Stories - a backlog management tool for user stories with estimates & priority.

Game Storming - a set of exercises (game if you wish) that create synergy in groups and discover knowledge.

Scrum Cards - estimation cards and cheat sheets for process.

LeanKit - a Kanban tool, integrates with the web tool LeanKit Kanban.

Whiteboard Capture Pro - whiteboard photo capture post processing.

Processed Image           Original Image
Whiteboard Share - another photo processing tool - this one integrates with Evernote.

Microsoft's Photosynth - a spherical panorama capture tool which integrates with site.

There are many other tools on the App Store, which ones have you found useful? Please comment and let me know.