Одногруппник, за которого берет гордость. ВСТРЕЧА С ВЫПУСКНИКОМ
Каденов Мират
Образование:
Казахстанский филиал МГУ 2012,
факультет ВМК,
кафедра системного программирования,
красный диплом.
Работа:
- разработчик гоночного симулятора Astana Racer в компании Arta Software (Астана);
- разработчик MMORPG Skyforge в компании Mail.Ru Group (Москва);
- разработчик биллинговой системы в компании Atlassian (Сидней).
Как всё начиналось?
Программировать я начал еще в школе. Поэтому уже на 1 курсе попал в набирающую обороты в Астане компанию ArtaSoftware. Причем я попал в только что открытый отдел, который занимался не основной деятельностью компании. Это был игровой отдел компании, который на тот момент состоял из двух человек. Первой игрой, которую мы пытались реализовать, был космический симулятор с возможностью передвижения в открытом космосе, приземления на планеты, передвижения по ним. Сейчас я уже понимаю, что это было утопией, требующей колоссальных затрат человеко-часов и далеко не каждая крупная компания сегодня попытается такое реализовать. Но тогда это казалось отличной идеей, даже с учетом того, что мы начали писать собственный графический движок.
Как писали игру Astana Racer?
После некоторого времени стало понятно, что разработка продвигается крайне медленно и компания решила переключиться на разработку другой игры. Такой игрой стал гоночный симулятор Astana Racer, прототип которой и принес новый сотрудник компании. Теперь, более реалистично оценивая свои возможности, мы использовали готовый движок с открытым исходным кодом и некоторыми готовыми наработками. На выходе получилась неплохая игра для разработчиков-студентов с командой около 10 человек. Более того это был первый трехмерный гоночный симулятор с ландшафтом Астаны. Игру писал на C++ с OpenGL. Если честно, сейчас бы я советовал новичкам в разработке игр писать на готовых движках, например, на С# с Unity.
Возможности в Москве?
Москва - удивительный город, где работу может найти программист абсолютно любой квалификации. В 2012 году мне посчастливилось попасть на собеседование в компанию Аллоды от Mail.Ru Group, которая на тот момент была хорошо известна уже выпущенной игрой Аллоды онлайн. В то время в активной разработке была их следующая игра типа MMORPG под названием Skyforge. Игра вышла в 2014 году после 2,5 лет разработки.
Что такое разработка больших онлайн-игр?
Программная система MMORPG состоит из двух больших частей: серверной и клиентской части. Весь игровой мир состоит из игроков, каждый из которых имеет программный клиент. Серверная часть состоит из таких частей как: сеть, ввод-вывод, база данных, игровая механика. Клиентская часть состоит из другого набора: сеть, игровой движок, графический движок, интерфейс ресурсов. За каждую часть отвечала отдельная команда разработчиков (около 5-10 человек в каждом отделе). Общее количество разработчиков было порядка 70. Первое правило онлайн-игр: никогда не доверяй клиентским запросам. Вся логика игры находится на сервере.
В какой отдел попал ты?
Я попал в команду серверной игровой механики. Разработка игр часто романтизируется в противовес скучному интерпрайзу. Многие думают, что разработка игр - это, в основном, компьютерная графика. На самом деле, графикой занимался лишь один небольшой отдел. Отличие большого проекта по разработке игр от разработки программиста-одиночки заключается в том, что ты выполняешь технические задания, которые получаешь, например, от гейм-дизайнера. Наша задача реализовать только то, что нам принесли.
Какие интересные задачи ты решал?
Очень интересной задачей оказалась проблема поиска кратчайшего пути. С учетом огромного размера карт, различных открывающихся дверей и деталей ландшафта, она оказалась очень не простой. В итоге получился очень не простой алгоритм. Правда, из-за большой нагрузки на сервере, вспомогательный алгоритм поиска был реализован и на клиентской части.
Почему решил покинуть геймдев?
Во-первых, сам я никогда не был игроманом, поэтому не мог сполна наслаждаться полученным результатом. Геймдев - это сфера развлечения, которую нельзя отнести к самым важным аспектам деятельности человека. Поэтому появилось желание создавать более значимые продукты. Во-вторых, сказались особенности Москвы. Это отличный город, чтобы набраться опыта, но для жизни мне он показался не комфортным.
Как ты оказался в Австралии?
Австралию я не выбирал. Я просто отправил вакансии в крупные компании. Компания Atlassian искала опытного разработчика java с отличным знанием математики. В итоге мне предложили работу в той сфере, которой ранее я даже не интересовался, а именно, биллинговые системы. Биллинговая система нужна для формирования заказа и проведения онлайн оплаты в интернете. Она является вспомогательной функцией для продвижения основных продуктов компании по управлению проектами, базами знаний, которыми пользуются в NASA, Audi, Twitter, Tesla и другие. Что мне сразу понравилось, что конечный продукт приносит больше пользы для других компаний и человечества в целом, по сравнению с разработкой игр.
Что такое собеседование в большую компанию?
1) Тест для первоначального отбора. Он обычно достаточно простой и короткий, цель которого отсеять основную часть.
2) Основное техническое собеседование по алгоритмам и структурам данных. На этом собеседовании очень сильно помогают знания и опыт с олимпиад по программированию.
3) Собеседование по техническим вопросам языка.
4) Тестовое задание. Здесь проводят ревью кода и обращают внимание на детали.
Что делать, если боишься идти на собеседование?
У меня есть одногруппник, который был очень уверен в силах, даже несмотря на то, что он не был готов к собеседованиям вообще. Поэтому он просто ходил на собеседования и проваливал их. Таким образом и выучил java. Он приходил на собеседования, не отвечал на какой-то каверзный вопрос, узнавал правильный ответ и шел на собеседование в следующую компанию. В целом, собеседования проходить очень нужно, так как это снижает вашу неуверенность.
Что еще могут спросить на собеседовании?
Бывают и особенные компании, которые могут спросить что-то продвинутое. В одной компании меня спросили, какие задания я выполнял на практикуме в университете. После того, как ответил, что писал интерпретатор языка, сразу последовал вопрос был ли язык полным по Тьюрингу? И тут очень пригодились знания из университета.
На что можно обратить внимание при составлении резюме?
Во-первых, самое простое что можно сделать, это качественно оформить резюме с технической точки. Это может казаться мелочью, но уже продвигает Вас на 1 ступеньку вверх.
Во-вторых, если у Вас нет опыта работы, то большое влияние будет иметь Ваше образование. Но не стоит надеяться только на диплом. Например, в Москве выпускников с такой же специальностью может оказаться несколько тысяч. Опередить конкурентов помогают дополнительные курсы. Есть достаточно много возможностей пройти сертифицированный курс удаленно или в университете, который, разумеется, нужно добавить в свое резюме.
В-третьих, самостоятельные проекты. Они могут оказаться решающим фактором. Если у Вас есть готовый проект, это дает Вам огромное преимущество. Например, можно пройти курс по разработке мобильных приложений, реализовать простенькую игру и добавить в резюме ссылку на приложение в мобильном магазине. Также высоко ценится участие в разработке продуктов с открытым исходным кодом. Да и просто активный аккаунт на github будет небольшим бонусом.
В-четвертых, университетские проекты. Часто задачи, которые Вы выполняете в университете, могут стать таким проектом. В частности, такую помощь оказывают задачи из курса машинной графики. Если к этим заданиям подойти очень ответственно и творчески, то его вполне можно включить в свое резюме.
В какое направление IT лучше идти, чтобы больше зарабатывать?
Зарабатывать много можно в любом направлении. С одной стороны, хорошие программисты даже на полуживом языке Фортран могут получать большие деньги (здесь играет роль необходимость в поддержке уже написанного софта и большой дефицит практикующих программистов). Или наоборот, например, java-программистов сейчас море. Но часть из них умеют только поддерживать и создавать простой код. Они априори не могут рассчитывать на большой оклад. Другое дело, программист, который понимает, как работать с профайлером, как устроена java-машина изнутри, как вносить кардинальные улучшения в проект в целом и проявляет большую активность. Если подходить к работе основательно и творчески, то это как правило положительно сказывается и на зарплате.
До какого возраста ты собираешься заниматься программированием?
Это очень интересный вопрос. В Казахстане и в России я никогда не видел программистов-разработчиков старше 35 лет в больших компаниях. Меня всегда мучал вопрос: куда же они деваются? Сейчас на работе я вижу много людей, кому за 40. Более того, я недавно познакомился с человеком, который работал в нашей компании разработчиком до пенсии и в 65 лет вышел на пенсию.
Поменял бы ты сейчас деятельность в программировании?
Изначально я был в команде, которая решала бизнес-задачи. Недавно я перешел в команду, которая занимается низкоуровневыми вещами (сети, базы данных). В целом, в нашей компании даже поощряется желание сотрудников переходить в другие отделы. Руководство считает, что если сотрудник засиделся на одном месте, то это плохо - значит, он не работает в полную силу.
Стоит ли идти на третий поток ВМК, если хочется работать в IT?
Почти все мои знакомые-программисты увлекались программированием в школе, либо с первых же курсов. Причем выполняли не только учебные задачи, а обязательно писали что-то свое. Тем, кто уже увлекается программированием очень серьезно, на третьем потоке может показаться не так интересно. Я бы сам сейчас пошел на кафедру первого потока, а именно на кафедру общей математики, на которой я сдал несколько очень интересных спецкурсов по общей алгебре. В целом, обучение на первом потоке никак не мешает работать программистом. Сам университет вряд ли сделает из Вас программиста, если Вы сами этого не хотите.
Какие еще интересные спецкурсы довелось послушать?
У меня была задача сдать как можно больше спецкурсов, что и советую всем. При этом лучше выбирать именно интересные спецкурсы, а не те, которые проще закрыть. Мне очень понравился спецкурс по биоинформатике. В университете есть большие возможности как учиться, так и не учиться. Поэтому я советую Вам взять максимум от учебы в филиале МГУ.
--------------------------------------------------------------------
Сможете ли Вы решить задачи, которые больше всего понравились Мирату на собеседованиях.
1) Сколько элементов в бинарном дереве высоты n?
2) Как сложить массив из вещественных чисел с наименьшими потерями точности?
3) Как проверить есть ли цикл в связном списке использую линейное время и константную память?