13 February 2009

Идеальный шторм. Постмортем неанонсированного проекта.

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

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



Проект длится 8-ой месяц, будет длиться со всеми многочисленными платформами еще 2-3 месяца. При этом мы сейчас четко видим, какие именно ошибки стоили компании 2-3 месяца разработки и десятки тысяч долларов (надеюсь, что счет на сотни тысяч не пойдет).

КОМАНДА

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

Мне потребовалось целых 2 месяца, чтобы осознать, насколько плоха ситуация, меня только совсем чуть-чуть оправдывает, что из этих 2 месяцев 2 недели я был в отпуске в тёплом месте. То, что я увидел после отпуска, было катастрофой. Я понял, _насколько_ категорически и масштабно я облажался. Кажется, еще никогда раньше я не ошибался ТАК круто.

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

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

Я в очередной раз убедился, что в сложной ситуации я не способен исправить ситуацию PM директингом. Единственный способ, как я могу решать такие проблемы на проектах, — это решать их собой. Закрывать дырки собой. К сожалению, я не оказался лучше, чем все другие люди в этом аспекте.

Ошибка Вовчега в дизайне была в том, что нельзя было вбрасывать в удаленную команду не достаточно проработанную идею. Мы очень хорошо увидели, что происходит с проектом, когда команда делает, то чего НЕ понимает и НЕ принимает. Никто из команды даже и близко тогда не понимал, что же мы конкретно хотим сделать. Реально, даже близко не понимал! При этом на протяжении недель видя, с одной стороны, какая неиграбельная фигня есть в билде, с другой — разрыв с тем Vision-ом, который мы с Вовчегом хотим реализовать.

3 очень важных вывода по этой части, которые, конечно, выглядят очевидными.
— Самые сложные вещи буду делать я сам, только сам. Когда у нас появится другой крутой пм, это изменится.
— Core team сложных проектов будет _всегда_ находиться в одной комнате одного офиса. И будь я проклят, если я это еще когда-нибудь попытаюсь нарушить.
— Никогда никогда я больше не буду «выбрасывать людей в воду с надеждой, что они всплывут», я буду «учить плавать аккуратно и последовательно», это касается построения команд и развития пм-ов.
— Нельзя делать что-то, если у тебя нету хотя бы 1 человека, который поддерживает и понимает идею, у нас этого тогда не было.

КАК РОЖДАЛСЯ ИДЕАЛЬНЫЙ ШТОРМ

Мы очень сильно напортачили с Вовчегом в сущностях, где мы с ним считались опытными ребятами – Pre-production и Vertical Slice (reference playable его еще называют).

Мы отлично прошли концепт фазу. У нас был хороший и четкий vision. Мы очень долго и многими людьми думали над концептом. Не скажу, что мы придумали нечто невероятное, но концепт фаза была пройдена действительно хорошо. Был сделан хороший задел.

Четкий и правильный vision был единственным лучиком надежды. Осознание, что есть цель, что она достижима, но мы пока не знаем четкого пути, как туда прийти — это то, что спасло проект. Если б этого не было, был бы типичный Death March Project, или, как я это называю, — Disaster Project. Таких проектов за 8 лет компании было много. Я пока не научился их избегать. Чёткая концепт фаза позволила нам удержать опоздание в рамках 2-2.5 месяцов.

Pre-production был полностью провален. Несмотря на то, что формально какие-то документы делались, какой-то (неиграбельный) Vertical Slice развивался, какие-то планы писались, рапортовалось о том, что сняты какие-то риски, – фактически всё это было fake-ом. Главного не было сделано – определенности того, что же мы делаем. Без этого у планов и гдд не могло быть реального наполнения.

Всё это привело к катастрофе.
Мы начали продакшн.


На проект пришло много людей. Резервы уже были съедены. Вместо того, чтобы сконцентрировано решать Главные проблемы проекта – получить настоящий Vertical Slice, внести Определенность в ключевые фичи — нам пришлось сильно распыляться на то, чтобы обеспечивать работой большую команду. Мы давили на программиста движка, чтобы изменения вносились еще быстрее. Когда уже большая продакшн команда производила результаты, интеграция этого всего дела в билд только усугубляла проблему, мы видели, что совсем ничего не работает. Приходилось многое переделывать, люди выли от этого, спираль проблем закручивалась.

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

