Some further background: I don't talk to my devs with my vocal chords -- ever. It's a waste of my time and the communication is better documented in Slack (Zach actually has a good post on this). They join Slack, I assign them Pivotal stories, and they make pull requests that I review. Their onboarding is just me telling them a little about the project and their first task. I don't explain our grand purpose or any of that stuff because 4 times outta 5, they don't make the cut.
Warning signs:
* They struggle profusely with setting up the project or it takes a long time. If I have to hold your hand installing our necessary dependencies, chances are you're an inexperienced dev and/or have weak problem solving skills.
* They have very little to say besides "ok". The good ones always start asking a bunch of questions as they attempt to genuinely understand what's going on. The poor ones feign expertise.
* It takes them a long time to deliver their first unit of work and/or it's very low quality and barely meets minimum requirements.
* Their work diary shows few hours logged. I ask everyone you're willing to do 30-40 hours a week? They all say yes. About 10% actually take the hours I'm willing to give to them.
* They have a poor attitude
* They need to be constantly prodded for status updates and to work more
Good signs:
* They ask questions
* They have a positive attitude and seem appreciative of the opportunity
* They dive right into work
* They work a lot
* They hit me up randomly with status updates
People reading this are like "well ya," but what makes life interesting is the gray area. It's never this black & white and I have to just monitor them. In fact, I prefer to somewhat leave them alone to see how they really work. Anyone will log on and start coding under fear of being fired, but there's only few that take the reigns into their own hands.
Over the course of almost 2 years, I have 2 core guys who have done wonders for me each at $15/hr. They both are very happy with the opportunity and I've made them into very competent devs who I would put up against a college grad (or higher) any day of the week. I have a third who has all the right good signs, but is somewhat rough skill-wise. I don't mind because my core guy was rough in the beginning and he started reading a Scala book to get better. In general, my team is always about 4-5 since I code myself and can only do so much.
Honestly, it all comes down to attitude. I can train an earnest, hard-worker into an amazing dev but it's impossible for me to inspire someone who just doesn't care. I'm sure all this stuff carries over into the real world, but it's a lot more rapid fire in the Upwork game.