Самообразование в геймдеве: а оно нам надо?

12 марта 2015, 16:00

Что за биологический вид этот пресловутый «геймдевелопер»? Вопреки расхожему мнению, далеко не всегда это породнившийся с X-box’ом чудак, коммуникативная активность которого сводится в рабочее время к рукопожатию или кивку при встрече с коллегами. Оказывается, это разносторонний и неравнодушный человек, всё время ищущий что-то новое. Мы выяснили, что с недавнего времени команда zGames по собственной инициативе организует тренинги, во время которых программисты делятся друг с другом опытом, ценными идеями и прочими феерически полезными благостями, которые впоследствии активно применяются в работе.

Читать далее

Итак, зачем геймдевелоперам заниматься самообразованием? Отчего не угасает их пламенная любовь к землистому вкусу гранита науки? 

Мы выловили нескольких инициаторов идеи тренингов и с пристрастием допросили их — что, зачем и почему. На вопросы отвечали: Артём Воробьев (технический руководитель zGames — на фото в центре), Артём Мерц (ведущий программист — на фото справа) и Иван Березовский (ведущий программист — на фото слева).

Как зародилась идея тренингов

Артём В.: Я точно помню день, когда мы решили, что нужно ввести обучающие занятия. Кто-то из junior-разработчиков показал нашим лидам кусок кода и спросил, когда будет удалён из памяти объект. Ребята стали объяснять, к обсуждению подтянулись другие разработчики, и выяснилось, что многие в принципе не знали, как работает сборщик мусора. Этот пробел достаточно критичен для разработчика, потому что, если он пишет игры на .NET и этого не понимает, то он, скажем так, машет лопатой, не загребая земли. Мы поняли, что вопрос с обучением команды надо решать комплексно, и уже на конец недели назначили первое обучающее занятие. Начали с тех тем, по которым у нас уже были материалы.

Артём М.: Стали выяснять, какие ещё у нас есть проблемные места, и накидали сразу же сходу штук 30, а в процессе добавилось ещё около 15.

Артём В.: В итоге сейчас висит уже штук 45 тем, из которых 8 мы уже рассмотрели. Плюс после каждого тренинга одна-две темы добавляются. Сначала мы планировали собираться раз в неделю, но уже после первой встречи поняли, что это слишком редко — нужно как минимум дважды.

«Выборы, выборы…»: о спикерах

Артём В.: Если тема узкая и новая, но в ней под силу разобраться junior-разработчику, то её готовит он. И сам поймёт лучше, и объяснить сможет более понятно, прямо с азов.

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

— А на тренингах на простые темы типа сборки мусора сильные программисты тоже присутствуют?

Артём В.: Да, присутствует вся команда по возможности. Это бывает полезно. Плюс ещё очень важна качественная обратная связь.

«Но я стараюсь быть лучше»: от эскаписта к энтузиасту

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

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

«А вы чьих будете?»: о формате встреч

Артем В.: У нас уже есть опыт организации мероприятий в объединённом формате, когда на внутренние тренинги мы приглашали гостей из числа желающих. Года два назад мы делали подобную обучающую встречу в рамках «Душевного четверга», это такой хобби-клуб в Softeq. На неё пришли люди не только из нашей команды, но и из других отделов. Тогда мы и выяснили, что не получится эффективно работать с разношерстной аудиторией, потому что неизвестно, на каком уровне детализации раскрывать тему. Люди из нашей команды — достаточно сильные, им можно всё рассказать быстро и на глубоком уровне. А для людей, работающих в других областях разработки ПО, привычная для геймдевелоперов тема может быть абсолютно новой. И тогда, если начать подстраиваться, оказывается, что разговор либо непонятен одним, либо не интересен другим. Поэтому тренинги в том формате, в котором они проводятся сейчас, мы планируем делать только для нашей команды.

— Тренинги вы проводите в рабочее время?

Артём В.: Нет, и подготовка, и проведение — всё это в наше свободное время. Но я ни разу не слышал недовольства от ребят. Видимо, всё-таки ценность тренингов перевешивает. Хотя, конечно, хотелось бы внести самообучение в рабочий график, потому что для компании это нужно не меньше, чем для работников лично. И для клиентов это скорее будет плюсом в нашу «карму», если мы скажем, что zGames проводит обучение за свой счёт и повышает квалификацию специалистов.

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

