17% скидка на размещение рекламы на площадках devby — до 20 ноября. Клац!
Support us

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

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

Что за биологический вид этот пресловутый «геймдевелопер»? Вопреки расхожему мнению, далеко не всегда это породнившийся с 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, то пусть лучше это сделает один человек, а потом презентует группе конкретное предложение, чтобы решение принималось в формате «да или нет».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также
«Что бы ни было, уходи в 17.00»: сооснователь Netflix рассказал, как поддерживать менталочку и семью
«Что бы ни было, уходи в 17.00»: сооснователь Netflix рассказал, как поддерживать менталочку и семью
«Что бы ни было, уходи в 17.00»: сооснователь Netflix рассказал, как поддерживать менталочку и семью
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
Беларусскую систему мгновенных платежей будут интегрировать с российской
Беларусскую систему мгновенных платежей будут интегрировать с российской
Беларусскую систему мгновенных платежей будут интегрировать с российской
9 комментариев
Беларусы будут платить налог на электромобили со следующего года
Беларусы будут платить налог на электромобили со следующего года
Беларусы будут платить налог на электромобили со следующего года

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.