Lately, a few projects I’ve been working on have benefitted from having deadlines, sometimes even arbitrary ones. It turns out that deadlines help you get things done, but only if the deadline is tryly achievable, and only if those working on the project have a true commitment to it.
One recent example is a project at work where we replaceed the plumbing of our incentive reward catalog. The project had been moving along at a respectable pace, which is to say, it was a little late on delivery, but for the most part it was going well. One problem with this project, though, was that it was a plumbing project, and so progress on it wasn’t always immediately apparent. In the same vein, the deployed code was working well enough (the goal of the new project was to improve extensibility of the product), so there wasn’t a huge rush to get this code pushed. Well, as the delivery date passed, and then a few more weeks passed, there came a heightened interest in the project getting completed. A realistic deadline was set, and a commitment by those working on the project was made. Then, as the deadline approached, two things happened.
First, the developers started choosing the shorter path to completion on many tasks rather than perhaps the most elegant path. I’m not saying that shortcuts were made that affect the quality of the product, as that’s really not the case. Design decisions came more quickly, discussion of implementation approaches were more focused and completion-oriented, and over-architecture was eschewed in favor of keeping it simple. The mindset of “simplest possible solution” was adopted.
Second, the team became more focused on actually delivering the product. My first question of the day, every day, was “what are we going to do today to launch this on time”. In other words, milestones became inchpebbles, visibility into the project status was improved, and velocity (both real and perceived) increased. Goals are much easier to accomplish when you are very focused on them and have a discrete list of actions to complete to achieve them. :)
Well, in this case, the deadline was a good thing. We met our revised schedule, launching on the deadline date. We all knew the world wouldn’t end if we missed it, but it felt great to hit it.
Now we’ll see if having a self-imposed deadline of July will help me finally release version 1.0 of phpBugTracker.