Unreasonable deadlines are an unfortunate reality of the tech industry which every developer, at one point or another, will have to deal with. They result from a combination of the industry’s fast-paced environment with the fact that clients and/or management often have little first-hand understanding of how programming really works.
In this article, we will give you a few general guidelines on how to bring unreasonable deadlines back into the realm of reasonable work. They may come in handy!
Step 1: Evaluate
Not all deadlines are made equal, and not all deadlines are equally negotiable. Sometimes you will be working with a view towards having your product ready for a public event of some kind, like an exhibit or a show; in that case the deadline is, quite simply, set in stone, and we’ll look at what to do in those situations in Step 2. Other times, the deadline can be moved, but at a cost, for instance by compelling you to renegotiate a contract with your client. And sometimes the deadline only exists to coordinate different departments, or because management believes it will help push the team forward, in which case it should really not be given too much weight.
Whatever the case, it is important that communication regarding work schedules be transparent from the very beginning, and for longer projects, that it be ongoing. If management gives you a deadline that you know is unreasonable, tell them, politely but firmly, that they must not commit to that date with the client. Do not budge from that position unless they are willing to scale down the ambition of the project itself. You should never passively accept a schedule that you know is not feasible, not from a client, and especially not from your boss. These things should all be made clear the moment you are asked to evaluate the deadline, not one week or two weeks or two months later.
Longer projects are notoriously difficult to predict, as new requirements or unforeseen pockets of complexity may emerge. Thus, be clear with management that your expected finishing date is an approximation, one that may well need to be pushed forwards later in time. Keep communication ongoing, and if something happens that means the deadline needs to be extended, inform management right away. Be as firm as you were (or should have been) when the deadline was first given to you: if there’s not enough time, you need to be given more time, and if management won’t do that, well, this leads us to our next point.
Step 2: Negotiate
As mentioned above, sometimes a deadline simply cannot be moved. In that case, what has to be renegotiated is the project itself, or put more crudely, you have to identify the parts that are inessential and throw them overboard. Make a decision about the basics of what your project should perform, rather than what makes it ‘special’ or ‘distinct’, and put all of your efforts into that.
Of course, this will involve negotiations with management. Work with them to figure out which features you can and can’t get rid of. See if you can get some extra hands on board, assuming you have the budget and (this is really important) enough time to train them to make it worthwhile.
By and large, you should avoid offering to work overtime unless you really want the extra money. Overworking yourself will damage your productivity, which means not only that you’ll probably miss the deadline anyway, but you’ll also put yourself at risk of burnout. Also – and this should go without saying – never, ever offer to work unpaid overtime. That only communicates to management that you are open for exploitation, and it is the last precedent you ever want to set.
Step 3: Keep tabs
The point of communicating transparently about deadlines is to get management to change them when they are unreasonable. Sadly, sometimes it is not the deadline but management itself that is unreasonable.
In such a situation, it is imperative that you do not take the blame for their lack of judgment, nor let them put the blame on you. Keep minutes of the meetings you have with your bosses, and make sure you reiterate that the deadline will – will, not might – be missed. If they ask you why something was not done on time, show them those minutes, and demonstrate that you performed the work you said you would, according to the standards you gave them.
Any time they add a new requirement or make you waste time on some non-essential task (even if these are nominally set up to speed up the project), extend the deadline accordingly. Your bosses may not be happy when you do that, but then you are not their motivational coach, you are a software developer, and reporting truthfully on how long a project will take is part of your job description.
Deadlines that are unreasonable should be treated as unreasonable. If management insists on pushing ahead with them, then they are the ones who must shoulder the responsibility when these are missed. If they don’t, or worse, if they try and put that responsibility on you, then that’s your cue to walk away. That sort of behavior sometimes occurs in the industry, but that doesn’t mean you should put up with it.