Я оказался в ситуации, когда у меня фундаментальные проблемы были везде. В дизайне – мы не знаем, что мы делаем. У нас нет ничего кроме vision-a и плохого Vertical Slice билда. У нас уже какого-то черта продакшн и куча людей, которые озлоблены от того, что приходится делать много изменений, которым нужно давать задачи, но нормально продуманных задач нету. У нас нарисовано много арта, но качество многих элементов было далеко от того “Wow”, на которое мы рассчитывали.

Чтобы хоть как-то это решать, нам нужно было менять Vertical Slice. Я понимал, что еще чуть-чуть и шансов успеть в срок не будет. Успеть в срок — это значит выйти одновременно с большим релизом на американском ТВ. Это был настоящий deadline, который нельзя было двигать.

В этот момент ко мне приходит лид программист и говорит, что нужно остановить любую работу и выкинуть 80% всего code base-а. Что это единственное решение. Мы оба понимаем, что это правда. В лучшем случае, если мы будем переписывать текущие сложные элементы в самом простом виде, например, полный рандом, вместо текущего сложного АИ, мы сделаем это всё за 2 недели. Мы вернемся к рабочему билду через 2 недели. Мы понимали, что мы вернемся к прежней точке скорее через месяц. И это всего лишь позволит нам вносить хоть какие-то изменения в проект.

Помните, я недавно рассказывал про то, что проект подобен пьесе, где задача менеджера это «впихнуть невпихуемое» и make everyone a winner.

Мой проект стал ТРАГЕДИЕЙ. Моей личной трагедией. Трагедией команды и всей нашей компании.

Я четко осознавал, что мы опаздываем _минимум_ на 2 месяца и что мы фактически находимся в начале пре-продакшена.

Перенос deadline-а на 2 месяца, по большому бренду, где у нас большие гарантии по revenue, — это была КАТАСТРОФА.

ЖИЗНЬ ПОСЛЕ КАТАСТРОФЫ

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

Грамотный лид программист Димусик тогда дочитывал Совершенный Код МакКоннела и смог эффективно внедрить изложенные там идеи, была сформулирована очень четкая и очень простая архитектура из 3 state-ов (вместо сложной и запутанной из 10-20 state-ов). Эти 3 state-а стали ядром движка. Все, начиная от меня, заканчивая QA, знали это state-а.

Я впервые тогда увидел сам, что правильно задав вопросы заказчику (дизайнеру) можно серьезно помочь дизайнеру лучше понять, что он хочет, можно помочь найти решение намного проще и лучше.
Мы внедрили скриптовую систему на многих уровнях проектах, настоящий data driven подход. То, что занимало 2 недели и 10 итераций работы дизайнер-программист, сейчас делалось за 3 дня программистом, сразу верно и почти без багов, а дизайнер потом сам очень легко и быстро настраивал фичу за пару дней. Это было настоящим шоком для меня.

Уже позже мы узнали, что Нивал делает то же самое для скриптования магии в Аллодах Онлайн. Хардкод 200 заклинаний в героях 5 — это был старый неэффективный подход, от которого мы так же ушли.
Это было 10x. Все мы знаем, что лучшие люди — это 10x средних. Сейчас я смог это очень точно измерить, и действительно это было 10x. Это снова было шоком для меня.

ТЕМНАЯ СТОРОНА AGILE

Я и раньше хорошо понимал, каким злом может быть Agile. На проекте я на конкретных примерах увидел, НАСКОЛЬКО большим ЗЛОМ может быть Agile в неправильных руках. Некоторые фичи мы делали в agile стиле, то есть, честно говоря, не сильно думая, что мы хотим и что будет меняться (потом будут итерации для изменений).

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

Димусик за 2 дня не написал ни 1 строчки кода. Он очень много и долго говорил с дизайнером, они обсуждали и продумывали разные варианты, Димусик предложил другой способ реализации фичи, который был кардинально проще, порождал заметно меньше проблем, но который, по сути фичи, делал то же самое. Дима рисовал схемки, чертил таблицы разных вариантов взаимодействия, очень детально прорабатывал все нюансы. К счастью, у меня хватило ума понять, что это не «2 дня ничегонеделания», а наш будущий успех.

