When you're presented with a deadline, the first question that you should ask is what type of deadline you have. Here are some common possibilities:<p>- A number to use to whip people to work harder. (Yes, despite much research demonstrating how counterproductive that is for developers, a lot of management teams still try it. In part because big audacious goals tend to work well in other fields, like marketing.)<p>- A hard date that must be met. You need something to announce at a conference. A new tax law is in place. And so on.<p>- A date for the rest of the company knows what to plan around.<p>How you should treat a deadline varies by the type. If it is one that exists to whip you, ignore it as you file your resume looking for somewhere better. If it exists because something needs to be done, you should work hard to make sure that there will be a minimum viable product available before that date, then improve it as much as it can be improved for that date. If it exists for planning purposes, then make sure it has sufficient padding, and develop as efficiently as you can. And so on.<p>Now that you know what kind of deadline you have, where did it come from? In most organizations, the schedule estimate arrives as the first date that nobody can disprove. That is why software usually takes about 2x as long to deliver (if it ever is delivered) as it was estimated. But research indicates that, for software developers, the more confidence that they have in the schedule, the more productive they are. Many have noticed that when developers work to a schedule estimate that they produced, developers are more productive than if it is a schedule made up by management. However if developers work to a schedule estimate produced by an expert estimator, productivity goes up again.<p>Most organizations do not have expert estimators. So involve developers in schedule estimation. Add in fudge factors for sick time, unplanned obstacles, etc. As a good approximation the ratio between past plans and past performance is a good ratio to apply. As the project goes on, if the schedule starts to slip, immediately assume that all later parts will slip by the same ratio that you're experiencing already. To be able to catch slips, you need unambiguous milestones that can't be fudged. Otherwise people will say things like, "Coding is 90% complete" having pushed off the hard 10% that will take as long as what is done.<p>And if you want more good advice, I highly recommend Steve McConnell's <i>Software Estimation</i>. (You could substitute most of his books for that one, and the recommendation would stand. But that's the one on estimating schedules.)