Я родился в Краснодаре, но прожил там совсем немного, лет до четырех. С этого возраста рос в Подмосковье, в городе Видном.
Учился в гимназии с гуманитарным уклоном. Может, поэтому сейчас, когда я занимаюсь в основном Machine learning, меня так тянет к Natural language processing — той части машинного обучения, которая связана с текстами.
После гимназии поступил в МЭСИ (Московский государственный университет экономики, статистики и информатики) на специальность «математическое обеспечение администрирования информационных систем». Когда был на последнем курсе, его объединили с Плехановским университетом. Так что окончил я РЭУ имени Плеханова. Сразу после университета не стал работать по специальности, искал себя: занимался видеографией, музыкой, какое-то время даже давал концерты с группой. Больше полутора лет торговал на московской бирже. Учитывая, что большинство новичков теряет депозит уже в первый год торгов, можно сказать, что я довольно успешно там поработал. Долго торговал в плюс. Потом был провальный месяц, после которого решил сделать перерыв. По итогу, с учетом налогов, я остался при своих.
Чтобы лучше понимать биржевые процессы, решил пойти на курс «Яндекс.Практикума» по Data Science. Учеба поглотила, и как-то незаметно для меня биржа отошла на второй план. К активной торговле так и не вернулся.
Когда прошел курс, почти сразу получил предложение от «Ростелекома» в департамент HRM-технологии и аналитики.
Компания огромная, штат порядка 100 тыс. человек во всех регионах страны, расположенных в разных часовых поясах. Очевидно, что такая крупная компания нуждается в автоматизации большинства внутренних процессов. Вручную все это делать довольно сложно. Необходим свой функционал, над которым я и работаю. Иногда это очень нетривиальные проекты и задачи в плане именно машинного обучения.
Один из примеров — опросы сотрудников, которые часто проводятся в компании. В опросах есть текстовые поля, которые заполняются в свободной форме. Чтобы проанализировать большое количество ответов вручную, потребуется много времени и усилий. Поэтому с помощью машинного обучения мы пытаемся каким-то образом обобщить текст, кластеризовать. Например, 100 тыс. ответов разделить по категориям с общей темой. Так становится виднее, что волнует ответивших или что им нравится.
И это довольно простая задача: надо каким-то образом превратить тексты в цифры, дальше уже можно использовать классические методы машинного обучения. Другой вопрос, как в эти цифры вместить побольше смысла, чтобы обучение модели принесло какую-то пользу. Например, если получится передать расположение текстов в смысловом пространстве, те из них, что «ближе», будут больше похожи друг на друга.
Меня вообще впечатляет, что можно представить текст как точку в пространстве. Оно, правда, скорее всего, будет не двухмерным, а, например, 768-мерным, но можно с помощью алгоритмов снизить размерность до трех и вместо таблицы смотреть уже на интерактивный 3D-график: вот в этом скоплении точек про стабильность, в этом про зарплаты, а вот эти ответы как-то далеко от остальных, видимо, что-то необычное, интересно, что там, давайте приблизим.
Расскажу еще про Unsupervised learning. Грубо говоря, берем готовую модель (нейронную сеть), которая «читала» только Достоевского и всю Википедию. Говорим ей: «Почитай еще наши опросы». Она «вникает», и, когда мы снова рисуем график, видим, что точки перераспределились, новые плотности появились. Возвращаемся к таблицам, видим, что предлагаемая ею разметка стала больше похожа на ручную, сделанную человеком. Модель как бы «разобралась».
Задач много и по другим направлениям. Из самого свежего — прогнозирование развития карьеры. Нужно угадать, поменяет ли сотрудник должность в следующем месяце, и если да, определить вероятное направление. Это наиболее простой вариант. Если поймем, что успеваем написать модель сильно до сроков и все работает хорошо, можно будет увеличить горизонт предсказания. Или поработать над более интересной визуализацией. Например, в следующем месяце ваш сотрудник с вероятностью 10% уволится, 50% — останется на должности, 25% — станет руководителем направления и 15% — переведется в другой отдел. Тогда можно для каждого сотрудника сделать график, можно работать над увеличением «горизонта» предсказания.
В столь масштабной компании, безусловно, существует огромное количество отчетов, а в них, кроме точности, важна еще и наглядность. Например, для отчета по количеству сотрудников, находящихся в разных офисах по всей России, можно сделать карту. Но не простую, а максимально детализированную — чтобы можно было скроллить, увеличивать, уменьшать, а когда наводишь курсор, видеть количество сотрудников, посетивших офис за месяц. А еще снизу ползунок — и можно месяц переключить. Такое я тоже делал.
Это было непросто, много подводных камней. Например, у нас есть Чукотка, через которую проходит 180-й меридиан. На всех подобных готовых решениях по России, которые я видел в интернете в открытом доступе, данные правее этой линии не отображаются. А у нас отображаются. Но потанцевать с бубном, конечно, пришлось. Если коротко, пришлось сделать на карте две Чукотки.
Как бы это все ни было интересно, больше всего удовольствия я получаю от автоматизациии рутинных процессов. Многим может показаться, что по сравнению с задачами машинного обучения это довольно скучно. А мне наоборот — суперинтересно и просто приятно осознавать, что я экономлю человеко-часы за счет того, что пишу код.
В основном это выглядит так: у меня на удаленном рабочем столе лежат файлы, каждый день они обновляются, на их основе я каждый день формирую отчеты для нескольких департаментов. Сейчас я целиком автоматизировал весь процесс. И если раньше приходилось сначала копировать файлы, затем конвертировать в Excel, дальше создавать сводную таблицу, потом сохранять в Excel, запароливать и только потом отправлять в двух последовательных сообщениях (в одном таблица, в другом пароль). То сейчас все это автоматически запускается, мне нужно только ввести подтверждение отправки.
В «Ростелекоме» работаю уже более полугода. Расскажу, как я сюда устроился. Компания «захантила» меня почти сразу после окончания курса. Сначала звонок по телефону, несколько довольно простых вопросов по программированию, потом небольшое тестовое задание и созвон в зуме уже с будущей командой. Через пару недель я приступил к работе.
Компания сейчас работает в комбинированном формате — частично мы на удаленке из дома, частично в офисе. Здесь нет давления, можно спокойно работать дистанционно в свободном, удобном для меня графике. Главное — качественно делать свою работу. А где и как, все зависит от моих предпочтений. В офис езжу не очень часто. Хотя офис у нас классный. Как ни странно, в офисе сложно сосредоточиться на работе: хочется поболтать с коллегами (обожаю свою команду), выпить вместе кофе, сходить во внутренний дворик. Офис находится далековато от дома, иногда не хочется тратить несколько часов на дорогу. Но если приезжаю, мы с коллегами подолгу общаемся на нерабочие темы, у нас много общих интересов. Так что поездка в офис — это возможность не только провести рабочие встречи, которые зачастую более эффективны офлайн, но и повод неформально пообщаться.
Как правило, у нас нет жестких дедлайнов. Наоборот, бывало, что на рабочем видеозвонке руководитель видит, что я очень уставший, говорит: «Не надо так. Ты выгоришь. Сегодня отдыхай, иди, например, прогуляйся». Поначалу это для меня было чем-то из области фантастики.
Вообще, когда пришел сюда работать, увидел, что многие представления о «Ростелекоме» оказались мифами и стереотипами. Раньше казалось, что это огромная госкомпания — забюрократизированный и неповоротливый гигант. Лично я с проявлением этого не сталкивался ни разу. По моим впечатлениям, здесь нет бюрократии, какого-то суперформального контроля, в компании работает много молодых и активных ребят, а процессы не выглядят затянутыми.
Еще одно большое преимущество, особенно для молодежи — это возможность учиться и развиваться в компании. У нас есть большая корпоративная библиотека и крутой онлайн-университет, где можно абсолютно бесплатно хоть каждый день проходить курсы — как по софтам, так и хардам. Я начал проходить курс «Введение в DevOps». Есть даже примеры, когда сотрудник из другого подразделения, окончив внутреннюю Школу программирования, переквалифицировался в айтишника.
За относительно короткое время работы в компании у меня была возможность проявить себя — это дало небольшое повышение зарплаты. Приятно. По моим ощущениям, в программистском сообществе сейчас такое настроение: больше всего получает тот, кто раз в полгода меняет работу, надо постоянно просить прибавку, ходить на собеседования, даже если работа тебя устраивает. Все это кажется слишком изматывающим. Мне нравится, что компания заботится о своих сотрудниках, дает возможности для развития и стабильность. Надеюсь, и дальше так будет.
Говорить о планах на будущее сейчас несколько преждевременно. Мне нравится то, чем я занимаюсь, хочу продолжать развиваться в этом направлении. Может, в какой-то момент, когда я стану серьезным экспертом в своем деле, у меня даже появится своя команда, но пока об этом говорить рано.
Фото: Александр Лепешкин