As someone who has hired several programmers... I can tell you that without a detailed plan/roadmap/flowchart in place before hiring a programmer, you won't get your project done on time. Even with a detailed plan in place, the odds of getting your project done on time are low, end of story.
All projects change and that requires timelines and budgets to be flexible. And when outsourcing the programming, it's even tougher as there is little to no face to face communication. Sadly, most programmers - while they may be brilliant - have extremely poor communication skills. Most people hiring programmers have little technical knowledge and thus the communication fails on both ends...