Автоматизация – это всегда шаг вперед. Мы не мечтаем о мире, где машины будут работать за нас, но было бы неплохо переложить на их плечи большую часть рутинных дел. Международная IT-компания Zensoft с офисом в Минске как раз сейчас занимается разработкой приложения, которое снижает влияние человеческого фактора в управлении проектами. Программа позволит более рационально подбирать исполнителей под имеющиеся задачи, а также поможет сотрудникам узнать свои сильные и слабые стороны.
Проект назвали InHouse – он разрабатывается для внутреннего пользования. О том, как наперед просчитать эффективность каждого сотрудника, порталу KV.by рассказали Роман Нагибов (Machine Learning Engineer) и Андрей Рыхальский (Lead Software Engineer).
О потребностях и рациональности
Чтобы объяснить суть проекта, нужно сначала рассказать о тех потребностях, которые привели нас к разработке приложения. Когда у компании появляется новый заказ, руководству нужно понять, сможем ли мы его выполнить. Для этого необходимо иметь точные данные о сотрудниках: кто какими технологиями владеет и, что не менее важно, на каком уровне. Если заказ не потянуть из-за нехватки специалистов, лучше сразу от него отказаться.
Помимо этого, одному человеку сложно уследить за всем коллективом и точно определить объём знаний сотрудника и их глубину по каждой из технологий. Проанализировав наши требования, мы пришли к выводу, что эту задачу можно решить с помощью машинного обучения. О том, как именно мы его применили и какие получили результаты, мы расскажем на конференции AI-Men 2 июня.
Наше приложение поможет менеджеру проекта наиболее эффективно распределить имеющиеся задачи среди членов команды. Как результат, компания способна делать достаточно точные прогнозы на предмет объёмов работы, которые мы можем выполнить за определённый период, а сотрудники получают задачи, максимально отвечающие уровню их навыков в соответствующих технологиях.
Машина не принимает окончательное решение
Наша инфраструктура использует JIRA для управления задачами, реализуя поверх неё свой функционал, отдельные модули которого построены на машинном обучении. Ключевыми характеристиками каждой задачи и каждого сотрудника являются экспертизы, иначе говоря, навыки, а также соответствующие им уровни от 1 до 9. В случае задачи уровень определяет её сложность, а в случае сотрудника – его квалификацию в рамках данной экспертизы.
На подготовительном этапе мы вручную составляем список экспертиз и соответствующих им уровней для каждого сотрудника. Точность оценки здесь важна, но тем не менее любая ошибка будет рано или поздно скорректирована алгоритмом в зависимости от того, насколько успешно сотрудник справляется с задачами по той или иной экспертизе.
Кроме того, в момент поступления каждой задачи, менеджер проекта и ведущий разработчик соотносят её с существующими в системе экспертизами и оценивают сложность каждой из них. С течением проекта объём входных данных будет расти, анализу будет подвергаться статистика по уже выполненным задачам, таким образом к числу факторов, влияющих на результат работы алгоритма добавятся такие, как способность сотрудника укладываться в сроки, его локация (принадлежность к одному из офисов компании), его текущая загруженность и другие.
Помимо этого мы проводим семантический анализ задач, обрабатывая их текстовое описание в JIRA. Схожесть описания вновь поступившей задачи с уже выполненной повышает в глазах алгоритма способность сотрудника справиться с новой задачей, таким образом повышается вероятность того, что именно он будет предложен как наиболее подходящий для этой задачи исполнитель. На применённом здесь NLP решении мы также остановимся подробнее в рамках выступления на конференции.
В качестве результатов мы получаем две очень ценные характеристики: оценку навыков каждого из сотрудников и рекомендации по назначению исполнителей для поступивших задач. Здесь крайне важно, что алгоритм предлагает исполнителя, а также описывает причины своего выбора, но последнее слово всё равно остаётся за менеджером проекта, который способен учесть неочевидные для машины нюансы в сложной ситуации, например, из двух одинаково подходящих на очень ответственную задачу сотрудников выбрать того, кто всегда приходит вовремя, потому что рано утром по ней уже нужно будет отчитаться заказчику.
Мы не знаем заранее, что такое хорошо, а что такое плохо
Мы не можем знать заранее, насколько те или иные факторы влияют на производительность. Более того, один и тот же фактор может оказывать диаметрально противоположное влияние на разных сотрудников: кто-то лучше и быстрее справляется с задачей, когда коллеги по проекту находятся в том же офисе, а кто-то оказывается эффективнее, общаясь с командой лишь удалённо. Эти данные также анализируются машиной, и результаты этого анализа учитываются при подборе оптимальных исполнителей задач.
Сотрудники также обладают массой других характеристик: пол, возраст, стаж работы, семейное положение и многие другие. В силу того, что их список едва ли не бесконечен, учесть все – значит создать серьёзную вычислительную нагрузку на алгоритм, получив взамен довольно сомнительный прирост в точности оценок, поэтому ещё на этапе проектирования мы приняли решение не учитывать эти факторы. Оно было также продиктовано тем, что влияние косвенных параметров на работу сотрудника уже учтено в том, справился он с задачей в срок или нет.
Машина не простит человека
На финальном этапе, когда менеджер проекта приступил к тестированию нашего приложения, мы столкнулись с проблемой перевода результатов его работы на язык, максимально понятный человеку. К примеру, сейчас машина может сообщить, что один сотрудник подходит для решения задачи на 10% лучше другого, и пояснить, что, хоть его уровень в необходимой экспертизе ниже на 2 пункта, он укладывается в сроки на 25% чаще.
В условиях, когда разные задачи обладают разной важностью, разной срочностью, а некоторые из них также требуют строго определённого порядка выполнения, менеджер должен иметь возможность соотнести прогнозы машины с реальностью и, скажем, получить ожидаемое время выполнения задачи каждым из сотрудников вместо абстрактного значения.
В заключение нельзя не упомянуть и о некоторых опасениях. У нас в офисе уже прижились шутки про Большого Брата и Всевидящее Око, от которых не утаится ни один промах сотрудника на проекте. В то время как менеджер проекта способен понять реальные причины, по которым были сорваны сроки (коих может быть немало: перебои с интернетом, недомогание или помощь товарищам по команде), машина безжалостно отметит про себя, что сотрудник переоценен, и снизит его оценку по экспертизам, относящимся к невыполненной в срок задаче.
Уравновешивающим фактором здесь является то, что все время от времени оказываются в таких ситуациях, поэтому на оценку сотрудника относительно коллег это сильно не влияет. Таким образом, каждый из нас получает адекватную и беспристрастную оценку своих навыков, а компания – уверенность в выполнении поставленных задач точно в срок.
Горячие темы