Overview

Problem: We like to ask each other for our rankings, like “What are your favorite books?” or “Rank the top 10 Michael Jackson songs.” There should be a tool to help you methodically compare each item in a list two by two and return the final ranking. 

Solution: A simple web app where you input a list of items you want to rank in order (such as the seven Harry Potter books) and compare the items to each other.

Users: Anyone, especially avid list-makers

Result

Building the list

Building the list

Final list

Final list

Sorting the list

Sorting the list

 

Tools Used

React JS (original tutorial by Michael Cheng), Materialize, Github Pages, Python

Process

Understand & Explore

As an avid list maker and budding programmer, I wanted a more scientific way to rank a list by comparing the items to each other. I did research to see if anyone had already built tools to accomplish this goal. The closest thing I found was a forum thread asking if anyone had built such a tool.

Define & Ideate

At this time I was learning about sorting algorithms in class. These algorithms can easily sort a list of numbers, but for a list of non-numeric items, I’d have to adapt them to ask for a user’s preference every time they compared two items. I decided to use Shell Sort, which gives you a general overview of the entire list before combing through it in more detail.

Prototype

My first step was to build a Python program that accepted user input through the terminal. After some agonizing over the algorithm on a whiteboard, I got it to work on my local machine and asked for advice on my blog on how to adapt it for the web.

Implement, Test, Iterate

My next step was to recreate the program using ReactJS and deploy it through Github Pages. I tested with people, fixed bugs, styled it, and fixed more bugs.

Conclusion

Some computer scientists who tested the tool pointed out that there are faster algorithms that require fewer comparisons to sort a list. In the future I could experiment with using alternative algorithms for Ranker. 

The Ranker tool also highlights a flaw in the transitivity of preferences. People don’t always prefer x over z even if they prefer x over y and y over z. That’s fine! The limitation of this tool is that it uses subjective human preferences as data, which can change at any time.