One of the more reliable predictors of the health of a project can be to determine where the schedule came from. If the schedule came from anywhere other than the people who will actually do the work (with appropriate buffering applied), it is wrong. Period.
Common places for a bad schedule to come from include:
n Marketing often determines when a product “has to ship.” While this is valuable input into the product development process, date-driven milestones are always the source of problems. If coupled with explicit features, as it usually is, it is a recipe for disaster. The only three variables are time, resources, and product. Teams here have relatively finite resources, you cannot restrict all three variables of the equation.
n Management occasionally overrules the team and decides what the schedule “should be.” While management is another valuable source of input into the process, it cannot successfully dictate the schedule. Management can greatly assist by helping to adjust resources, priorities, and other aspects of the process, but it should not force a schedule on the team.
n Program Management is chartered with removing obstacles to shipment, and is given responsibility for much of the shipping process, so they sometimes mistake their role for that of schedule-setter. Unfortunately, as with other people who are not actually performing the task, their estimation skills usually fall short.
n Even if the schedule was prepared by the responsible managers and leads, it’s suspect. The schedule must represent the commitments of the people who are going to do the actual work.
Regardless of the source, if it’s not the team (the developers, testers, writers, etc.), the schedule is wrong. Not suspect, not inaccurate, it’s wrong.
How do you determine the source of the schedule? Ask several line team members what they think of the schedule, one-on-one. If they agree with it, and have honestly bought into it, they most likely had a hand in creating it. If they scoff, roll their eyes, or refuse to discuss it, the schedule is invalid.
p.s. not written by me - this was written by chris weilliams 10 years ago.