I'm trying to come up with a formula to prioritize a list of skills that a learner should tackle based on:

  • current familiarity with the skill, and
  • the usefulness of the skill.

Familiarity is a $1$ to $5$ rating (unfamiliar to extremely familiar) and usefulness is also a $1$-$5$ rating (least to most useful).

For example:

  • learn French (familiarity $3$ and usefulness is $5$)
  • learn Spanish (familiarity $2$ and usefulness is $4$)
  • learn Mandarin (familiarity $1$ and usefulness is $3$)
  • learn English (familiarity $5$ and usefulness is $5$)
  • ... Etc.

The outcome of the formula should be a number that indicates which skills should be tackled first.

This should be determined based on the current gap between familiarity and usefulness, but also should favour more useful skills (e.g. French should be learnt before Spanish as it is more useful, even though the gap is similar).

I've come up with a basic formula so far:

If familiarity is $x$, and usefulness is $y$, then the outcome $Z$ is:

$$Z = (x - y) \cdot y$$

Using my formula so far, the above skills give:

  • learn French ($Z$ = $-10$)
  • learn Spanish ($Z$ = $-8$)
  • learn Mandarin ($Z$ = $-6$)
  • learn English ($Z$ = $0$)

The formula gives a negative number that correctly ranks the skills according to gap and usefulness, however, the output numbers are not evenly distributed (they range from $-20$ to $+6$) and are not exactly intuitive, and so I was wondering if there's a way to make the output more uniform or better than what I've come up with so far.

Ideally, something like a ranking from $1$-$10$ or so (where $1$ is the least priority and $10$ is the highest priority skill) would be ideal.

Thanks in advance


John's answer works great, but here are additional general formulas for converting a number range to another:


1 Answer 1


It seems like you already have your answer.

Your goal was "to prioritize a list of skills that a learner should tackle based on current familiarity with the skill, and the usefulness of the skill."

You stated that the scoring you used correctly ranked the skills (or, at least ranked them in the way you expected). So ... you've won, right?

If a ranking is all you need, then there's no need to report the raw score. Just report a ranked list.

If you want some kind of score, though, you can assign a $10$ to the top one and scale the others based on the value that would indicate minimum utility. So if your "global minimum utility" score is $+6$ and the score for the one that you should learn first is $-10$, then you could apply the formula:

$$S = 10 \cdot \left[1- \frac{x - (-10)}{+6-(-10)}\right].$$

This gives:

  • Learn French $10$
  • Learn Spanish $8.75$
  • Learn Mandarin $7.5$
  • Learn English $3.75$

So, there is some utility to all of these, as none of them scored $0$. But the best one to start with gets a $10$ by definition.

  • $\begingroup$ Thanks John. I was hoping for numbers that would be more readable and intuitive to the user. If there isn't a better formula to achieve such a weighted ranking, then are there at least some tricks to map the range to a 1-10 scale or something like that? $\endgroup$ Commented Feb 7, 2014 at 21:54
  • $\begingroup$ Edited my answer. $\endgroup$
    – John
    Commented Feb 7, 2014 at 22:07
  • $\begingroup$ Thanks a lot John. That definitely answers my question. Based on your answer I found a few related questions on StackOverflow as well, so I added them to my question for completeness. $\endgroup$ Commented Feb 8, 2014 at 0:00

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .