raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Monday, October 22, 2007
  The Shipping News


Joel Spolsky has announced that Evidence-Based Scheduling is shipping as part of FogBugz 6.0, available now. This is the sort of thing I had in mind when I started to wonder whether we can predict the future of a software development project with objective observation?

In fact, I built a prototype that did the exact thing that FogBugz is doing quite some time ago. However, prototypes are not shipping products. FogBugz is a shipping product. My prototype was not. And that makes all the difference.

One of the challenges I faced was that I was trying to solve the wrong ^H^H^H ^H^H^H^H^H a different problem. I was not trying to solve the “when will we ship” problem, I was trying to solve the green-shift problem. In other words, I was trying to solve the “when will we ship” problem given the basic assumption that people will attempt to game the program to deliver the green light.

I failed to solve that problem. Unfortunately, I did not fail in such a way that I succeeded in solving a simpler problem. Instead of turning working prototypes into money, I was casting them aside, muttering, “not enough.”

For example, I was (and still am) very interested in how project dynamics change over time. I have observed that some teams have a fairly steady velocity, while others trail off drastically as they near the alleged ship date. So I wasted a lot of time trying to find out how to classify projects based on the evidence they generate in the early stages of development. Meanwhile, of course, I could have and should have packaged something up and just shipped it.

All the thinking in the world has not helped anybody ship more software. But FogBugz 6.0 will, because it is shipping. Shipping matters.
 

Comments on “The Shipping News:




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /