I’m a historian of innovation. I write mostly about the causes of Britain’s Industrial Revolution, focusing on the lives of the individual innovators who made it happen. I’m interested in everything from the exploits of sixteenth-century alchemists to the schemes of Victorian engineers. My research explores why they became innovators, and the institutions they created to promote innovation even further.
In software development deadlines are a necessary evil. It is important to understand when they are necessary, and it is important to understand why they are evil.
Estimation: When estimating engineering work a substantial time investment is required by an engineer in order to get an accurate estimate.
Misaligned Incentives: There is an incentive to lie and give estimates much longer than the feature is truly expected to take.
Low Morale: Deadlines are likely to be missed often. Repeated failure has a cost to the morale of the team.
Micromanagement: Deadlines are wielded by middle managers as a whip to harass and annoy engineers working on features.
High Stress: When engineers feel the pressure of other stakeholders holding deadlines over their heads it creates an environment of high stress.
High Turnover: On teams with high turnover rates the best engineers have an easy time finding new work and leave quickly, the worst engineers have a difficult time finding work and remain. This selects for a lower quality team over time.
The resolution is simple. Never have internal deadlines. Operate on a prioritized and ordered list of features. Estimate only when necessary to prioritize and do so in a t-shirt sizing way. Trust your engineers and they will begin to love their work. Engineers who love their work are happy and productive.