История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух

Давайте для начала представлюсь - меня зовут Илона, я из Питера.

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


Когда в студии возникли потребности в расширении, сперва я со всеми в команде поговорила, чтобы определиться, так ли нам нужен еще один разработчик, и если да, то зачем, за что он будет отвечать и что мы вообще от него хотим (и что готовы ему предложить).

Эта статья не претендует на истину в последней истанции. Это опыт одной небольшой студии и наше видение всего этого процесса.

В других компаниях это может сильно отличаться.


Был составлен план:

1. Определиться с требованиями к вакансии,
2. Решить, на каких основаниях мы будем отбирать кандидатов на собеседование (тестовое),
3. Что будет в тестовом,
4. Как удобно построить процесс отбора так, чтобы не задолбать нашего старшего разработчика (всё равно в итоге задолбала),
5. Как построить собеседование по итогам тестового, и что спрашивать,
6. Что на самом деле повлияло на наш выбор.

Всего 6 пунктов на одного маленького скромного Джуниора. Но затянулось это почти на 1,5 месяца.

0. ТУТ БУДЕТ ОТВЕТ О ТОМ, ПОЧЕМУ JUNIOR

На тот момент мы были еще маленькими (настолько, что диздок писала я, а не геймдизайнер, которого у нас тогда еще не было).

И уже было видно, что основному разработчику нужна помощь, наклёвываются еще проекты и команду стоило бы расширить.


Как? Бюджет ограничен, требований много. Значит, надо сокращать требования к будущему сотруднику и думать, каким образом не ввязываться в сложные проекты ближайшие полгода (всё равно ввязались).


Окей, решено, значит берем Джуниора, даем ему сперва простые задачи и постепенно усложняем (и повышаем зп). Принято.

1. ОПРЕДЕЛИТЬСЯ С ТРЕБОВАНИЯМИ К ВАКАНСИИ

Просто приведу текст вакансии:

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

2. РЕШИТЬ, НА КАКИХ ОСНОВАНИЯХ МЫ БУДЕМ ОТБИРАТЬ КАНДИДАТОВ (ТЕСТОВОЕ)

Опыт разработки и ответы на устные вопросы мало что скажут. Если нет своего проекта, значит нужно тестовое.


Но тогда одни пойдут делать тестовое, а другие не факт, что сделали свою игру сами.


Поэтому для всех соискателей равные условия:


• Кому-то будет хоть какая-то практика (таких было больше половины),

• Кто-то покажет себя во всей красе (4 человека из ~50 соискателей),

• А кто-то осознает, что это не его, бросит всё и займется интернет-маркетингом (остальные).


Для нас (работодателя и будущей команды) это:


• Оценить адекватность (боже мой, какие кадры только не попадались!),

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

Реакция человека на то, что нам не понравилось его тестовое. Перед этим он хамил, обзывался и угрожал. На следующий день, видимо, одумался

• Увидеть ход мыслей (логику) при решении задачи,

• Увидеть код,

• И самое важно для всех - то, насколько красиво человек сделал свою работу (ниже поясню).

Еще мы всем давали фидбек по коду, с указанием, что хорошо, а что и как можно сделать лучше (со ссылками на мануалы).


Вернемся к красоте


Игру всегда сперва открывала я. Если она не запускалась, запускалась криво, то давали еще один шанс.


Если она запускается, но порядок игры не совпадает с вводными условиями, тоже на доработку.


Если игра запускается, играется, то на ревью нашему старшему.


НО!


Если игра выглядела отвратительно, если использовались цвета вырви глаз, если не было элементарно UI - игра сразу минусилась. Жестко. И навсегда.


Мы делаем игры, и какие бы баги у нас не были - люди любят сперва глазами, а потом уже всем остальным. Если у человека нет вкуса, если он сдаёт работу на отъебись ("а чо вам еще надо, она же играется"), если у него нет стремления сделать лучше, то зачем нам такой человек?

Я же не дизайнер!

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

Тестовое - это твоя самопрезентация.