Артём М.: Да, когда к нам обратились 21 Monsters, их технический эксперт на звонке спросил нас: «А как вы планируете делать динамическое изменение правил игры?» И мы прямо на ходу расписали им технические аспекты архитектуры. Это даёт клиенту понять, что мы знаем, о чём речь.

Программисты vs. художники: о когнитивном диссонансе

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

У нас сейчас готовится guideline по созданию игрового арта. Там будут собраны взаимные требования и руководства для художников и программистов, чтобы унифицировать подход и ожидания, из-за которых всё время возникают вопросы. Тем не менее, на один тренинг на вольные темы я бы художников и программистов не звал.

«Праздник урожая во дворце труда»: что собрали и как это «есть»

Артём В.: Наш первый тренинг был о unit-тестах. Это технология, скажем так, не настолько «обязательная», но очень полезная. С помощью unit-тестов можно в автоматическом режиме находить ошибки в коде без лишних трудозатрат.

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

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

Иван Б.: После тренинга по архитектурным паттернам, который проводил Борисыч (Артём Мерц. — Прим. авт.), я просто пересмотрел свой код, и нашёл, где и как использовал эти паттерны. И сделал для себя выводы на будущее.

Иван Б.: Или вот, например: в работе над одним из наших проектов я использовал технику, с которой никто из нас тогда не был знаком — Light Mapping. Это запекание света в текстуру, техника оптимизации освещения. Когда источников света слишком много, они оказывают слишком большой эффект на видеокарту, и производительность «проседает».

Артём В.: Освещение — достаточно дорогая операция, которую сложно реализовать на мобильных устройствах, так как они не имеют возможности быстро просчитывать свет. А при помощи Light Mapping можно сделать красивый свет, причём недорого.

Иван Б.: Для одной из наших игр c дополненной реальностью нужно было сделать картинки красивее, естественнее — там лес, много деревьев, бродячие зомби и все такое. Девайсы типа Moverio Glasses просто «загнутся» — производительность видеокарты низкая. В таких случаях без Light Mapping не обойтись: свет прямо «рисуется» на текстуре, имитируется.

Я сделал доклад о технике Light Mapping, и, когда остальным понадобится такая штука, — они смогут использовать её в работе.

Артём В.: И вообще, у нас накопилось довольно много кода, который мы писали на протяжении 5-6 лет. Для новичков, которые в этом пока не разбираются, хотелось бы создать некую документацию, нормальным языком написанную, о том, как это работает. Но времени пока нет.

Во время моего доклада о нашей общей библиотеке кода ребята некоторые вещи подсказали. Например, что нам стоит переименовать, чтобы было понятнее особенно для новичков. Плюс на последнем тренинге один из разработчиков спросил, почему оформляем события в C# через свойство и private-переменную. Действительно, оказалось, что уже достаточно давно в .NET появился более удобный способ — через public-переменную. И мы поменяли наш guideline.

А коды летят…

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

Артём В.: Да, это на самом деле очень актуальная тема. Я как-то делал доклад на конференции MobileOptimized — как качественнее писать код. Но не с точки зрения алгоритмов, а с точки зрения каких-то простейших вещей, маленьких хитростей и наблюдений из опыта — из разряда как можно писать лучше, проще и быстрее. Так вот, самое интересное, что подобного материала я нигде не нашел.

Люди рассказывают о чём угодно: о том, как они писали код, когда у них протекал потолок. Или начинают писать код прямо при людях — как они создают простейшее приложение на Xamarin. Но смотреть на это довольно утомительно.

А вот каких-то практических советов, рождённых по результатам code review, нигде не было.

— Типа лайфхак — как сделать лучше то, что делаешь каждый день?

Артём В.: Да. Много вопросов возникает именно тогда, когда не свой код смотришь, а чужой.

— А в своём коде видите «бревно»?

Артём М.: Если подскажут. В своём очень сложно найти что-то.

