Thursday, November 5, 2009

Way to improve Jobmine's matching process

Yes, yes, there are tons of ways to improve jobmine. Googling "jobmine sucks" returns tons of reasons why Jobmine lacks usability. I won't go into it here, because though important, they don't directly affect the core functionality of jobmine. Inefficient job matching process, however, does.

The matching process is as follows: during round one interviews, employers have three weeks to interview students and assign a rank between 1 and 9 (not necessarily distinct) to each qualified candidate. After the three weeks deadline, students see the jobs that they are ranked for. A rank of 1 shows up as an "Offer", and a rank >1 shows up as "Ranked". Now, students are given a weekend to rank each of the positions from 1 to 9 (not necessarily distinct). Jobmine then matches students and jobs by minimizing the combined rankings of students and employers. (More details here.)

Sounds good in theory. In practice, students have difficult choices when faced with "Ranked" for a job they want, and "Offer" for a job they don't like as much. Students know that if they rank an "offer" job a 1, they will get the job for sure. This security makes offers attractive. The situation actually happened to me once, and like many students I took the offer. Imagine my delight as I found out that my first choice job was left unfilled.

I think that the problem lies in the lack of information flow. Students don't know how other students will behave. Incidentally, there have been facebook groups set up to facilitate information flow, allowing students to share their ranking results and preferences. There were people who emailed all candidates to ask whether anyone is taking this job. Unfortunately, Jobmine's interface makes it seems as though we should be as secretive as possible. But why shouldn't we share information to achieve a collectively better result?

One solution that would work well is a rolling ranking process: accept student ranking submissions that result in an offer being taken any time throughout the weekend. The system can then update the other jobs that the student was offered/ranked for to indicate their unavailability. This change can then be reflected on other students' ranking pages: e.g. if John is offered for job X, and Mary is ranked 2nd, and John takes a different job, then Mary would see "Offer" on her rankings page.

At least one advantage of this method should be clear: non-econ majors wouldn't have to study game theory to find the optimal rating strategy, and everyone will have better chances in choosing the jobs they want the most. This is done while preserving employer's ranking privacy -- more so than the facebook group and emailing!

A less obvious advantage is that the number of jobs filled should increase. We can expect that a small percentage of students will have a large number of offers from high-profile companies, usually ones that take in a flexible amount of students. These students must reject all but one offer. I assume that many of these positions are left unfilled, as people who are ranked for these positions settle for offers, which are safer. These companies would be left with no matches, and may be disinclined to continue into second round, reducing the number of total jobs. This is clearly avoidable in a rolling process. Offers not yet taken can go to a second group of students. Offers not taken by this group would again be trickled downwards. More jobs will be filled, which is a plus for both employers and students.

You might note one potential disadvantage: employers will be more likely to be matched with students further down on their priority list. With the employers I know, it's not a problem. Students think that the difference between an "offer" and a "rank" is huge, and feel awkward working for an employer who preferred someone else. The employers, on the other hand, highlight the difficulty in choosing students. To them, everyone they ranked is good. Employers, unlike students, have the ability to not rank a student (and rightly so).

Incidentally, I think that students should be able to reject an employer as well, and in this case, a more elegant matching method exists. Currently, students can be matched with a job they don't want even if they rank it 9. They then face the choice of wasting 4 months or failing the term.

Currently, to prevent being matched with a job, you must initiate a tedious sign-off process involving the student, the CECS, and the employer. The student must show that the position is sufficiently different from the stated job description. CECS seems to think that this is the only legitimate reason a student might reject a job, but there are other reasons: You might not like your future boss. You might not like the culture, bureaucracy, or disorganization of the company. You might not like the salary. There's a reason that an interview is a two-way street, and the mere fact that CECS wants to be so strict about this shows that there are jobs students don't like. The employer has the opportunity to not rank a student, so why shouldn't it be the other way around? CECS might say that taking a job is better than being unemployed, but that should be the student's decision, not anyone else's.

CECS might also suggest that an easy sign-off process would encourage students to apply to jobs without the intent of accepting it, and prevent student accountability. This is a legitimate concern, however we should note that an application is just as much a cost to the students as it is to the employer, and students don't normally have an incentive to pay this cost. Of course there are people who apply to jobs for "practice" or other reasons - but these people are already doing it! It's easy for a serious person to figure out how to avoid being ranked. CECS is really penalizing the honest students: first years who panicked under the stress of the economy and other students who genuinely wanted the job at first.

The other problem that CECS might want to prevent is employer disappointment. It's a legitimate concern in a shrinking economy, but wasting 4 months of a student's time just comfort an employer's hurt feelings? I don't know about that. I think it's fair game to let law of demand and supply dictate which jobs will be filled. Besides, job rejection is actually a norm in society, and employers should understand that as well.

(Some people may be disinclined to make the distinction between"good jobs" vs "bad jobs". There is no dichotomy here, I agree, but I'd also invite them to just look at some jobs titles in Jobmine - "Algorithmic Trading Developer", "Parking Attendant", "Student Marketing Analyst", "Head Cook", "Chemistry Research Assistant", "Brine Maker"....)

So, with this rejection ability in place, we have a second solution to the initial problem: to make job ranking and job rejection asynchronous: let job rejection happen any time in the weekend, and keep job ranking at the end. Every time a job is rejected, update everything as before (as in John and Mary). Like before, a student who is certain that he wants to take a particular job offer can reject all the other positions except one (and in doing so passes this information to other people). But this time, a student who is still deciding between two of his offers can pass down the rest of his offers, without having reached a decision.

Of course, I haven't modeled/tested these claims, and if there's something wrong with my reasoning, please let me know.

End of Entry