The final advice I can give you is to respect and cherish your developers. If you lose one great developer, you’ll have a very hard time finding an adequate replacement for him, if you ever can. So listen carefully to what they say, and instruct them to tell you everything that bothers them. Make sure they are working on exciting tasks most of the time, and that they are happy.
Don’t over-work them, give them the proper tools and equipment, treat them like they were kings (rather than slaves), and make sure they are happy working for you. While it does not guarantee that they won’t leave you, it will probably prevent most premature quitting or getting fired.
Make sure your developers are the people who ultimately dictate what is possible and what isn’t. At a previous workplace of mine, I was instructed to re-implement a PHP (and Flash 8) application in Perl. At first I thought it was some legacy code, but as it turned out it was done because the marketing department decided that our programs should run on either PHP, Perl or ASP. However, it is common knowledge that maintaining three different codebases in three different languages is close to impossible. (The only real solution is to have a compiler from one common language into the three languages, but I wasn’t instructed to do that.)
If the marketing department had understood what PHP, Perl and ASP were all about, then they would have known that writing it in PHP was enough. But there wasn’t a feedback from the developers back to the marketing department.
If your developer wants to work half-time - give it to him. If he wants to work from home, or have his own office instead of working from home - give it to him. Great developers are a scarce resource, and you can’t afford to lose them.