Никто никогда не запрещает взять и скопировать дизайн любой игры из стора, а в интернете есть тысячи бесплатных наборов UI элементов.

Сделай красиво. И работодатели к тебе потянутся.


Кстати, у соискателя с самым приятным визуалом был самый красивый код, хоть реализация немного и страдала.

Мы его взяли. В его исполнении всегда всё было четко.

3. ЧТО БУДЕТ В ТЕСТОВОМ

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

Схема задания

Тестовое задание на Junior Unity разработчика:

1) Шарик якобы двигается по коридору, но по факту это пол с потолком двигаются по экрану
2) В полу и потолке есть дыры. Нажатие на экран меняет гравитацию и шарик перепрыгивает с пола на потолок
Повторное нажатие возвращает его вниз
3) Задача игрока - не допустить, чтобы шарик провалился в дырку
4) Необходим минимальный игровой интерфейс: пауза, старт, подсчет очков и пр.
5) Писать на Unity, можно 3D, можно псевдо-2D
Рандомный размер дыр и платформ
Главное, чтобы игралось, работало и не ломалось
Никакой физики и настоящей гравитации не требуется. Должен быть только работающий прототип.
По предварительным прогнозам, тестовое задание должно занять несколько часов.
Когда будешь делать задание, опиши этапы, и сколько часов что заняло
Когда выполнишь, заливаешь исходники в облако и даешь ссылку

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

4. КАК УДОБНО ПОСТРОИТЬ ПРОЦЕСС ОТБОРА ТАК, ЧТОБЫ НЕ ЗАДОЛБАТЬ НАШЕГО СТАРШЕГО РАЗРАБОТЧИКА (ВСЁ РАВНО В ИТОГЕ ЗАДОЛБАЛА)

Часть этого процесса я описала выше - перед ревью разраба программу на элементарные действия всегда тестировала я.


Не кидала программы по одной, а раз в 3-4 дня выделялось несколько часов на разбор тестовых и написание комментариев, отдельно от основного рабочего процесса. Но, это получалось далекооо не всегда :)


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

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

Именно этого мы и добивались - оскорбить и унизить как можно больше людей

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

Да!

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

А это мимими^^


По итогам всех тестовых было проведено всего 4 собеседования.

5. КАК ПОСТРОИТЬ СОБЕСЕДОВАНИЕ ПО ИТОГАМ ТЕСТОВОГО И ЧТО СПРАШИВАТЬ

Несколько общих вопросах о человеке, увлечениях, такой small talk, чтобы расслабиться и настроиться на волну - собеседование будет долгим.


Несколько вопросов о том, что читает, кого смотрит, какие профессиональные и технические блогеры нравятся, как повышает свои навыки и к чему вообще лежит душа (у одного душа лежала в противоположную от нас сторону, и не смотря на то, что его код и ответы были лучшими, мы его не взяли!)


Потом общие вопросы с уклоном в геймдев - это позволит понять, на одной ли волне мы все вместе будем делать игры.

В какие игра играет на телефоне, консольные, какие нравятся больше всего? Почему? А какая для тебя игра самая красивая? А самая крутая механика? А монетизация? А почему? А какую игру ты бы сам хотел сделать? Почему вообще геймдев?


И на десерт, список вопросов для собеседования по Unity:

1. Пул объектов, знакомы? Работали, представляете, что это такое и для чего делается?
2. Знакомы с разными Update? (FixedUpdate, Update, Late Update)
3. Работали с Coroutine? (IEnumerator) Для чего они нужны? Можно ли прерывать их выполнение извне?
4. Чем плох метод Find?
В чем ошибки и как можно оптимизировать следующий код:
История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование
5. Работали ли с Particle System?
6. Работали с анимациями?
7. Работали ли с Joint'ами?
8. Unity UI? Canvas Group?
9. Для чего нужны Layers в Unity?
10. Services (реклама и пр.)
11. AI
12. Profiler
13. Frame Debuger

6. ЧТО НА САМОМ ДЕЛЕ ПОВЛИЯЛО НА НАШ ВЫБОР

Помните идеального кандидата, которого мы не взяли?


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

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

