Use alias names for your OpenPositions table so that you can link it twice. Use Left Outer joins to be sure that records are returned even if one of the foreign keys is missing:
left outer join OpenPositions FirstChoice on JobApplicants.fkFirstChoice = FirstChoice.pkPositionID
left outer join OpenPositions SecondChoice on JobApplicants.fkSecondChoice = SecondChoice.pkPositionID
But a bigger question is why anybody would list Programmer as a second choice. Obviously you have some severe data corruption. You should just delete those records.
If it's not practically useful, then it's practically useless.