It is a little world
- Cubed
In the 1960s, the designer Robert Propst worked with the Herman Miller company to produce “The Action Office”, a stylish system of open-plan office furniture that allowed workers to sit, stand, move around and configure the space as they wished.
Propst then watched in horror as his ideas were corrupted into cheap modular dividers, and then to cubicle farms or, as Propst described them, “barren, rathole places”. Managers had squeezed the style and the space out of the action office, but above all they had squeezed the ability of workers to make choices about the place where they spent much of their waking lives.
...It should be easy for the office to provide a vastly superior working environment to the home, because it is designed and equipped with work in mind. Few people can afford the space for a well-designed, well-specified home office. Many are reduced to perching on a bed or coffee table. And yet at home, nobody will rearrange the posters on your wall, and nobody will sneer about your “dog pictures, or whatever”. That seems trivial, but it is not.
The brick is one of those old technologies, like the wheel or paper, that seem to be basically unimprovable. ‘The shapes and sizes of bricks do not differ greatly wherever they are made,’ writes Edward Dobson in the fourteenth edition of his Rudimentary Treatise on the Manufacture of Bricks and Tiles. There’s a simple reason for the size: it has to fit in a human hand. As for the shape, building is much more straightforward if the width is half the length.
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.
When are deadlines necessary?
- Contractual obligations
- Technical liabilities (e.g., dependency EOL)
- Compliance, government, investors, and other external stakeholders
What do all of these deadlines have in common? They are all important. They are all deadlines that cannot be missed. They are all external.
When are deadlines evil?
- Your manager says you have a deadline
- Your software development methodology says you have deadlines
What do all of these deadlines have in common? None of them are important. They are arbitrary. They are all internal. They are all bullshit.
- 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.