Let me walk you through a quick example. To make this example as simple as possible, I’m going to imagine a very predictable programmer, John, whose whole job is writing those one-line getter and setter functions that inferior programming languages require. All day long this is all he does:
private int width; public int getWidth () { return width; } public void setWidth (int _width} { width = _width; }
I know, I know… it’s a deliberately dumb example, but you know you’ve met someone like this.
Anyway. Each getter or setter takes him 2 hours. So his task estimates look like this:
{2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, … }
Now, this poor guy has a boss who interrupts him every once in a while with a two-hour conversation about marlin fishing. Now, of course, John could have a task on his schedule called “Painful conversations about marlin,” and put that on his timesheet, but this might not be politically prudent. Instead, John just keeps the clock running. So his actual times look like this:
{2, 2, 2, 2, 4, 2, 2, 2, 2, 4, 2, … }
And his velocities are:
{1, 1, 1, 1, 0.5, 1, 1, 1, 1, 0.5, 1, … }
Author | Joel Spolsky |
Work | Evidence Based Scheduling |