Two biggest mistakes I notice inexperienced people making when working with programmers: letting them do too much work on their own based on written directions and not reviewing code, especially for readability.
1. Hire someone you can work with in the same room. The more time you spend next to your programmers, the more closely the product will be aligned to your vision. If your time is limited, spend time outlining the entire thing and make sure they are on the same page. If you have more time to spend in the same room, let them do their thing and check in and ask questions as it seems appropriate.
Lots of programmers like to do their own thing, on their own time. I get it, I even push for it on my own projects much of the time- but there is a lot more accountability and understanding of what it takes to get something done when you're there.
2. Make sure you have all project files, notes on how to build or rebuild from where they left off and, most importantly, make sure the code is commented and that their variable names and whatnot make sense.
Every variable, function, flow control statement (if/then/else, switch, etc), loop, etc should have a comment about what it is and what it does.
static int nUOS;
says absolutely nothing.
//Number of users on the server right now
static int nUsersOnServer;
Tells you exactly what that variable is and what it's for, even if you have no coding experience.
This also keeps your coders accountable for writing good, clean code, which will save you a lot of time in the long-run.