Most important (and often overlooked), in my own experience, is getting to know the person you're working with.
I've worked on many long and complex projects with developers in other countries/time-zones, many of whom speak other languages natively.
Every one of these people needed to be treated a little differently for optimal productivity. I guess that ultimately, that's the 'art' to project management. Knowing how much to push on certain things, with certain people, at certain times.
The key, as always, is good, clear communication.
Expect there to be noise in the transmission, and simplify until the message cannot be misunderstood. What is obvious to you WILL NOT be obvious to them (especially if they are not native English speakers). This is where the problems arise 100% of the time...
Most importantly: Always question your assumptions and the clarity in the instructions you give. Make sure your messages and instructions CANNOT possibly be misunderstood. Then, simplify it more (or make what you want and need even more explicit).
Best advice, as a bullet list:
- Don't be overbearing, give your devs time work through issues
- Set VERY clear and easily understandable milestones
- And give yourself some buffer, especially at first
- I.e. -- with someone new, I will tell them that something is due a day or two before it really is.
- But do this within reason. Ultimately, you are responsible for WHEN and HOW things are delivered. And rushing anything will more often create more problems than it fixes. So, as is often the case in management of any sort, it's all about balance. Understanding this balance and using it effectively is what makes a manager great.
- Break tasks up as much as possible, and give the most precise and concise instructions on each
- The more time you spend outlining EXACTLY what you are expecting (and WHEN it's due, and HOW it will be made), the less you will be surprised with what is delivered
- The difficult part of this is leaving enough room for your dev to solve the problem in the best way possible, creatively - they're deep into a problem that for you is sometimes just an abstract note in a long list of such idealized features. By the very nature of this circumstance, your dev will often have a better solution than was originally envisioned. (And they always will if they're really good.) Encourage them to share it when they have an 'a-ha' moment. And have the courage to sell the new idea up the chain. Especially if it'll save you all time, and money.
- Make sure you know what progress is made each day, and on WHAT specifically
- But remember that, when it comes to 'checking in', less is more.
- I always think: Whenever the dev is talking to me, they're not working on the project.
- I've had lots of success with letting developers manage the task lists themselves. There are lots of tools and methodologies and software systems for this. And ultimately you need to find co-workers you can trust to keep working effectively WITHOUT constant supervision.
- It doesn't matter how you do it, but make sure that you are always able to get a snapshot of what is being worked on WHEN, and what the status of EACH individual item is.
- If you can get status of every item (or the important ones) without interrupting your developer's workflow, it's in everyone's best interest.
- In this regard, As SpoonerNZ said, transparency is key.
- I like to setup the system and tasks, and deadlines, then let the devs figure out the best order in which to complete, however is most natural/conducive to getting the work done most efficiently.
- I don't want to check on them constantly any more than they want me IMing or Skyping them all the time.
- Eventually they learn that I'll bother them less when they actively engage and keep the tracking and notes on each item up to date. When they don't, I have to message them via whatever tool we're using and add notes so I can keep myself and everyone else up to date. And if I have to keep messaging someone nonstop to make sure they're working -- usually that means it won't work long term. There needs to be mutual trust.
Getting long now, so I'll end here.
But good luck, and remember: Every time you manage a new person there's going to be some trial and error. Like any relationship, it's all about understanding each other and figuring out the best way to work TOGETHER.