Так и сказал.


Ну ладно, выход сами найдете, спасибо, до свидания, мы вам перезвоним (перезвонили в этот же день).


Оставшиеся 3 кандидата:

1. Хороший код, хорошие ответы.

Своя игра в сторе приносит небольшие деньги, ему ее продвигают. Пишет еще одну. И всё. У него даже хобби никаких нет.

Человек одновременно в геймдеве и одновременно вне его. Сам по себе. И ему хорошо. Я даже не помню, как он выглядел и что у него была за игра.

Это не командный игрок. Нас много, и нам всем друг от друга что-то нужно (например, надеть коробки как рыцарские доспехи и устроить бои или потребовать покормить динозаврика).

История о том, как мы искали одного Junior Unity разработчика, а в итоге взяли двух Gamedev, Разработка, Игры, Работа, Студенты, Длиннопост, IT, Собеседование

Feed me!

2 и 3. У одного красивая игра и средний код. У другого - хороший код, но ответы не очень - он очень сильно нервничал, забывал ответы, потел и заикался (в жизни совсем не такой). А еще он учился в Варгейминге.

Итоговые оценки у первого были значительно выше, чем у второго. Ответы второго были вообще самыми слабыми из всех.

И мы взяли их обоих.

Потому что можем.


На самом деле, я у директората требовала первого. А они хотели второго (Варгейминг же). Вот такое субъективное мнение.

И разразился горячий спор. И длился он 7 дней и 7 ночей. Всё окружающее было испепелено, а наши разработчики с художниками сбежали к конкурентам, а хозяева БЦ выставили счет за поджог.

Пока директорат не стукнул по столу и не рявкул:

- Берем обоих! Одного тебе, другого мне!

На проекты мы их реально потом так и делили. Пока я одинаково не полюбила обоих.


Что еще объединяло этих 4 кандидатов?

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

2. Участие в хакатонах, конференциях. Это отличный опыт на других посмотреть и себя показать.

3. Наличие ссылок на GitHub. Да, мы их смотрели.

ВЫВОДЫ

1. Внимательно читайте требования к резюме и подгоняйте резюме под конкретную компанию (и себя тоже).


2. Соглашайтесь на тестовое. Особенно если вы джун. Разберитесь, сделайте красиво и положите в свое портфолио. Мне написали несколько человек с просьбами просто скинуть тестовое, без претензий на вакансию. Это круто


3. Делайте красиво! Делайте лучше, чем можете. Каждый новый проект делайте лучше всех своих предыдущих вместе взятых. Даже если это просто тестовое.

Рано или поздно это окупится.


4. Не дергайте лишний раз того, с кем общаетесь в компании. Как бы тупо это не звучало, вас много, а человек один, и у него есть другие обязанности, которые нужно выполнять (вырезать дырки под руки в коробке).

Это раздражает и уже настраивает сотрудника против вас.

Соберите все вопросы в одно сообщение, не отправляйте их по одному.

Если это в чатиках, спросите, когда удобно сесть и пообщаться. И не убегайте посреди разговора. Вам могут уже не ответить


5. Готовьтесь к собеседованию. Не нервничайте на нем.

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

Не несите чушь, не говорите лишнего, не хвастайтесь. Говорите ровно то, что вас спрашивают. Но не то, что хотят услышать. Будьте честными с потенциальным работодателем и самим собой.


6. Даже если вы всё сделали идеально, всё равно не факт, что вас возьмут. Грустно, но факт.

Личностный фактор всегда будет ролять.

Мы ищем людей в команду под себя. Чтобы не только будущему сотруднику в компании было комфортно, но и компании было комфортно с ним. И не всегда выигрывают знания.

Поэтому развивайтесь в разных направлениях. Вашего потенциального начальника в компании мечты может элементарно подкупить ваша любовь, например, к сноуборду :)


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


Мой канал в Телеграме @job_junior


Там же можете задавать мне вопросы про первую работу @ viis_w

Лига Разработчиков Видеоигр

6.6K постов22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

34
Автор поста оценил этот комментарий

