Agile software development is partly based on the idea that a series of shorter deadlines is better than a single big crunch. But how short can we go?
The Welsh poet Dylan Thomas was frantically finishing the script to one of his greatest works—the radio play Under Milk Wood—just moments before the voice actors took to the sound stage for its maiden performance. He’d known about the deadline for months, but in the end, Thomas had to be locked in a room by his agent to finally finish the play that had been on his mind in one form or another for much of his life.
If you’re a software developer, this might sound familiar. Even when we have months to complete a project, we often find ourselves struggling as the deadline looms. This isn’t because we’re lazy: it’s because other work gets in the way, or dependencies don’t deliver, or scope changes, or tiny unexpected things bog us down for days. We add developers, or skip tests, or work longer hours. In the last couple of weeks we may even find ourselves locked in a room, as Thomas did, for the final bleary-eyed push.
But writing software is not like writing a play, despite them both being highly creative acts. Prose can sustain some poorly chosen phrases penned under pressure without greatly affecting the overall narrative.
Software on the other hand is an intricate set of precise instructions with no room for subjective interpretation. Even the tiniest error in any layer of a software project can kill it.
Quality, therefore, is critical in software. The big crunch precipitated by a long deadline, although arguably motivational, is anathema to quality. Software built in this way is not Under Milk Wood, it’s healthcare.gov.
A deadline, in the simplest sense, is just a date by which you must achieve some task. But more subtly, it’s the moment when you become accountable.
Of course, the idea of more accountability and shorter feedback loops in software development has been around for many years. It’s one of the reasons Scrum has practically supplanted other development methods. By replacing a single big crunch with a small crunch every fortnight or so, you divvy up the stress and the risk, and can react to problems and changes more easily.
So if two weeks is better than six months, what about weekly deadlines? Some Scrum teams do have weekly sprints. Can we go even shorter than that?
Many software teams have standups every morning. In some ways, these are daily deadlines where team members are held accountable for the work they did yesterday and will be doing today. The comedian Jerry Seinfeld had a similar daily system: a yearly wall calendar that he marked with an X for every day he wrote a joke. An unbroken chain of X’s kept him accountable to himself.
Shorter than a day?
When I worked outside London, I had a 25 minute train commute. It was rarely crowded in the mornings so I knew I’d get a seat and be able to work on my laptop. I had no other time to work on my personal projects, so I needed to get as much done during these brief moments as possible.
Having just 25 minutes each morning kept me very focussed and productive, as long as I knew in advance the one thing I wanted to achieve on that trip. Since I could only work once a day, the work had to be small and complete so that I wouldn’t have to waste time context switching the next day.
Similarly, a lot of people swear by the Pomodoro Technique which is also a series of 25 minute deadlines punctuated by short breaks over the course of a day.
25 minutes is already very short, but is there a shortest possible deadline?
If deadlines are the intervals between accountability, then the limit of deadlines is pair programming.
Every decision made and line of code written has the potential to be questioned, discussed and rationalised. If there’s accountability at all times during the software development process, you’re more likely to end up with high quality software since it’s harder to wander off on tangents, cut corners or make mistakes.
Although software development is a creative pursuit, its unforgiving fragility means we can’t rely on big crunch deadlines to deliver high quality results, as we can in other creative arenas. However, there’s no denying that a deadline can help us focus and deliver. By keeping deadlines short and crunches small, we can get the best of both worlds.
I’m not sure Dylan Thomas would have liked the idea of pairing on his plays, perched in his writing shed above the Taf estuary in contemplative solitude. But for us software developers, a mixture of pair programming and good time management could mean the difference between a high-pressure, buggy product release, and a relaxed, well-crafted composition to be truly proud of.