Strive to create a workplace where you have the luxury to give your programmers as much time as they request -- including amending dates back as often as requested. Be in a position so that if a programmer doesn't work out and his/her dates aren't acceptable you simply fire them/move them somewhere else in your organization where they can be successful.

That's not to say you shouldn't reward timely work completion and great self-management; pas du tout! The bottom line is that if you have subpar workers, the last thing you should do is catch yourself in a position where they're forced to use less time than they must take to make passable code. Some people can't make passable code no matter how much time they're given. Your shortened deadlines wouldn't work there either. Some people need you to crack the whip, yet holding them to deadlines they can't meet just means you're embedding bugs you'll be fixing at a premium later; your bad programmers are causing you more work as you speed them past where they're comfortable.

Key is that I said, "Strive to create a workplace where...". You'll need most of your programmers to be pretty mature self-starters before you can start ignoring bad code long enough to hand someone enough rope to hang their professional career at your company. But the striving will be worth it once you're there. I just know it. ;^)