Ужасно противоречивое впечатление от статьи. С одной стороны написано позитивно. С другой - столько откровенной чуши.

1. Как справедливо было замечено, программист - не дизайнер. Если говорите про уважение к коллегам, то дайте вместе с задачей и визуал для оформления игры.

2. "Кандидат №1" - тут вообще дикая ересь: "он не командный игрок". И? Во-первых, это и не написано в вакансии. Во-вторых, это никак не соответствует должности. В третьих, командный игрок - это тот человек который вовремя и качественно закрывает задачу, а не тот кто быстрее всех надевает на себя коробки.


3.

Грустно, но факт.
Личностный фактор всегда будет ролять.

Тут тоже согласен.


4. В описанном ниже разделе можно запутаться. Для тех кто запутался - первый это второй, а второй - это третий.


2 и 3. У одного красивая игра и средний код
Итоговые оценки у первого были значительно выше, чем у второго.

5. Идеальный кандидат, которому мы нафиг не сдались. Тут претензий к автору нет. Просто интересно, почему компании чаще всего выдвигают требования к вакансии такие, что кандидатам, которые под эти требования подходят - они нафиг не сдались. Причём обычно из-за зарплаты. Это касается многих игровых студий, не важно больших или не очень.


6. Некоторые шутливые моменты выглядят крипово, хоть я и понимаю что это шутка. Например тут:

Как бы тупо это не звучало, вас много, а человек один, и у него есть другие обязанности, которые нужно выполнять (вырезать дырки под руки в коробке).

7. Скрины сообщений, где люди оскорбились не говорят ни о чём. Они могли ведь и справеливо оскорбиться. Так что их либо публиковать с фидбеком (что не совсем этично), либо убрать полностью и оставить пересказ со своих слов.


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

раскрыть ветку
46
Автор поста оценил этот комментарий

Чот, imho, какие-то требования завышеные, как ни крути.


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


Тут любому удовлетворившему всем этим требованиям, скорее будет не нужна такая на тот момент еще маленькая команда, с ограниченным бюджетом, да еще и лепящая наверняка казуалки для мобилок.

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

раскрыть ветку
14
Автор поста оценил этот комментарий

Если игра выглядела отвратительно, если использовались цвета вырви глаз, если не было элементарно UI - игра сразу минусилась. Жестко. И навсегда.

Вот что бывает, когда даёшь слишком много прав хрюше в деле отбора кандидатов. Сколько не встречал хороших программистов, многие далеки от понятия "дизайн" и делают именно вырвиглазный UI.

Мы делаем игры, и какие бы баги у нас не были - люди любят сперва глазами, а потом уже всем остальным. Если у человека нет вкуса, если он сдаёт работу на отъебись ("а чо вам еще надо, она же играется"), если у него нет стремления сделать лучше, то зачем нам такой человек?

Речь не про на отъебись, в нормально компании дизайн делает, внезапно, дизайнер, а от программиста нужно ожидать хороший код.

раскрыть ветку
19
Автор поста оценил этот комментарий

А теперь как бы это сделал нормальный програмист:
Открывает гугл и пишет "вакансии юнити джуниор питер", смотрим что там есть, отправляем 10-ти конторам фековые резюме и смотрим как дальше действуют более опытные наниматели.


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


Но вообще, если быть точным, то все эти штуки типа "опыт интеграции рекламных сервисов" стремные. Любой программист такую ерунду изучит за два дня и выделять это в отдельный критерий. Ну хз.

Плюс C# в юнити не сильно отличается от версии к версии. Лучше писать опыт работы с dotnet %версия%.


Да и если точно говорить, то зачастую те тестовые задания, которые дают на должность мобильных разрабов в те сроки, в которые требуют его написать, не могут показать реальный уровень.
За 8 часов можно один модуль написать простенький и то, если ты до этого 16 часов его обдумывал - вот где архитектура, а написать простенький контроллер движения...ну хз. Это даже не серьезно, никакого точного уровня там не понять.


А, и да PlayerTransf должна быть написана с маленькой буквы, т.к. она объявлена внутри метода.

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