«Так жить нельзя»: о групповом review

Артём В.: Вряд ли мы это будем делать. У нас было несколько попыток принятия групповых решений в команде. Как-то нам потребовалось придумать новое название для одной подсистемы, потому что старое было двусмысленным и вызывало много нареканий. Так вот, обсуждение в большой группе сводилось к двум вещам: люди либо ругали старый вариант, либо отстаивали новый, немногим лучший. Сложно заставить большую группу мыслить конструктивно. За час митинга 7 человек ничего не решили и разошлись. Я посидел 15 минут, придумал новый вариант названия, написал в чат, и все сказали: «Ок, давайте».

Если нужно собрать качественный feedback, то пусть лучше это сделает один человек, а потом презентует группе конкретное предложение, чтобы решение принималось в формате «да или нет».

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

Вузы готовят «неликвид»? 

— Можно ли в формате таких тренингов, как у вас, проводить занятия в вузах? Ведь часто мы слышим жалобы, мол, вузы оторваны от потребностей бизнеса, люди выходят из вузов без практики...

Артём М.: К сожалению, в вузы далеко не все попадают осознанно. Для людей, ищущих своё место в этой профессии, конечно, польза была бы. Но перенести под копирку формат наших тренингов не получится.

— А в качестве закрепления академического материала можно проводить такие тренинги? Как бывший преподаватель что скажешь?

Артём М.: Да, есть темы, которые будут непонятны без практического опыта. Вот, например, паттерны проектирования: если ты их не использовал и не начнешь использовать сразу после занятия, то нет смысла в теории о них рассказывать. Своим студентам я старался задания по программе адаптировать так, чтобы у них возникли проблемы, для решения которых придётся использовать эти паттерны. Конечно, есть смысл проводить практические занятия: с домашним заданием, с реальным проектом, работая над которым можно чему-то научиться.

Иван Б.: Теория в вакууме мало что даёт. Нам тоже в универе рассказывали про паттерны, но мы даже не с первой пары поняли, зачем они нам.

Пока не «накосячишь» в первый раз, и пока тебе не покажут, как можно сделать лучше, ничего не поймёшь. А то, что универ оторван от бизнеса, — да, увы, так и получается. То, чему там учат, либо не пригодится на реальных проектах, либо успеет устареть к моменту старта работы.

— В перспективе планируете снять отдельное помещение и приглашать туда людей из геймдев-комьюнити на курсы?

Артём В.: Да, но материал тогда должен быть уже «обкатан» на внутренних тренингах. Запишем видео и на их базе будем готовить занятия. Опять же, докладчики уже наберутся опыта.

Ещё важный момент: студентов, посещающих курсы, нужно обязательно контролировать. Люди придут разные, об их опыте и заинтересованности судить будет сложно. Прийти просто послушать для ознакомления — это точно не работает. У себя мы тоже собираемся вводить контроль, давать «домашку». Но для студентов это должно быть реально жестко, в виде какого-нибудь зачёта.

Самых способных возьмём на работу

Иван Б.: Участие в таких «живых» тренингах — это отличная мотивация для тех, кто хочет попасть в хорошую компанию. Поэтому мы планируем «эволюционировать».

Артём В.: В планах — модерация докладов, создание базы материалов. У нас есть документ, где расписано, кто и что делает. Мы стараемся равномерно распределять нагрузку спикеров.

— А если кто-то увидит список тем грядущих докладов и напишет в комментах о том, что хотел бы поучаствовать в тренинге? 

Артём В.: Зависит от опыта этого человека. Конечно, если это школьник, который писал на Паскале один месяц, то, естественно, смысла особого нет. А если он достаточно компетентен — то можно и пригласить в качестве поощрения.

Артём М.: Тем более, если он подойдет по списку наших актуальных вакансий! ;) Можно просить тех, кто задаст лучший вопрос или предложит хорошую идею, сразу присылать нам резюме. Специалистам, которым реально интересен геймдев и которые готовы развиваться нон-стоп, мы всегда рады!

подписка на главные новости 
недели != спам
# ит-новости
# анонсы событий
# вакансии
Обсуждение