Когда алгоритм подсчета рейтинга компаний попал в боевые условия, он сразу затрещал по швам. Рейтинг одних компаний стремительно взлетел (это было связано с массовым голосованием довольных своим положением и лояльных к менеджменту сотрудников этих компаний), а рейтинг других камнем упал вниз (это было связано с тем, что некоторые не любят своих работодателей настолько, что не видят в них вообще ничего хорошего). Последние пять дней мы кропотливо подкручивали алгоритм подсчета рейтинга и теперь с гордостью объявляем вам, что наш алгоритм нам наконец-то начал нравиться, и менять его без предварительного анонса мы больше не будем.
rating v. 0.001 (+ -)
Теперь немного о самом алгоритме. Когда мы начинали разрабатывать dev.by, то рейтинг компаний виделся нам совсем простым — пользователь оценивал компании выставляя им плюс-минус или от одной до пяти баллов-звёздочек.
rating v. 0.1 (5 критериев)
Позже очевидным для нас стало, что IT-компании — штуки непростые и многоплановые и оценивать их по принципу «нравится — не нравится» не очень правильно. Так мы выделили пять условных характеристик-критериев для оценки компаний, следовательно, для голосования требуется присуждать компании баллы по каждому критерию индивидуально. При этом одни критерии значат чуть больше, другие значат чуть меньше. В наших планах было просто сложить среднюю оценку по каждому критерию и получить число, которое бы гордо называлось «Рейтинг» (+ + + + = Рейтинг). Кстати, средние арифметические значения этих критериев можно увидеть на странице профиля компании:
rating v. 0.2 (суммарный рейтинг)
Версия 0.1 была хороша всем, кроме окончательного значения рейтинга, который она рассчитывала. Например, за большие компании будут голосовать сотни людей (и даже у самой хорошей большой компании рейтинг будет колебаться около 4-х по пятибальной), а за другие компании, поменьше, скажем состоящие из 5-7 человек, будет голосовать директор и бухгалтер (в этом случае оценка будет 5.0, а маленькая, но гордая компания будет возглавлять список). Так появилась идея складывать оценки всех пользователей и полученное число называть рейтингом. Грубо говоря, это работает так: если пользователь проголосовал плохо (поставил мало звездочек) — его голос уменьшает рейтинг компании, если хорошо — увеличивает. Например, при оценке компании (2 1 3 1 2) рейтинг компании уменьшался на 0.8, а при оценке (5 5 5 5 5) увеличивался на 2.2 (цифры условные). Изначально рейтинг всех компаний равнялся нулю. Писать конкретные формулы мы не будем, чтобы самым сообразительным было сложнее накручивать рейтинг, скажем только, что оценки в 1 и 2 звездочки уменьшают рейтинг, в 4 и 5 — увеличивают, а оценка в 3 звезды на рейтинг не влияет.
rating v.0.7 (уравнять больших и маленьких и «я здесь работаю»)
Нетрудно заметить, что версия 0.2. не оставляла шансов «хорошей маленькой компании» сравниться с «хорошей большой компанией», потому что за большую и хорошую много и хорошо голосуют, каждый голос увеличивает рейтинг, и он вырастает до неземных высот. Сказать что это несправедливо — значит, ничего не сказать. Ведь работать в маленькой компании часто оказывается лучше, чем в больших (хотя бывает и наоборот). Руководствуясь этими соображениями, мы начали разработку нового алгоритма расчёта рейтинга, позволяющего получить объективную оценку компании независимо от её размера. Сначала мы просто уменьшали «вес» каждого последующего голоса (чем больше голосуют — тем меньше весит каждый следующий голос). И всё вроде было бы хорошо, только вот смущал тот факт, что первые N голосов определяют положение компании в рейтинге, а остальные голоса играют всё меньшую и меньшую роль. Нам важен голос каждого пользователя, поэтому мы придумали хитрую систему, которая каждые 15 минут (а именно с такой периодичностью происходит перерасчет рейтинга) выбирает N голосов, которые будут обладать наибольшим весом. Тем самым любой голос, независимо от того, когда его подали, может играть существенную роль в формировании рейтинга. Основным критерием при выборе этих N голосов является их близость к среднему значению оценки для данной компании. Голосовать, как вы уже знаете, могут все зарегистрированные пользователи. Но у тех пользователей, которые работают (работали) в компании, знаний об условиях работы в ней больше, чем у всех остальных. Поэтому голоса тех, кто не поленился кликнуть на «я здесь работаю» значат несколько больше.
rating 1.0 beta (выводы)
Если обобщить, то становится понятно, что значение рейтинга компании зависит (в порядке убывания значимости) от:
- Как проголосовал каждый пользователь.
- Количества положительных (>3) и отрицательных (
- Работает (работал) ли голосующий в оцениваемой компании.
Кстати, с сегодняшнего дня на странице с профилем компании можно будет увидеть общее количество проголосовавших. Это число удобно использовать для определения значимости средних оценок. Будем рады услышать ваше мнение и ответить на любые ваши вопросы.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.