Friday, 15 April 2011

Requirements Elicitation

Sometimes geekish skills can help with non-geekish things.

Once upon a time there was a professional meta-geek I'll call Jon.  He was a professional because he got paid to do geekish things, and a meta-geek because he advised other people how to do geekish things.  One day a small impoverished group -- a charity if I recall correctly -- asked him the best way to sort a million records.  This was back when sorting a million of anything was a big deal; we were running units of 80+ people on computers less powerful than my cellphone (which is likely less powerful than your cellphone).  In the course of asking about what they were up to, it dawned on Jon that "sorting a million records" wasn't  the real problem; it was an overly-specific partial answer to something a heck of a lot simpler.  Jon was doing what system design geeks call "requirements elicitation" -- talking to clients to figure out what they really need.

Well, we're in the midst of a federal election here in Canada, and one thing is certain: somebody's going to say "the result was unfair, because we don't have proportional representation"  -- a system so obviously superior to "first past the post" that when given the choice recently, the people of British Columbia and Ontario rejected it outright.

Eh?


"Proportional representation" doesn't grab me as inherently desirable in and of itself -- just like sorting wasn't inherently desirable for Jon's clients. It's just one solution to problem where voters haven't been asked what they really care about (or what they said got ignored).  I suspect that people don't like "add more politicians, some of whom won't have to actually run for anything."  They want to avoid vote splitting: "I really want X to win, but Y is OK and anybody who can beat Z is acceptable."  They want to vote against some people as well as for others.

Well, there's a system that comes close to letting voters say what they mean: instant run-off.  If there are N choices, you rank them 1-N and count the first-place votes.  If somebody gets 50%+1, that's it.  If not, the vote-counters take the ballots whose first choice got the lowest total and adds their second place choice to the counts of whoever is left, and so on for rounds 3 to N-1. Eventually somebody gets 50%+1 -- in Canada, likely after just one or two run-offs. For my example, you rank X first, Y second, Z last, and the others in any order that makes sense to you. In Canada, there are usually only about six alternatives in any one riding; somebody once told me that Australians manage this with 70+ choices. It might be a strain to figure out the best order for candidates 3 to 5 once you've picked 1, 2, and 6, but it may not matter much. Maybe voters could just leave those blank, having said the few things they really cared about, and the rules could be set to treat those blanks in some sensible way; we'd have to elicit even more requirements to figure out what's appropriate.

Will it fix everything election-related?  Not a chance: It doesn't handle my late father-in-law's favourite: "none of the above." It doesn't tackle any of the other reasons people don't want to vote, such as politicians promising to do or not do something, then doing the opposite. An economics geek named Arrow proved that, for a somewhat reasonable definition of "fair," no fair voting system can exist. But it's a step, one that will get a lot more first-place votes for small parties and independent candidates, and no more vote splitting -- both of which a lot of people would like much better than what we have now.

Postscript: It turns out that Great Britain had a referendum on "alternate voting" on May 5, and rejected it 2-1 despite a wonderful video tutorial on what it all meant. So my speculation that instant runoff might prove more popular than other approaches has at least one contrary data point.