When I worked as an engineer, I loved crafting code and feeling the satisfaction of having built something each day. But there was one thing about coding I never grew to love, despite its importance: forecasting my coding time.
Every two weeks, I trudged into a planning meeting that exposed my incompetent forecasting. During these meetings, each person in turn would review their commitments for the last two weeks and provide an update. Inevitably, I was wildly off. Chalk it up to inexperience, exuberance or ineptitude, but I never developed the knack.
In contrast, one of the companies I work with, Axial, has honed and refined their ability to forecast, promise and deliver code with remarkable consistency. A few quarters ago, the company implemented Joel Spolsky's Evidence Based Scheduling techniques which enabled Axial's engineering team to more than halve their release schedule times.
Recently, Matt Story, head of engineering at Axial, spoke about the company's transition. As the data in Matt's presentation (embedded below) shows, the benefits to the company are hard to overstate. A dependable release schedule frees engineers to work uninterrupted, enables marketing and sales teams to make promises and meet their commitments to customers, and eliminates the familiar but stressful management by crisis.
Evidence Based Scheduling is a simple but effective tool for orchestrating an engineering team. As here are three steps to implementing EBS. First, break down tasks into smaller chunks measured in hours. More granular estimates are more accurate. Second, passively measure each engineer's actual times to completion and use the data to train the engineering team to estimate better. Third, forecast completion dates using simple Monte Carlo simulations.
The data is incontrovertible. As Matt so elegantly phrases it in his slides embedded below, Predictability vs Speed is a false choice.