1. A computer-implemented method comprising: receiving a job in a job scheduling system; transmitting at least part of the job to a job reader; receiving from the job reader an indication of one or more functions required for performing the job; and selecting, with a computer processor, a first computing device from among a plurality of computing devices based, at least in part, on whether the first computing device supports the functions required for performing the job.