Фанатичная уверенность в своей правоте и агрессивный рекламный напор Agile-евангелистов оставили после себя поля заваленных проектов, руины бизнес-начинаний и заблудших неофитов, всё ещё блеющих избитые истины забытых пророков. Индустрия разработки игр не исключение в данном случае и также ещё только начинает осознавать масштаб фантасмагории и её результаты.
Конечно, всегда были более осознанные разработчики, которые не поддались уговорам и влиянию никуда негодных "консультантов", даже если они предлагали громкие сертификаты и все прочее. Сейчас среди прогрессивных специалистов часто говорят о так называемых post-agile практиках, ранее известных как здравый смысл.
Но распространяется этот самый здравый смысл пока ещё медленно. Если мне придётся ещё раз просидеть на митинге с каким-нибудь очередным agile неудачником, упорно защищающим свой подход к разработке катящегося в бездну проекта, это всё приведёт к принудительному канбану (японская система синхронизации работы на заводах с раздачей карточек с требованиями), где никаким scrum'ом и не пахнет. И не то чтобы я имел что-то против agile, скорее совсем наоборот, но в конце дня мне надо сделать поставку, а не бороться с ветряными мельницами.
Опыт управления проектами в индустрии, которая только выходит из подросткового возраста, набирается методом проб и ошибок. Прежде чем делать какие-то выводы о современном состоянии дел в гейм-индустрии, стоит сделать шаг назад и рассмотреть подробнее саму agile методику, разобраться, что она из себя представляет.
Я работаю техническим директором большой студии, и поэтому под моим контролем находятся все проекты компании. Кроме того мне приходится и вплотную общаться и тесно взаимодействовать с издателями и коллегами по отрасли. Неудивительно, что у меня по долгу службы хватает возможностей увидеть всевозможные стили управления разработкой, так сказать, ”в живую”. Agile стал одним основным трендом в последние годы, но кроме него самого стоит уделить внимание другим, сопутствующим данной методике трендам.
В первую очередь многие уверены, что слова agile и scrum взаимозаменяемы, и мысль о том, что это два независимых понятия кажется им совершенно чужеродной и инопланетной. Несмотря на распространённость scrum'а, ощущается недостаток чёткого понимания scrum-отношений во многих командах. Если проследить, что собственно делают команды день за днём, можно заметить, что "scrum" на удивление разнообразен и вариативен. Иногда, даже сложно найти связь между тем, что команды делают и тем, что в моём понимании они должны были бы делать.
Другим распространённым мнением является то, что альтернативой agile является waterfall. Многие действительно так думают. В результате, если ты не приверженец agile, то ты — ретроград, застрявший в прошлом, и отчаянно за это самое прошлое цепляющийся. Тебе нужно прозреть, просветлиться, или, что ещё хуже, как оказывается, ты просто не способен понять, как на самом деле надо действовать.
Мы все с вами, наверное, в какой-то момент испытали на себе все прелести плохого менеджмента и поэтому прекрасно пониманием тоску девелоперов в таких случаях, и их стенания по поводу организации более человеческого и вменяемого рабочего процесса, а agile как раз выглядит такой симпатичной альтернативой традиционным правилам и распорядку. В то же самое время менеджмент самого себя постоянно жалеет, сетуя на то, какие же всё-таки наивные девелоперы, и как они мало понимают реальности ведения бизнеса.
Существует общее недопонимание того, что из себя в действительности представляет agile, какие вопросы данная методика ставит перед командой и как вписывается в общую картину создания какого-либо решения. К сожалению, подобное неведение, а иногда и даже невежество, не позволяет многим вести конструктивный диалог и мне зачастую приходится тратить довольно много времени, чтобы сломать, наконец, бесполезные философские барьеры в сознании собеседника, прежде чем перейти к обсуждению актуальных проблем. А это, откровенно говоря, весьма раздражает, ведь всё самое важное часто остаётся не раскрытым за всеми этими разглагольствованиями.
Многие думают, что agile это какая-то исключительно новая практика и посвящена решению каких-то совсем свежих вопросов, буквально только сейчас ставших актуальными. Вообще-то, менеджмент проектов насчитывает в своей истории сотни лет, да и в сфере разработке ПО его история идёт не один десяток лет. Если брать за основу идеи о реализации как можно более эффективного производства, то тогда agile мышление существует как минимум с 40-ых годов прошлого века. В любом случае, agile родился в результате обобщения большого количества знаний, эмпирических данных и практического опыта, на основе которых, и были сделаны некоторые осмысленные заключения и придуманы правила.
Если же возвращаться обратно к разработке ПО, то если приглядеться, то можно заметить, что существует не так уж и мало формализованных методик ведения разработки, а не только Scrum или Waterfall. Вот несколько, навскидку:
Некоторые из них считаются преимущественно agile методиками, некоторые нет. Все из них имеют своих приверженцев, и на каждой из них было успешно реализовано множество проектов, что вызывает естественно возникающие вопросы:
Если они все успешны, то почему так важно, какую из них в конкретном случае надо использовать? Может некоторые из них более эффективны, чем другие? Тогда почему и чем? Если есть больше чем один подход к agile, то почему именно scrum так популярен? Он действительно лучший в своём классе или у него просто более звучный пиар?
Разумеется, мы не первые, кто задаётся подобными вопросами в попытках оценить эффективность различных техник менеджмента проекта. Например, американское министерство обороны, разработало Capability Maturity Model (CMM) специально для оценки способностей разработки и управления проектами у потенциальных военных подрядчиков.
Но, так или иначе, начнём с менее глобального вопроса.
Из перечисленных выше методологий, какие более соответствуют принципам agile, а какие менее? Простой вопрос, но для ответа для него нам нужно напомнить формальное значение термина "agile". К счастью разногласий здесь быть особо не должно, поскольку Agile Манифест приводит нам достаточно ясную формулировку. Вообще мне нравится манифест, поскольку он показывает ясное понимание что такое, процесс разработки ПО и предлагает хорошо продуманную систему ценностей. Он содержит важные идеи, которые никто не должен пропустить. Рассмотрим первый принцип: Люди и их взаимодействие важнее, чем процессы и средства. Смелое заявление от авторов манифеста (не зря оно и первым идёт), ставящее личное взаимодействие выше процессо-ориентированных аспектов разработки. Оно даёт нам более чёткий способ ранжирования методик по соответствию их agile принципам. Техники, сфокусированные на самих разработчиках более agile, чем процессо-ориентированные. Конечно, это только один пункт для сравнения и подобная классификация методик будет слишком грубой и сырой, но взять её на заметку стоит. Уточним, что подразумевается под терминами "человеко-ориентированный" и "процессо-ориентированный". Идея процесса имеет явно "политический" подтекст и поэтому люди так эмоционально реагируют, когда слышат о "методологиях" управления проектом. Ведёт данная идея к более фундаментальным и при этом более общим концепциям. Процесс — это инструмент власти. Процесс — это утверждение о том, что как и в каком порядке надо делать. Процесс консервативен, иерархичен и формализован. Процесс устанавливает статус-кво в игре. С его помощью менеджмент наводит порядок сверху вниз. Если бы процесс был политической партией, он бы принадлежал к правому гегелевскому лагерю. Альтернативой процессу является делегирование ответственности, доверие лицам на местах должным образом организовать себя, поскольку они лучше знают конкретные задачи, и поэтому так будет эффективнее, а сама разработка соответственно продуктивнее. Самоорганизация либеральна, "коммунальна", неформальна и даёт шанс каждому проявить свои способности. Она зарождается и идёт снизу вверх. Если продолжать политические метафоры, то самоорганизация — это партия хиппи в одежде из конопли и левацкими убеждениями. Если говорить более конкретно и попытаться материализовать столь общие слова, будем считать процесс принадлежностью и чертой традиционного типа разработки ПО, а самоорганизацию своеобразной софтварной вольницей-партизанщиной. М-да, не особо получилось материализовать, поэтому совсем неудивительно, что вокруг данного дискурса постоянно ведутся эмоциональные дискуссии. Подобная условность и неопределённость — плодородная почва для агитации и слепой веры в свою правоту. Не спрашивали себя, почему существует именно манифест agile? Это по сути как раз какое-то воззвание, можно сказать политическая позиция, а не какая-то объективная позиция. Я не партизан, но и к другому лагерю также не принадлежу. Я просто заинтересован в получении конечного результата, и у меня нет времени защищать какую-то конкретную точку зрения. А для эффективного получения результата и вовремя необходимо быть гибким (хотя и не всегда, я бы добавил), так что главное понимать правильно, чего полезного можно получить от обоих подходов.Итак, что же хорошего в процессах?
- Повторяющиеся и предсказуемые результаты
- Гарантии качества (за счёт предсказуемости)
- Экономия средств за счет возможности оптимизировать рабочие процессы
- Определённый конкретизированный поток работ позволяет нам использовать дешевый труд
- Возможность распространения передового опыта и сохранение концептуальной целостности проекта
- Возможность масштабирования
- Возможность эффективного отслеживания прогресса согласно поставленным целям
Процесс может:
- Увеличить расходы и снизить производительность через бюрократические издержки и потерю времени
- Мешать нашей способности изменятся и адаптироваться к новой ситуации
- Задушить нашу тягу к новаторству и творчеству
- Требуют дисциплины и подготовки
- Эффективно применим только для известных величин
Рассмотрим Scrum. Прежде всего, Scrum это:
- Спринты
- Scrum роли
- Митинг по планированию спринта (sprint planning meeting)
- Ретроспектива спринта
- Демонстрационный митинг (Sprint Review Meeting)
- Истории (user stories)
- Ежедневный митинг (Daily scrums)
- Предварительный cписок запросов на выполнение работ (Estimated Backlog)
- Burn Down Charts
- Планирование релиза (Release Planning)
- Стэйкхолдеры (Stakeholders Collaboration)
- Кроме того в понятие Scrum включают такие практики как:
- Task Boards (канбан)
- Test Driven Design (TDD)
Люди.
Я уверен, что важнейшим фактором успеха в управлении проектом являются люди. Талантливые мотивированные опытные разработчики сделают поставку, несмотря на огрехи менеджмента. Они найдут способ обойти процессы, которые мешают и смогут создать правильную структуру там, где царит хаос."Окружите себя лучшими людьми, которых только сможете найти, распределите обязанности и полномочия, и не вмешивайтесь", Рональд РейганЭта идея лежит в основе agile девелопмента, и является фундаментальной для нелинейного менеджмента. Чтобы добиться успеха, вы должны приложить максимум усилий, чтобы нанять хороших разработчиков, тщательно отсеять зёрна от плевел. Весь остальной менеджмент в таком случае особой роли не играет, это так, глазурь на торт. Разумеется, рассчитывать на то, что вы набираете всегда только лучших, наивно. Вот несколько факторов, которые надо учитывать:
- Если вам потребуется существенно увеличить команду, то будьте уверены, что проблемы с наймом ещё одних лучших у вас возникнут.
- Опыт — штука дорогая, ваш бюджет вряд ли потянет команду исключительно элитных разработчиков.
- Определение зон ответственности. Понимание того, где мы можем нанять не сильно опытного человека, помогает перекинуть бюджет на другую зону или же просто сэкономить и тем самым увеличить коммерческую состоятельность вашего проекта. (Вы не будут набирать в Макдональдс исключительно кандидатов наук на все должности, хотя попробовать было бы интересно).
- Слишком много ведущих разработчиков — путь к появлению проблем. Кто будет главным, и станут ли опытные разработчики играть вторые скрипки? Неясное распределение полномочий ведёт к разрушению концептуальной целостности проекта.
Креативность vs. Продакшн
Есть два фундаментальных понятия, лежащие в основе гейм девелопмента — креативность и продакшн (прим. – перевод слова "продакшн", как "производство" или "производственный процесс", будет вносить сумятицу, поэтому оставлю такой, более понятный людям в теме вариант) Давление продакшна на разработку это обычное условие ведения бизнеса — необходимость совершить поставку согласно бюджету ни в срок. Чтобы сделать это, нам необходимо просчитать масштаб работ и риски, а это значит заняться планированием и составлением графиков работ. Это несомненно сложная работа, требующая немало усилий и времени, но необходимая для того чтобы ответить на эти извечные два вопроса — когда это будет готово и сколько это будет стоить? Чтобы план был точным и аккуратным, в идеале нам надо работать с известными величинами. Продакшн, таким образом, отправляет нас в сторону техник, работающих от процесса. Креативность, с другой стороны, это сердце и душа гейм девелопмента, которая заставляет нас делать лучшие игры. Это увлекательный путь познания и искреннего любопытства. Здесь нет гарантированного выхода или удобных сроков, и это разочаровывающий путь, с точки зрения перспективы выпуска продукта. Наличие креативности у разработчиков часто приводит к попыткам менеджмента управлять всем этим хаосом, которые, впрочем, не могут сдержать творческий процесс, а менеджеры потом только удивляются уменьшению количества "я не знаю что это" ошибок. Поэтому не удивительно, что некоторые наиболее инновационные и продвинутые игры, получившие высокую оценку от самых взыскательных критиков, выходят из студий, чей менеджмент можно, прости господи, назвать беспорядочным. Точно также "корпоративные" студии со зрелым и опытным менеджментом, выпускают банальные и стандартные продукты. Но не стоит торопиться с выводами. Это всё не значит, что креативность это прерогатива хаоса, а своевременная поставка игры и попадание в бюджет означает отказ от инноваций. Нам необходим баланс между обеими крайностями, чтобы достичь желанной цели. Понятие креативность окружено мистически ореолом, особенно в том, что касается компьютерных игр. Это на самом деле важная и большая тема, но она выходит за пределы этого эссе. Тем не менее, люди изучают так называемую креативность годами, и существуют наработанные эффективные практики и техники, пригодные к использованию. Креативность — это навык, которому можно научиться, воспитать и развить в себе. Это куда меньше чем какой-то проблеск гениальности, это скорее умение создать вокруг себя условия, стимулирующие появление и развитие идей. Если вам это интересно, советую прочитать книгу Гордона Маккензи (Gordon Mackenzie) "Orbiting the Giant Hairball", которая рассказывает о его опыте креативной работы в корпоративной среде. Повторяющаяся и при этом постоянно изменчивая натура креативного процесса ведёт к самопроизвольному принятию agile-ориентированного стиля менеджмента. Тем не менее, наивно применять scrum в надежде, что это магически сделает разработку более креативной. Гибкость менеджмента необходима, но не определяет итог разработки. Сочетать в гармонии креативность и продакшн нелегко, тем более что далеко не все проекты в данном плане похожи. Как бы мне не хотелось работать всегда над инновационными и креативными задачами, такого никогда не будет. В реальной жизни бизнес показатели и характеристики, в том числе пресловутый продакшн, являются наиважнейшими для большинства компаний. Устойчивый и успешный бизнес должен быть всегда прибыльным. Если мы хотим всегда обеспечивать сотрудников студии работой и продолжать разрабатывать игры, мы должны быть прибыльным бизнесом. Для примера, пропуск платежа за очередной майлстоун проекта может быть фатальным для стартапа, живущего "от получки до получки", так что своевременная поставка (синоним — выживание) в данном случае куда важнее всего остального для проекта. Или, к примеру, крупный издатель может захотеть получить не просто игру, а новый бренд, который воздастся им в будущем большей прибылью. И для проекта у них будет куда больше желания подождать и вложить больше денег в креатив разработчиков и в них самих. Портфолио продуктов — ещё одна вещь, которую необходимо учитывать — большая студия может работать над одним проектом "для оплаты расходов" (то есть бизнес-ориентированный, в котором важнее всего своевременная поставка), а вторым заниматься для поддержания престижа студии (креативным и инновационным). Понимание контекста бизнес-реалий для данной игры, её возможностей и амбиций, определяет лучший путь для её разработки и развития. Некоторые люди склонны считать, что коммерческий успех, так или иначе, последует за выпуском хорошей игры. Это конечно вполне возможно, а для идеального мира "где всем воздаётся по заслугам" будет истинно верным. Но, так или иначе, мы живём в несколько ином мире, который совсем не так прост. Это правда, что некоторые студии нашли себе нишу и открыли новые сегменты рынка за счёт своей креативности и продвинутости, и это привело их к коммерческому успеху и интересу инвесторов. Но, к сожалению, это работает не для всех, и проблему у многих начинают возникать, когда им оказывается необходимым оставаться креативными и инновационными на протяжении долгого срока, а не одного-двух проектов. Вообще, я желаю всем им удачи, однако только рынок станет всем судьёй.Этапы продакшна
Ещё один момент, свойственный индустрии разработки игр (а также любому фактически конечному продукту), это разбивка проекта на три этапа — преподакшн, продакшн и постпродакшн. Точные определения данных вех в разработке могут меняться в зависимости от проекта, но в общем виде я их представлю так:- Препродакшн — это период, в который мы работаем над тем, какой должна быть игра, и как мы собираемся её делать
- Продакшн — период, в который, мы собственно, делаем игру.
- Постпродакшн — период, в который мы заканчиваем разработку и превращаем проект в нормальный, готовый к доставке пользователю продукт. Данный этап делится на две фазы — альфа (полировка игровых моментов, отработка баланса игровых качеств и процесса) и бета (чистка от багов).
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.