После этих 2 дней Дима за 1 день реализовал эту уже простую фичу. И когда она заработала с самой первой итерации, совсем без багов (разве что только с 2 очень мелкими помарками, которые скорее были доработками) вся команда была в шоке. Это было фиксировано 3 дня, из которых только 1 день писался код, это была 1 итерация, вместо 2-3-4 недель и 3-5-10 итераций.

Для всех стало очевидно, насколько лучше может быть старый добрый забытый(?) всеми(?) Waterfall подход. Только после этого я по настоящему, на своей крови, осознал, насколько важно всегда придерживаться едва уловимого баланса между Agile и Waterfall подходами. Я говорил об этом и раньше, на прошлой КРИ, например, но только сейчас я увидел настолько вопиющий пример.

«Keep it simple» слоган Димусика, жесткая и очень простая архитектура, отказ от Agile во многих элементах проекта, скрипты и data driven подход практически во всех элементах проекта — это было фундаментом возрождения проекта.

ГДЕ ЖЕ МЫ

Я уже потратил на портативный проект для многих платформ 8 месяцев и 50+ человеко-месяцев (умножите на стоимость человека-месяца и получите стоимость). На проекте работают лучшие люди компании, максимум людей, которых я смог «эффективно занять» — это 4 программиста, 4 художника, 2 выделенных команды.

Сейчас 23:29, четверг 12 февраля. Мы вчера получили 6 разгромных альфа плей-тестов. Никогда еще за все 5 лет и 20+ проектов плей-тесты не были настолько плохими. Все игроки едины в том, что «ничего не понятно, что происходит на экране, не ясна цель, скучно выполнять одни и те же действия».

Смешно говорить, но мы фактически не прошли альфу, мы уже очень многое сделали по бете, у меня осталось 3.5 недели или 21 рабочий день. Мы в спешке доделываем сабмишн материалы на все ключевые Tier1 американские каналы, иначе мы просто пропустим «своё окно» на запуск.

Я знаю, что мы опоздаем. Невозможно за 3.5 недели сдать проект, когда еще не пройдена альфа стадия. Мы опоздаем на срок от 1 до 3 недель. Мы будем биться за каждый день, делать всё, чтобы приблизить релиз хотя бы на день, на каждый из дней.

СЕГОДНЯ ИСПОЛНЯЮТСЯ МЕЧТЫ

Вовчег 4 часа назад исполнил нечто очень важное для себя — купил хорошую квартиру в Минске, и сейчас, когда я пишу эти строки, Вовчег дома пишет новый пак изменений, которые мы условно называем “Death Changes” (до этого еще был “Mad changes pack”), которые будут дешевыми и которые сильно улучшат игру. Несмотря на разгромные альфа-ревью, мы верим, что есть изменения, которые будут хорошими и дешевыми.

Наша вера это наш лучик надежды, это наш Vision, мы прошли долгий путь в поисках цели, и мы чувствуем, что мы уже очень близки. Мы уже почти пришли. Наша интуиция подсказывает, что мы уже очень близко. Кажется, мы уже почти Счастливы.



Есть ли жизнь после deadline? Я не знаю.
Но я точно знаю, что буду гордиться нашей Игрой, гордиться командой, которая прошла этот путь, я знаю, что, когда мы с Вовчегом вернемся из Сан-Франциско, прослушав Кадзиму и его «Solid Game Design: Making the ‘Impossible’ Possible», мы сделаем наш ‘Impossible’ Possible – мы сделаем наш новый проект намного лучше текущего.

Денис Войханский,
Executive Producer, where, at Reaxion, we create games we want to play ourselves.

P.S. Возможно, после того, как мы анонсируем нашу игру, у вас будет шанс оценить, то, что мы создавали все эти месяцы.
Tags:геймдевуправление проектамименеджмент проектовменеджментпрограмированиеproject managment
Hubs: Project management
+125
1.3k 47
Comments 96