Do not use schedules, use deadlines.
Use schedules when all you're doing is changing values in templates and config files. Use deadlines when you're developing software, and never set a deadline that has a deadline as a dependency.
When you set deadlines, set them only after you've reached your last deadline and have evaluated what you've now got and what needs to come next.
View a deadline as a motivational cattle-prod and not a planning aid; the only reason to use deadlines at all is because people are more productive and creative when one has been set. Otherwise, there wouldn't be any reason to use a deadline at all.
Do not set stupid deadlines, like "finish the software", but the most specific you can get without being ridiculous. "Import CSVs", "Generate seating plan", and "Export PLDs" are examples of good deadlines, while "loop through vendorProfiles array" is ridiculous.
When a management or planning type asks you what your schedule is, or when you plan to have the software finished, say that "applying schedules to software development makes about as much sense as trying to draw chalk lines on water. We are not organizing a trade show, we're discovering problems and inventing the solutions to them. Ask a doctor what the schedule is for the cancer cure." Show him your current deadlines and say, "after we reach these, we'll make another set of deadlines. I'll only tell you the date of the last deadline once we're finished, because even I won't know what it's going to be until then."
Your last deadline will be "ship."