Do you need to hire a programmer for a small-to-medium contracting job? Do you want a fighting chance of success? Here are some tips.

Hire the best programmer you can afford. Several decades of research (and tons of practical experience) show that good programmers are 10 times as productive as average programmers. However, they often cost only 2 to 4 times as much. Plus, one good programmer can keep the details of a project in her head; 10 bad programmers must typically spend several weeks in meetings, arguing about which CASE tools to use. (I've seen bad programmers waste over US$1 million botching a job which one "expensive" programmer could do correctly in a few months.)

Be prepared. Good programmers may move fast. So figure out what they'll need to do their jobs, and get it ready beforehand. For short term jobs--a few days to a few weeks in length--you can easily double the productivity of your programmers by getting all the information they need in one place.

Make tradeoffs. If you know exactly what you want--and insist on every last detail--you'll probably pay way too much. But software development is full of situations where you can get 80% of the features for 20% of the price.

A good programmer will frequently present you with choices, and explain the consequences: "Can you live with 8-bit textures and a slightly old-fashioned rendering model? In that case, we can use the Quake 2 engine for $10,000 (or put our application under the GPL and get it for free). Or do you really need cutting edge graphics? That will probably cost at least $250,000, and will require our users to have good video cards."

Implement the most important features first. This is simply good economics--if you implement the most important features first, you can start using the application sooner. And once you start using the application, some of your low-priority features will seem like a waste of money.

(Implementing the most important features first isn't always easy. Contractors who use Extreme Programming techniques tend to be good at it, however.)

Pay by time worked, and renew the contract frequently. Fixed bid contracts are a bad idea--they encourage the programmer to cut corners, and encourage the client to cram in as many extra features as possible. Unless the programmer is incredibly productive, everybody will go home miserable. Instead, pay by the day (or week, or month), and renew the contract every few months. This gives you an easy out if the programmer is a total dud, and it gives the programmer an incentive to work hard.

Pay promptly. Yes, I know you can improve your cashflow by paying your supliers slowly. But it won't make you any friends. If you want prompt and ethusiastic service, pay promptly and enthusiastically.