Wednesday, January 14, 2015

What are the units for Story Points?

A co-worker and I were discussing estimation on agile software development teams (Yeah, I know - #noestimates. That was off the table here). I asked him what a story point represents. He said "effort", which PMBOK defines as "measurable work units", and pointed me to a post by Michael Cohn:
"...story points are about time—the effort involved in doing something. Because our bosses, clients and customers want to know when something will be done, we need to estimate with something based on effort. Risk, uncertainty and complexity are factors that may influence the effort involved."
My friend went on to write the following formulas:

(SumOfRemainingEpics + SumOfRemainingStories) / Velocity = Forecasted Duration (+/- uncertainty)


Forecasted Duration / Team Capacity = hours

I wasn't so sure that this demonstrated that story points are about time, so I re-wrote his formulas adding units (and dropping uncertainty):

SumOfRemainingEpicsAndStories(points) / Velocity(points/week) = Forecasted Duration(weeks) 


( (SumOfRemainingEpics(points) + SumOfRemainingStories(points)) / Velocity (points/week) ) x Team Capacity (hours/week) = hours

Management wants estimates of duration which we calculate according to the first equation by dividing points by velocity (Cohn mentions this too). In either formula, points cancel out. What that says to me is that units of story points don't matter. We can estimate in complexity, risk, time, or elephants! The upside of this is that non-timebased units for points prevents management from translating stories directly back and forth between points and hours, which can cause friction between the team and management

Monday, September 29, 2014

Agile Coach Camp Session - Every Tool Sucks

Yesterday, I returned from Agile Coach Camp 2014 in Indianapolis. Here are my recollections from one session:

Every (card wall) Tool Sucks:

Reasons for card wall tools:
  • reporting / analytics
  • distributed / dispersed teams
  • backup / archive
  • regulated industries?

Problems with current tools:
  • hardware costs not low enough for large monitors to show the entire wall
  • when not able to replace physical wall completely, keeping two things in sync is extra work
  • teams often do not keep electronic cards up to date
  • either restrictive workflows or so general-purpose as to make configuration difficult and costly
  • commercial choices are costly
  • continuous improvement of workflow not always easy or quick
  • no participan

What might help:
  • great reduction in price of technologies like large Microsoft Surface monitors
  • QR / barcode recognition, OCR
  • home grown tools? still runs risk of cost/time to improve workflow, process lock-in

Other ideas:

Friday, July 25, 2014

Automated testing against physical iOS devices

Update the iPhone's iOS version to the latest

Install Xcode, Apple's IDE for developing iOS software:

Install Homebrew, a package manager that allows user to install, remove and updated applications and packages:
ruby -e "$(curl -fsSL"

Download SafariLauncher, a simple IOS application that automatically launches Mobile Safari after a certain delay:
git clone

If you are not already a member in Apple’s iOS Developer Program, spend $99 and join.

Build SafariLauncher in xCode:
{ Tell about setting keys and missing field(?) }

Install ios-webkit-debug-proxy:
“The ios_webkit_debug_proxy allows developers to inspect MobileSafari ... on real and simulated iOS devices”
brew install ios-webkit-debug-proxy

Install appium:
brew install node
npm install -g appium
npm install wd

Launch ios_webkit_debug_proxy:
ios_webkit_debug_proxy -d
Go to http://localhost:9221/
You should see “iOS Devices” and nothing else
Connect iPhone
You should see “1. localhost:9222 - iPhone” where localhost:9222 is a hotlink
Disconnect iPhone.
Refresh browser. localhost:9222 is no longer a hotline
Reconnect iPhone
Refresh browser. Hotlink is back.
Click link and see: “Inspectable pages for iPhone:”
Launch Safari on iPhone and go to google
Reload browser on Mac and see a line added to the page: “1.” where https... is a hotlink
Click hotline and you will see ios_webkit_debug_proxy tool, which you can use like Firebug to inspect elements on the page.

Get the UDID of the iPhone:
When you see your UDID in iTunes, you may need to right-click it and select Copy. Keyboard shortcut may not work.

Run appium server:
In a new terminal shell, type:
appium --session-override

Write a test that uses SafariLauncher to open your website and make Selenium calls to test the site:
{Beyond scope}

Run your test against the iPhone simulator:
In another terminal shell, type:
mvn -Dtest=com.saucelabs.appium.SimulatorSafariTest test
Watch as the simulator starts (SLOW)
You will see SafariLauncher start (SLOW)
You will see the website launch (SLOW)
You will see your test steps performed.
Look at output of appium window.

Stop appium server:
In the terminal shell where you launched appium, type ctrl-c

Run appium server and tell it the id of the iPhone you want to use:
In same terminal shell used for , type:
appium --session-override --udid e8fae...719
Use the udid for your iPhone, not e8fae...719 shown above.

Run your iPhone test:
In the same terminal shell you used to run the simulator, type:
mvn -Dtest=com.saucelabs.appium.iPhoneSafariTest test
Fix any compilation errors
Watch iPhone screen.
You will see SafariLauncher installed
You will see SafariLauncher run.
After a delay, SafariLauncher will launch your website in Safari.
You will see your test steps performed.
Look at output of appium window.

Saturday, March 9, 2013

Sunday, March 3, 2013

I'll be Presenting at Agile and Beyond 2013!

I'm excited to announce that I will be presenting at Agile and Beyond 2013, this Saturday, March 9 in Dearborn, Michigan! It's a great conference, even if you don't come to hear me. ;) There are still seats open. The website lists the price as $129, but if you contact me I can give you a discount code that will get you in for $79.

I will be presenting the talk that I gave at Agile Groupies in October of last year, "Refactor Your Software Career." I will be talking about my three-year journey from stagnant developer to my awesome position today with Pillar. A key component of that journey is my idea of Transformative Networking, which is a way of identifying events that will allow you to simultaneously increase your tech skills and expand your network. In short, the events that I found the most worthwhile for improving my career met most or all of the following criteria:

creating value in desired field with others in person with people in target

If you can't make it to my talk, you can get my original deck here, or I will be publishing my new deck shortly after Agile and Beyond this weekend. 

Monday, December 17, 2012

Things to do in Ann Arbor

An out-of-town friend asked for suggestions about things to do during a visit to Ann Arbor. Here are my suggestions to him:

  • The University of Michigan Art Museum is very nice:
  • Ann Arbor has an iconic, world-class deli, Zingermans:
  • If it's a nice day, you might enjoy a walk in the Matthaei Botanical Gardens & Nichols Arboretum:
  • The downtown area, especially Main Street, has a many nice shops and restaurants.
  • If you want a fairly upscale dinner, the Earle is very good. And they have some nice specials during happy hour 5-8 weekdays.
  • Kerrytown is a nice indoor collection of shops and a market: There's a nice farmer's market there too Saturdays and Wednesdays from 7am-3pm.
  • If you're looking to see a show, you could check the Ark , the Kerrytown Concert House or Performance Network

Thursday, October 11, 2012

Preview of my "Refactor Your Software Career" talk

On Oct 24, 2012, I will be presenting a talk, "Refactor Your Software Career" to the Agile Groupies meeting in Ann Arbor at the Forge. I'll be sharing my journey from stagnant software developer to my current position at Pillar as a software craftsman and agile consultant, along with specific actions I took to get there, and strategies that anyone can apply to improve their career path. I'll also touch on barriers to taking this kind of action and what helps to get past those barriers.

But a key component to my talk will be what I'm calling "Transformative Networking". My idea is that you can simultaneously improve your marketability (raise your skills and experience) and increase the number of people who might want to hire you even while you continue to work at a job that doesn't offer growth or networking.

Transformative Networking involves engaging in activities that share as many of the following attributes as possible:

  • creating real value (like volunteering or teaching)
  • in your desired field (volunteering is good, volunteer coding is better)
  • with others (solo coding a website for a charity isn't as good as being on a team doing it)
  • in person (there's no better way to present yourself than by working with someone in person)
  • with people in your target companies (if you want to work at a company, let their employees get to know you)
If you engage in activities like this (and my talk will include specific examples of ones I participated in), you can not help but increase your skill sets and get noticed.