Nous avons une partie de notre intranet qui répertorie tous les locuteurs de langues étrangères au sein de l'organisation que les collègues peuvent contacter s'ils ont besoin d'aide en traduction. Naturellement, il existe de nombreux locuteurs des langues les plus courantes telles que Espagnol ou français, et moins de langues moins courantes.
Le défi actuel est que lorsque quelqu'un filtre vers le bas pour voir les locuteurs de langues à haute fréquence (comme l'espagnol), ceux qui se trouvent en haut du tri par défaut finissent par obtenir tout le trafic demandant une aide à la traduction (pour l'utilisateur , il n'y a aucune raison de chercher plus loin), alors que ceux en bas du tri par défaut ne sont presque jamais contactés. Quel que soit le type choisi, il semble que ce modèle se poursuivra.
Quels sont les bons moyens d'empêcher ce type de biais de se produire?
Nous avons discuté:
C'est mieux c'est simple.
Sauf si vous avez vraiment besoin que la charge soit équilibrée de manière égale, randomisez simplement la liste. Ne nécessite plus de stockage de données et peut être fait côté client dans le javascript de toute façon si nécessaire.
L'équité du choix est-elle une bonne chose pour l'utilisateur? Si l'utilisateur peut bénéficier d'un meilleur équilibrage de charge en raison de temps d'attente plus courts, d'une assistance plus longue ou de meilleures ressources, pourquoi ne pas exposer ce fait aux utilisateurs et les laisser choisir un personnel moins occupé pour eux-mêmes?
Si l'équité n'est pas utile pour l'utilisateur, essayez d'exposer plus de points de différence dans la liste afin que les utilisateurs aient plus de choix (comme le suggère Greenforest).
Si vous implémentez un nouveau tri invisible (par exemple, la randomisation), j'envisagerais d'implémenter une fonction "traducteurs connus", où les traducteurs que l'utilisateur connaît déjà sont placés en tête de liste. De cette façon, si un utilisateur revient sur la page pour demander autre chose à un traducteur avec lequel il a déjà une relation, il ne sera pas gêné par la randomisation.
Vous pouvez équilibrer la charge de travail en attribuant des points aux traducteurs mais en les masquant à l'utilisateur. Disons que nous avons 5 traducteurs: Alfred, Bianca, Carlos, Dave et Eliza. En supposant que les utilisateurs paresseux, nous nous attendions à ce qu'Alfred assume la majeure partie de la charge de travail, en particulier dans une très longue liste alphabétique.
Disons plutôt que chaque fois qu'un traducteur termine une traduction, un point lui est attribué (peut-être en fonction de la durée de la traduction, peut-être pas). Ainsi, la liste peut être triée par valeur en points dans le sens inverse afin que les traducteurs les plus utilisés tombent au bas.
Pour le rendre encore plus équitable, supprimez simplement la capacité de l'utilisateur à sélectionner un traducteur particulier et à appliquer une affectation aléatoire en fonction du besoin réel.
Parfois (je suppose que le plus souvent) de très bonnes traductions nécessitent une certaine connaissance du domaine. Que diriez-vous énumérant les domaines d'expertise de chaque traducteur en plus du nom et de la langue? Cela pourrait distribuer les demandes d'assistance et en même temps augmenter la qualité.
Concernant vos options: Un compteur de clics sur l'adresse e-mail peut ne pas fonctionner comme prévu, car certains utilisateurs copient/collent des adresses e-mail au lieu de cliquer dessus (pensez à utiliser des webmailers qui ne s'ouvriront pas avec des liens mailto). Et cliquer sur le lien ne conduit pas nécessairement à un e-mail envoyé au traducteur. Je suppose donc que la randomisation ferait l'affaire aussi, surtout dans les petites listes.
Doit-il s'agir d'une liste? Vous pourriez être en mesure de le simplifier avec un modèle de recommandation ou de suggestion qui sélectionne un résultat qui répond à vos critères. L'algorithme de sélection peut être aléatoire pour l'itération initiale, puis intégrer l'intelligence plus tard (lire jamais).