Filed under: agile

Agile : Should You Estimate Spikes with Story Points

No.

There are a number of questions that come up when I'm introducing new team members or people from the business to our Agile Software Development process.  That question is... "Should we estimate a Spike with Story Points?".  Since I've started by definitively answering the question, let me explain.  

First, lets remind ourselves what a Spike is:  A Spike is a time-boxed piece of work who's goal it is to answer a difficult technical question SO THAT the developers can properly illuminate a User Story or Epic.  By illuminate I mean; the ability to estimate those User Stories or break down Epics into estimated User Stories.  There should be no other real purpose.  Even if the spike is about making a broad architectural decision, that decision should have been required because there were multiple user stories that would depend on that decision.  The result of a Spike is deeper understanding and estimates.  The physical manifestations of a Spike is usually some whiteboard diagrams, a page on your wiki, or even some simple throw away code to test a hypothesis.  

Remember this item from the Twelve Principles behind the agile manifesto:

Working software is the primary measure of progress.

 

Completing a spike does not directly create working software so it does not directly deliver value to the customer. Given that a spike is not about delivering  actual customer value (completing a User Story) then it should not be estimated in Story Points.  Story points are how we broadly estimate, and communicate size and complexity to the business.  The business comes to understand what a story point is and they learn in general what they can expect in an iteration from the development team.  If you spend iterations delivering 30 points worth of spikes instead of 30 points worth of User Stories then the business will not understand what a point means to them. They will not understand what your team's velocity is.  At best they'll be confused.  At worst, they'll stop trusting you.

Given that a spike is time boxed (not estimated in points) and that the measure of progress is working software:

  • Spikes should be used sparingly.  You don't have to know every detail of how you'll code up a story in order to estimate it.  Unless the whole team is really confused, you should want to do real code for the story instead of spiking. 
  • Spikes should be short.  If Spikes are too long then they steal actual value from the iteration and make you start to wonder if you should decrease your velocity.  If Spikes are used sparingly and they are short, you can get back to actually coding working software.  
  • Spikes should be driven by actual User Story needs.  Spiking on architectural concerns for things that you DO NOT know you actually need in the near term, or that are not directly tied to what the business wants to accomplish could (and usually does) end up being a waste of everyone's time [See YAGNI].  Don't spike on simple stories just because you think someday you may have as many users as Facebook.  You may never, and if it looks like you might, you'll have been refactoring your code and architecture anyhow. 

In conclusion,  No.

 

 

 

Agile Was Invented in 1943: Kelly's 14 Rules & Practices

Kelly Johnson created the "Skunk Works" at Lockheed Martin in 1943 to rapidly build the first US fighter jet, the XP-80 "Shooting Star".  Below are his 14 Rules of Operation for Skunk Works project...

 

  1. The Skunk Works manager must be delegated practically complete control of his program in all aspects. He should report to a division president or higher. 
  2. Strong but small project offices must be provided both by the military and industry. 
  3. The number of people having any connection with the project must be restricted in an almost vicious manner. Use a small number of good people (10% to 25% compared to the so-called normal systems). 
  4. A very simple drawing and drawing release system with great flexibility for making changes must be provided. 
  5. There must be a minimum number of reports required, but important work must be recorded thoroughly. 
  6. There must be a monthly cost review covering not only what has been spent and committed but also projected costs to the conclusion of the program. 
  7. The contractor must be delegated and must assume more than normal responsibility to get good vendor bids for subcontract on the project. Commercial bid procedures are very often better than military ones. 
  8. The inspection system as currently used by the Skunk Works, which has been approved by both the Air Force and Navy, meets the intent of existing military requirements and should be used on new projects. Push more basic inspection responsibility back to subcontractors and vendors. Don't duplicate so much inspection. 
  9. The contractor must be delegated the authority to test his final product in flight. He can and must test it in the initial stages. If he doesn't, he rapidly loses his competency to design other vehicles. 
  10. The specifications applying to the hardware must be agreed to well in advance of contracting. The Skunk Works practice of having a specification section stating clearly which important military specification items will not knowingly be complied with and reasons therefore is highly recommended. 
  11. Funding a program must be timely so that the contractor doesn't have to keep running to the bank to support government projects. 
  12. There must be mutual trust between the military project organization and the contractor, the very close cooperation and liaison on a day-to-day basis. This cuts down misunderstanding and correspondence to an absolute minimum. 
  13. Access by outsiders to the project and its personnel must be strictly controlled by appropriate security measures. 
  14. Because only a few people will be used in engineering and most other areas, ways must be provided to reward good performance by pay not based on the number of personnel supervised.