Algorithm Developer
Всеволод Серавкин
Мы подготовили серию материалов о нашей супер-команде, которая совершает маленькие подвиги каждый день.
В этой статье мы знакомим Вас с разработчиком-алгоритмистом, Всеволодом Серавкиным.
В Атласе ты - разработчик алгоритмов. Объясни гуманитарию, чем ты занимаешься?
ВС: Если совсем просто - то я разрабатываю программы, которые помогают решать математические проблемы, возникающие в логистике.

Например, решение задачи оптимального (с точки зрения цены) распределения заказов между транспортными средствами с целью получения корректных маршрутов. В литературе эту задачу обычно называют Vehicle Routing Problem или сокращенно VRP.

VRP интересна тем, что время, нужное для вычисления точного решения, с ростом количества заказов растёт очень быстро. Поэтому приходится решать её приближенно, используя при этом достаточно нетривиальные подходы.

Другой важный случай - это задачи, связанные с нахождением кратчайших путей по дорогам между набором точек. Сами по себе они достаточно просты, но когда дело доходит до карт стран целиком, то тут уже приходится использовать хитрые методы, чтобы получить ответ за короткое время.

И это далеко не полный спектр проблем, которые приходится решать. Логистика - область очень богатая на необходимость оптимизации, поэтому новые задачи встречаются постоянно.
Все мои впечатления за время работы в Atlas не смогу уместить и в тысячи слов.
— Кем ты хотел стать в детстве?
ВС: В детстве я постоянно менял свои увлечения и никак не мог остановиться на одном конкретном выборе. Но, что интересно, они обычно не были связаны с разработкой или математикой. Дольше всего продержалось желание стать палеонтологом, но и оно за пару лет сменилось на что-то новое.

И по-настоящему я определился в том, кем же я хочу быть, уже в средней школе - когда увидел у своего дедушки старую механическую счетную машину "Феликс". Меня, привыкшего к компьютерам и калькуляторам, не на шутку заинтересовал вопрос: на этом устройстве есть только сложение и вычитание, но можно ли на нем посчитать, например, корень числа или тригонометрические функции.

С того момента я всерьез заинтересовался математикой и начал прочесывать домашние библиотеки всех родственников в поисках нужной литературы. Жемчужинами среди моих находок было старое издание "Фейнмановских лекций по физике", которое я зачитал почти буквально до дыр, и "Язык программирования C" Кернигана и Ритчи.

К тому моменту я ещё не определился с профессией, но уже точно знал, что моя будущая профессия будет из этого списка.


— Твое самое яркое воспоминание с работы в Atlas?
ВС: Для меня всегда самим яркими впечатлениями были те моменты, когда приложение, в разработке которого я участвую, входит в эксплуатацию. Когда результат долгих трудов целых команд обретает жизнь и начинает решать те задачи, для которых задумывался. Этот процесс бывает разным, может быть долгим и сложным, может пройти быстро и практически незаметно, но запоминается он всё равно надолго.
— Какой самый крутой опыт ты получил в Аtlas?
ВС: Самый крутой опыт для меня - это однозначно оптимизация и масштабирование нашего решения для VRP. Время поиска хорошего приближенного решения для подобных задач растёт быстро с ростом объема входных данных. Поэтому эффективность работы программы тут предельно важна.

Весь процесс разработки и оптимизации был крайне интересен тем, что пришлось применить буквально весь набор фундаментальных знаний, которые дал мне университет и самообразование: умение выбирать и проектировать алгоритмы и структуры данных, познания по операционным системам, архитектуре процессоров, системам типов и устройству компиляторов, опыт профилирования и работы с метриками.
Переход на полностью удаленный режим - максимально дружелюбный.
— Есть ли тебе, куда расти? И если да, то в каком направлении ты бы хотел развиваться?
ВС: Основное развитие я скорее связываю непосредственно с развитием продукта для решения VRP. А для её эффективного решения надо следить за литературой и быть на самом острие науки в этой области, занимаясь прежде всего именно исследовательской деятельностью. И с учетом меняющихся и расширяющихся требований логистики к планированию, новые вызовы и интересные задачи возникают постоянно.
— Как тебе дался переход на удаленку?
ВС: У меня достаточно много опыта с удаленной работой. С самых первых мест работы, я всегда работал либо в полностью удаленном либо в частично удаленном режимах. Поэтому для меня комфортно и привычно работать из дома, где я могу полностью сосредоточиться на своих задачах.


А с учётом того, что в нашей компании все процессы разработки изначально были предельно дружелюбны к удаленной работе, то никаких проблем с переходом на полностью удаленный режим не возникло.
— Развил ли ты новые навыки на удаленке?
ВС: Я очень любил, работая из офиса, на обед зайти в какой-нибудь ресторан азиатской кухни. Когда перешел на полную удаленку в связи с карантином, стало очень уж не хватать блюд подобной кухни. Решил по такому поводу освоить приготовление на воке и теперь очень доволен, что могу готовить себе, например, яки удон или якисобу. Теперь думаю дальше пойти по блюдам японской кухни.
— Какими 3-мя словами ты бы смог описать Atlas Delivery?
ВС: Очень сложный вопрос для меня, все мои впечатления и опыт за время работы в компании я не уверен, что и в тысячи слов смогу уместить.
— 5 советов для "джуна" в твоей профессии?
ВС:

1. Фундаментальные знания в нашей профессии - безусловно важны. Они могут потребоваться совершенно внезапно и в тех задачах, где их не ожидаешь.

2. Не надо воспринимать технологии в IT как магию.
Сейчас в исходный код практически каждой библиотеки можно заглянуть и точно узнать, как она работает. И иметь хотя бы базовое представление, как используемая платформа работает, сильно поможет при разработке.

3. Быстро читать и разбираться в чужом коде.
Это незаменимый навык, который понадобится буквально во всех задачах и на любых проектах.

4.Помни, программы пишутся для пользователей.
Подробное понимание того, как и кем будет использоваться ПО, может помочь при проектировании даже в совсем технических проектах.

5. Разработка не заканчивается на одном только написании кода.
Тестирование, развертывание и эксплуатация - это настолько же важные части жизненного цикла приложения. Поэтому стоит сразу держать в голове то, как ПО будет проходить через эти циклы.


Хотите присоединиться к нашей команде?

Это просто: отправляйте свое резюме прямо сейчас. И мы будем рады познакомиться с Вами лично.
Читайте также