Справка:
Галина Митричева окончила Российский государственный гуманитарный университет, изучала программирование и лингвистику. Управляет проектами с 2010 года. В компанию «Яндекс» пришла в 2013 году. Занималась браузером и видео, преподаёт в Школе менеджеров Яндекса.
Предисловие
Мои коллеги довольно увлекательно рассказывают, как они выбирали методологии, как они учились им следовать и, быть может, что-то меняли в себе, чтобы соответствовать методологиям. А я расскажу то, чему была посвящена моя работа в течение последнего года: как я ломала следование методологиям в той команде, с которой я работала.
Сразу отмечу, что не буду называть никакие продукты, команды, сервисы и проекты своими именами. Чтобы назвать продукт, я буду использовать аналогию с компанией Tesla. Но Tesla, о которой пойдет речь, это не та Tesla, которой занимается Илон Маск и которая делает электромобили.
Почему я решила использовать именно такую аналогию? В первую очередь, когда говоришь Tesla, людям обычно приходит в голову именно автомобиль. Автомобиль ездит на электричестве, следовательно, в автомобиле есть аккумулятор. И в той команде, которая занимается разработкой всей машины, есть такая подкоманда, которая отвечает только за аккумулятор.
Но кроме автомобилей, чтобы помогать развитию своего бизнеса, Tesla также занимается проектом под названием Tesla Super Charger – строительством сети электрических заправочных (зарядных) станций по всей Америке. И строительством этих заправок, наверняка, занимается команда, которая, в первую очередь, посвящает себя именно строительству, то есть фактически не занимаются созданием автомобиля. Но внутри этой команды, безусловно, существуют люди, которые непрерывно общаются с теми специалистами, которые в рамках производства автомобиля занимаются разработкой аккумулятора.
И наверняка на всех этих людей воздействуют какие-то внешние факторы: контролирующие органы, государство, частные компании, перед которыми им надо отчитываться, что они сделали, почему сделали именно так, как они гарантируют безопасность и качество.
В итоге получается примерно такая картина, как видно ниже. Ее я буду дальше использовать в своем рассказе.
Здесь три кружочка разного размера. Самый большой кружочек – это те, кто делает машину. В нем зеленый сектор – это те ребята, которые отвечают за аккумулятор. Кружочек поменьше – это те, кто занимается строительством, в нем зеленый сектор – это люди, которые общаются по части зарядки аккумулятора. И третий маленький кружочек – это некий внешний контроль. В нашем случае зеленый сектор – это обеспечение качества на проекте.
Почему получилась именно такая картина? Поскольку у меня проект экспериментальный и задумывался сначала для того, чтобы проверять ряд продуктовых и технологических гипотез, то никто не может понимать, какие перспективы он дает большому бизнесу. И никто не готов на него сразу отделять какую-то большую стабильную команду, которая все свое время посвящает только этой работе и ничем больше не занимается. Так что команда получилась из разных людей, причем несколько из них, которые занимались тестированием, жили в другом городе. Поэтому и получилась примерно такая конструкция.
Какие методологии использовала команда по созданию машины и команда строительства
С чего это все начиналось? Большая команда, которая занимается производством электромобиля, живет по каноническому Scrum, с двухнедельными итерациями. Это давно сформировавшаяся большая команда разработки со своими традициями, со своими привычками и особенностями.
Команда строительства существует иногда по «водопаду», иногда по Agile, иногда – как придется. Соответственно, та часть, которая была передана в мой проект, не очень понимала, по какой методологии существовать.
Что касается тех людей, которые занимались тестированием, то они работали по классическому first in, first out (фёст ин, фёст аут): что им выдали, то они и тестировали.
И с этим зелененьким полем мне нужно было каким-то образом построить процессы по созданию продукта – как проверить наши гипотезы.
Какие задачи надо было решить
В первую очередь, очень хотелось сохранить цельную большую команду разработки. Никто не знает, что дальше будет, потому что эксперимент - такая штука, может, получится, а может, и не получится. И забирать нескольких человек из команды, навсегда разрушая и целостность этой команды, и мотивацию этих людей, совсем не хотелось.
Надо было состыковать экспериментальные циклы исследования, разработки с теми процессами и с теми инструментами, которые уже существовали. Кроме того, нам нужно было обеспечить качество получающегося у нас продукта. Это, конечно, эксперимент, исследование, но пользователи – живые, и причинять им страдания не очень красиво. Поэтому обеспечению качества мы тоже уделяем значительное внимание.
Также нам нужно было также заплатить налоги. Что такое налоги? Наверное, все, кто занимается проектами долго и в больших командах, понимает, что периодически, кроме основной продуктовой задачи, на команду прилетают так называемые саппортовые задачи: тут что-нибудь быстренько доделать, там что-нибудь быстренько подкрутить, здесь что-то сделать. Это не мэйнстримовые задачи, но делать их обязательно нужно, потому что они имеют свойство накапливаться и сильно замедлять работу, ухудшать эффективность всей команды.
И помимо всего этого, нам, конечно же, нужно было сделать сам продукт.
С чего мы начали: попытка № 1
В первую очередь, я решила, что ничего работающее сейчас ломать не стоит. Есть прекрасный процесс, есть прекрасный Scrum со своей бюрократией, со своими встречами, ответственными, ведущими. Мы сейчас тех, кто снаружи, «досыпем» в этот Scrum, и вместе с ними попробуем что-нибудь сделать.
Так мы стартовали. В общем темпе Scrum основной команды, но у этой ситуации, как оказалось, были минусы.
Во-первых, огромное количество чужой бюрократии. Для кого-то она была своей, но для нас она была немножко чужая, и ее было очень много. Мы пытались работать по каноническому Scrum, слушали про ценность Scrum-митингов. Этих митингов очень много, и для основной профильной команды они, безусловно, очень полезны, но когда появляются другие люди, со стороны, возникают вопросы, зачем это надо. Представьте себе какого-нибудь строителя, который утром, прежде чем пойти на свою строительную площадку, едет на автомобильный завод и слушает, как мастер ночной смены рассказывает, сколько багажников они за ночь покрасили. А рабочие автомобильного завода с не меньшим воодушевлением слушают рассказы строителя о том, сколько литров бетона и какой марки они вчера залили в фундамент своей очередной заправки. Так что при общей доброжелательности и нацеленности на результат все люди, которые пришли со стороны, расходятся в легком недоумении, зачем они столько времени потратили? Чтобы эту всю эту, безусловно, полезную информацию послушать и забыть навсегда?
Вторая проблема – мы совершенно не могли использовать ресурсы большой команды, не могли никого позвать себе на помощь. Казалось бы, когда ты маленькая часть большой команды, если у тебя что-то идет не так, тебе где-то нужно немного помощи, ты приходишь к большой команде, просишь, условно говоря, 3 разработчиков на три дня. Они все быстренько делают, а затем все вместе мы замечательно бежим дальше.
К сожалению, в рамках неизвестности, в которой мы существовали, как эксперимент, у нас был очень высокий порог входа, который повышался с каждым днем, сколько мы копали в своем направлении. Мы копали-копали и укапывали все дальше. И каждый следующий человек, который хотел бы к нам присоединиться или которому мы хотели бы предложить к нам присоединиться, должен был как-то это все наверстывать. Поэтому, пригласив человека к себе, условно говоря, на три дня, мы сначала должны были обучать его две недели, а потом он смог бы нам помогать три дня.
Но та же самая бюрократия, на которую мы очень ругаемся и которая казалась нам довольно вредной, местами была для нас и полезной. Потому что мы, совершенно ничего не вкладывая в организацию процессов, в организацию инструментов, получали все плюшки и бонусы от той Scrum-бюрократии, которая работала в большой команде.
Трансформация: попытка № 2
В такой системе мы просуществовали некоторое время. Потом я подумала, что пора что-то поменять, потому что ребята выглядят как-то озадаченно. И получился подход номер два. Но это произошло не сразу, а постепенно. Я постаралась просто разделить нашу организацию на какие-то выраженные периоды.
Итак, попытка № 2. Команду строительства я выделила в отдельный Scrum, чтобы они не участвовали ни в какой общей бюрократии: у них довольно мало точек соприкосновения с большой командой, особенно если говорить про внешние моменты (внешнее от зеленого сектора). Поэтому они были выделены в отдельный процесс.
Какие здесь все еще остаются минусы? Все еще слишком много чужой бюрократии, и команда совершенно начала запутываться, что и как должно происходить. Мы, вроде, все вместе делаем один продукт, но эти люди сюда ходят, а сюда не ходят, а вот эти люди сюда ходят, а туда не ходят. И как это все стыковать, непонятно: кому задавать вопросы, и в какой момент это должно происходить не было понятно ни большой команде, ни разработчикам, ни тем, кто мог бы заинтересоваться проектом или уже им интересовался.
Тем не менее, мы получаем все плюсы общих процессов и инструментов, но уже можем коммититься достаточно гибко, что при самом первом заходе было очень сложно делать. Сейчас нам работать становилось проще. Почему так? Потому что классический Scrum при планировании любого спринта требует, чтобы ты то, что пообещал сделать, то и сделал. Если ты пообещал новую версию продукта, давай новую версию продукта, пообещал какую-то фичу, будь добр, выложи. А когда мы говорим об эксперименте, об исследовании, сделать это просто невозможно. Мы не можем ни оценить то, чем мы занимаемся, ни пообещать что-то, что мы обязательно сделаем. Поскольку вполне возможно, что задачу, на которую мы запланировали потратить 3 дня, мы вообще никак не можем сделать. И все планы рушатся.
Когда мы выделили самый рисковый сектор в отдельный процесс, риски немного снизились. И у нас даже получилось в таких неопределенных условиях строить планы, за которые мы были готовы отвечать.
«Хаос на ручном управлении»: попытка № 3
В таком виде мы некоторое время существовали, а потом решили, что хватит терпеть, надо еще что-то изменить в лучшую сторону. И перешли к методологии, которую я называю «Хаос на ручном управлении», потому что она не вписывается ни в какую методологию, ни в какие правила.
Как это все устроено? Во-первых, горизонт планирования всех команд я уменьшила с двух недель до одной. Во-вторых, зеленый сектор большой команды машинки, который был, я вытащила из общего Scrum. У нас получился раздельный, но синхронный однонедельный Scrum. То есть команда строительства планирует раз в неделю по условному Scrum. И есть команда, которая делает машинку и которая планирует тоже раз в неделю, тоже по некому условному Scrumу.
Мы научились шарить контекст, как мы это называем, и даже приглашать на проект других людей на какую-то временную помощь – для тестирования и разработки. Мы получили разрешение, точнее, сами дали себе разрешение, коммититься, не завязываясь на спринты. Поскольку спринтов у нас больше нет, мы больше ни к чему не привязаны, и в любой момент, когда наши планы меняются, когда меняются планы наших заказчиков, когда меняется что-то, что происходит вокруг, мы не переживаем, делаем вид, что все так и задумано. И никакие планы у нас не нарушились.
Что из этого всего получилось? Плюсы, которые я вижу:
- мы используем максимум полезного от общей бюрократии, от общих систем, от того, что нам нужно, но используем минимум лишнего, что эти системы могли бы нам принести в нагрузку;
- у нас супергибкое планирование. Если немножко перестать лицемерить, это практически отсутствие планирования. Я, как руководитель проекта, знаю, чем моя команда будет заниматься неделю, две, квартал, месяц, полгода. Но мне ничего не стоит эти планы обновлять, условно говоря, раз в день, перестраивая их по собственному усмотрению. И никакие метрики, никакие показатели, никакие методологии от этого меняться и ломаться не начинают.
Так сложилось, что после того, как мы выделились в отдельный контур, мы назвали это все контуром, ребята из большой команды, которые смотрели на то, что у нас происходит, приходили на наши демо и видели, как мы делаем продукт, начали подумывать о том, чтобы тоже выделиться в отдельный контур, потому что им чуть поднадоела вся эта бюрократия.
Но один из самых больших минусов этого устройства – абсолютно немасштабируемый процесс. Команда, которая занимается проверкой гипотез и экспериментами, это команда численностью до полутора десятков человек. При привлечении каких-то смежников может быть 2-2,5 десятка человек, но ядро команды, ядро контура – это до полутора десятков, а то и до десятка человек. В командах большего размера «хаос на ручном управлении» превратится в абсолютно неуправляемый хаос.
Как сейчас выглядит процесс планирования
Я попыталась нарисовать, как весь процесс выглядит наглядно, для тех, кому проще воспринимать картинкой.
На картинке у нас три понедельника и две пятницы. Здесь абсолютно отсутствует выходные, чтобы упростить картинку.
Что у нас происходит? Во-первых, мы видим первую пятницу. Пятница – это день планирования большого Scrum большой командой, из которых мы ушли. Но поскольку налоги нам все еще платить надо, каждую вторую пятницу (1 раз в 2 недели) я (единственный человек из всей команды) участвую в планировании большого Scrum большой команды и забираю ту долю налогов, которая приходится на наше количество душ. Эти налоги я приношу на планирование команд в понедельник. В понедельник мы
планируем и ту часть команды, которая занимается машиной, и ту часть команды, которая занимается стройкой. И мы с ними договариваемся, что делать на ближайшей неделе. Если, конечно, ничего не взорвётся и не сломается в очередной раз.
Мы это все успешно делаем, после чего в следующий понедельник опять собираемся, опять пересматриваем свои планы на ближайшую неделю, успешно делаем это в ближайшую неделю. В пятницу происходит очередное планирование большого Scrum большой команды, нам досыпают еще налогов, я приношу их в следующий понедельник. И так далее. Примерно так все и длится.
Выводы
Что я могу сказать, какими выводами могу поделиться по поводу происходящего?
Во-первых, это работает. Звучит хаотично, но это работает. Прошел год. Мы проверили ряд продуктовых гипотез. Мы освоили новую платформу и новую технологию. Мы зарелизили продукт продакшн качества (простите за тавтологию, но иначе я сказать не могу). Это не бета версия, не альфа версия, это настоящий продукт, у которого есть своя аудитория, свои пользователи, свои процессы, свой саппорт – в общем настоящий продукт на новой платформе, на новых технологиях.
Мы пару раз кардинально сменили направление развития продукта по ходу дела, не теряя своей аудитории, не теряя свои процессы. И дважды частично сменили состав команды. Это то, о чем я говорила в самом начале: у большой команды разработки есть такая традиция, чтобы поддерживать мотивацию команды, чтобы ребята не начинали скучать, и чтобы они понимали во всем многообразии тех проектов, которыми занимается большая команда, мы проводим ротацию. И каждый квартал ребята меняют проект, которым они занимаются. И та часть большой команды, которая ушла в мой контур, тоже ротировалась. Чтобы сохранить преемственность и не стопорить продуктовую разработку, мы меняли не всю команду целиком, а только часть ее, чтобы было кому передавать наследство. Но в итоге мы дважды полностью свой состав сменили. И несмотря на это, продукт существует, продукт работает.
Когда нет смысла пытаться утрамбовать себя в узкие давящие рамки каких-либо методологий
Еще раз: я не пытаюсь сказать, что методологии – это плохо. Методологии – это здорово. Но у них есть своя область применения. И как мне кажется, эта область применения не распространяется на проекты с тяжелыми рисками высокой вероятностью выстреливания. Это могут быть новые технологии, новая платформа, которую вы не контролируете, или платформа, на которую, например, выходит какой-нибудь большой новый конкурент с серьезной заявкой на продукт. В общем – все, что угодно, где может случиться то, о чем вы еще до сих пор не знаете. Не нужно пытаться уложиться в какие-то правила, тем более, если эти правила чужие, если у вас не совсем свободная команда, как было в моем случае. Если ваша команда не все свое время посвящает вашему проекту, имеет какие-то долги или тянущиеся обязательства, возможно, вам не стоит пытаться рассчитывать, что она уложится в какие-то строгие рамки и правила той методологии, которую вы попытаетесь ей навязать.
И третий момент, когда не стоит пытаться на эту бюрократию тратить свои силы и энергию, – это когда вы занимаетесь разработкой прототипов или проверкой гипотез. Это не production quality код, это не production продукт, вообще говоря. Это то, что сделали на коленке, тяп-ляп и погнали. Здесь не нужна вся эта бюрократия. Здесь надо взять людей, у которых горят глаза от самой идеи, что надо что-то проверить, и на раз-два все сделать. И тут вам не нужны ни спринты, ни тикеты, ничего не нужно. Главное, чтобы работало.
Что нужно, чтобы хаос работал
Предположим, что вы попали в такую же ситуацию и решили отказаться от существующих методологий. Решили изобрести свой собственный метод решения этой уникальной проблемы. Что вам нужно, чтобы такой хаос работал?
Во-первых, вам нужен руководитель проекта с замашками гегемона. Абсолютно нескромный человек, который не только будет говорить, что это его «кусок», и сможет за него отвечать, но и готов вникать буквально в каждую задачу каждого своего исполнителя, задавать любые неприличные вопросы всем, включая исполнителей, заказчиков, спонсоров и тех, на кого он наткнется в коридоре. А еще он в любой момент должен быть готовым поменять кардинально направление своего движения, направление движения своей команды. Потому что непредсказуемость, риски…но об этом я уже говорила.
Несмотря на такого авторитарного руководителя проектов, без который у вас ничего не взлетит, у вас ничего не взлетит и без команды с высочайшим уровнем личной ответственности. Как я определяю высокий уровень личной ответственности исполнителей на своем проекте? Это человек, который отвечает на вопросы, которые я ему еще не задавала. Здесь работает связка, симбиоз моего профессионализма, моей экспертизы в том, как устроен рынок, куда надо бежать, какие правильные метрики и как их растить, и экспертизы, условно говоря, разработчика, который знает, как устроена технология, где что может выстрелить, какие есть варианты – то есть то, о чем я еще не подозреваю, но то, что мне понадобится при решении проблемы. Человек с высоким уровнем ответственности, выполняя задачу и натыкаясь на препятствие, которое мешает ему выполнить эту задачу, как исходно задумано, начинает предлагать мне варианты, как еще можно решить эту задачу. Человек с невысоким уровнем ответственности сядет и скажет, что не знает, как это делать, он не может. Нам такие люди не нужны, нам нужны люди, которые говорят: «Слушай, так не получается, давай иначе, я тут половину уже сделал, работает».
И третий очень важный момент: вам нужна обширная база для паразитизма. Когда вы обладаете властью над очень маленькой командой, и вам нужно сделать очень много, а планов мало никогда не бывает, вы совершенно не захотите тратить ни руки, ни время, ни нервы на обеспечение гладкой технологии производства. Ни на систему версионирования кода, ни на системы создания трекеров, ни на системы автотестирования – в общем, ни на что из этого вам тратить время не понадобится, если вокруг вас такая экосистема уже существует. Мне повезло работать в такой ситуации, когда система уже существует. К сожалению, без неё такая маленькая команда с хаотическими правилами существования имеет намного меньше шансов сделать продукт.
Вместо послесловия
Последняя мысль, которую я хочу донести своим рассказом. Методологии – это классно. Но не бойтесь иногда ломать правила. Даже если по этим правилам уже живет куча умных людей, очень умных людей, и вы их очень уважаете, и они очень давно по этим правилам живут, и у них все классно. Если вы считаете, что правило нужно сломать, ломайте и получаете от этого удовольствие. Не нужно этого бояться!
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION.