Привет! Мы команда сопровождения GlowByte, и мы решаем сложные проблемы. Если проект не хочет брать на поддержку ни одна команда, если с проекта ушли все ключевые сотрудники, если проект бросили разработчики, если на проекте экзотические технологии или же проект захотел отказаться от технической поддержки и порушить все свои бизнес-процессы, то есть отличный повод прийти за помощью к нам. Это история о том, как иностранный вендор бросил крупный проект, о том, как мы пытались протянуть руку помощи, и о том, что мы точно делали НЕправильно.
Хаос проблем
Итак, всё началось с ухода с российского рынка вендора, который предоставлял комплекс ПО по принципу SaaS (ПО как услуга). Вся система была полностью закрытой, никто о ней ничего не знал, не умел поддерживать, управлять и исправлять баги. С такой системой наедине остался один из крупных ритейлеров России. Найти новое решение с ходу – это сложно и больно. Поэтому нашему заказчику понадобилась помощь в поддержке этого “космолёта” до тех пор, пока не случится импортозамещение. Заходить в такой проект как минимум опасно: нет ни документации, ни исходного кода, ни мониторинга. Но зато есть отличные баги, критические для бизнеса проблемы и паникующий заказчик.
Многолетний опыт подготовил нас к приёмке проектов, у которых внедрение проводила команда, которая готова взаимодействовать и общаться. В нашем случае – от команды внедрения уж след простыл, зато осталась закрытая система и большой ком проблем с её работой. Несмотря на сложности, мы смело вызвались помочь, аргументируя свою решительность тем, что имеем опыт работы с подобными технологиями. И... нас завалило заявками в Jira сразу после приёмки. Все они были сложные, часто непонятные.
Отметим, что мы пришли на проект, когда в системе уже начались аварии. Аварией называлось всё, что приводило систему в неработоспособный вид и не решалось, потому что было не понятно, что произошло.
Сама система, как мы упомянули выше, была закрытая, многокомпонентная, со сложными связями этих компонент, а заказчик оказался совершенно не погружённым в техническую часть.
Над заявками днями напролёт работала команда из 5 человек, все закапывались в первоисточниках причин инцидентов, но заявок становилось больше. К тому же каждый накапливал локальный кусочек знаний, формировал собственный опыт, но не обогащал им единую экспертизу.
Поначалу мы не фиксировали промежуточные статусы в заявках, поскольку решили погрузиться в суть и не плодить отписки. Но для заказчика отсутствие комментариев стало выглядеть так, что мы ничего не делаем.
Вдобавок наложились последствия поспешного знакомства с командой заказчика и с подходами к ведению заявок. У заказчика был опыт работы с вендором, который сам предупреждал баги в системе по своим методам мониторинга. У нас же был опыт реакции на инциденты, заведённые в Jira. К тому же мы в спешке не успели обговорить детально, что нужно обеим сторонам в нашем прекрасном взаимодействии.
Так проект сопровождения стал выглядеть клоком запутанной шерсти, где никто не знает, что делать: ни заказчик, ни мы. В выше описанных проблемах мы прожили 3 месяца. Ситуация слишком затянулась, настал момент решительных действий.
Что мы в итоге поняли
Рецепт всех решений кризисных ситуаций обычно складывается из простых ингредиентов: дисциплина, ответственность и структурирование. Всё это соединяется через коммуникацию, видение потребностей заказчика и чёткое понимание интересов, которые защищаешь. Несмотря на очевидность, проектные проблемы не решаются по единому образу и подобию, а на сочетаниях простейшего рождаются такие истории, как эта.
Мы проанализировали сложившуюся ситуацию, создали гугл-док с жалобами, недовольствами, предложениями и пожеланиями к процессу ведения проекта.
Первой проблемой в этом списке стала приёмка проекта. Обычно мы принимаем проект по принципу ITSM/ITIL: заказчику рассказывается, что он может заводить заявки, если встречает в своей системе проблему, а мы должны “решить” заявку и предоставить ответ. В рамках текущего проекта это не сработало, потому что заказчик хотел от нас самостоятельного мониторинга работоспособности системы.
Это привело к тому, что мы не договорились о том, как сопровождать проект, потому и не приняли проект на саппорт нормально. Исполнители заявок ничего не знали о бизнес-смысле системы, логической схеме или архитектуре, зато ориентировались в деталях какой-то из этих частей. Каждый из нас перечитал все заведенные заявки, комментарии и чаты, для дальнейшего эффективного сотрудничества был составлен список вопросов к команде и заказчику о задачах приложения, архитектуре, инфраструктуре, используемых технологиях, а также 3–4 резюмирующих вопроса к каждой заявке, что давало возможность раскрыть суть происходящего внутри системы.
Ретроспективно мы поняли, что погружаться в запутанные проекты с непонятными технологиями стоит по чек-листу, сформировали концепцию, в которой проект разложили по частям на технологии и составили список вопросов к интеграциям на на них, провели ряд встреч по закрытию этих вопросов. В результате мы сформировали верхнеуровневую архитектурную, логическую и инфраструктурную схему, наработав таким образом “артефакт” приёмки проектов на новых технологиях.
Кстати, ещё одной нашей проблемой было то, что мы не коллекционировали свои знания по погружению в проект. Мало кто любит писать документацию и наполнять базу знаний, часто эта задача воспринимается как факультативная при наличии внушительного количества открытых заявок. Однако отсутствие централизованного знания системы априори делает проект тяжеловесным и неповоротливым, зависимым от конкретных исполнителей и не масштабируемым. Потому мы пришли к правилам и регламентам, разработали структуру, согласно которой по 3–4 резюмирующим вопросам к заявке надо было написать инструкцию, причём на написание ставились дедлайны.
Очень важно было, чтобы инструкции в базе знаний отвечали на вопросы: что это и как это делать. Все документы проходили модерацию и заносились модератором в базу знаний. Так, по сути, мы “наработали” инструмент ведения базы знаний, который стал намного эффективнее, чем добровольное согласие людей писать инструкции.
Конечно, можно подумать, что заставить кого-то писать инструкции, пока у него завал в проектных задачах, – плохая идея. Но это сработало, потому что была решена ещё одна проблема – мы изначально неправильно распределяли заявки и не строили таймлайны на день. В условиях большого количества открытых заявок ошибочно казалось, что не эффективно команде самостоятельно и хаотично планировать своё время, сбивалось понимание о приоритетах, один исполнитель мог делать несколько критических заявок, а другой – одну, но долгую, с низким приоритетом. Хранителями экспертизы были одни и те же люди, и если по технологии, в которой разбирается лишь один человек, приходила новая заявка, то она автоматически падала на него, даже если у него и без того завал.
Итак, мы стали проводить регулярные дейли статусы, на которых обязательно обсуждали, что каждый из исполнителей сможет сделать за день, составляли план приоритетов задач, обсуждали, что удалось и не удалось сделать за прошедший день. Если что-то отклонялось от плана, то за этим было легко и удобно следить и принимать решения. В этот же таймлайн задач мы внесли обязательное регламентное наполнение базы знаний. Всё это позволило команде быть постоянно в курсе проблем на проекте, что повысило в дальнейшем эффективность принимаемых решений.
Мы выработали структурированный подход к ведению внешних и внутренних встреч, регламент слежения за прогрессом и безрисковое управление ходом ведения инцидентов. По сути, мы внедрили Agile-подход.
Отдельной глобальной проблемой проекта была грусть в коммуникации с заказчиком. Если нам что-то нужно было от него (доступы, ответы на вопросы), эти запросы зависали без движения, ничего не решалось. А если у заказчика были недовольства к нам, то они, как правило, доходили только через эскалацию. Мы решили больше разговаривать. Назначили регулярные встречи, на которые приходили представители всех команд заказчика, структурировали повестку и стали вести статусы. В повестку обязательными пунктами внесли критические вопросы и обсуждение статуса каждой проблемы с ранжированием по приоритетам.
Что мы ещё делали не так? Верных акцентов в решении заявок. Как пример, для критического инцидента было найдено обходное решение, и он сам перестал быть критичным, но мы продолжали искать первопричину ошибки, откладывая временно в сторону дефекты, которые хоть как-то аффектили на систему. После осознания происходящего мы стали больше внимания уделять решению проблем и не закапываться в технических безднах инцидентов.
Делегировать надо правильно
С приходом на проект мы заметили, что многие задачи имели абстрактное описание, но не предполагали абстрактного решения. Когда команда не знала, как решить задачу и с чего начать, в ход шли проверки всех теорий и гипотез, и, в конце концов, это приводило к тому, что уже было не ясно, что проверять. Наступала тупиковая ситуация. За заявку брался другой исполнитель и проверял добрую половину уже проверенных гипотез. Мы пришли к выводу, что пора выбираться из такого тупика. Стали обсуждать на встречах шаги решения проблемы, включая гипотезы её возникновения, параллельно ведя протокол того, что и кому нужно сделать. Причём шаги должны были быть декомпозированы так, чтобы трудозатраты на выполнение одного из них были не более 4 часов.
Также мы по максимуму избавились от абстракции и поставили подзадачи с чётким результатом на выходе. Это всё дало возможность более последовательно и быстро начать “решать” треки и в случае необходимости наглядно видеть, какие технические ресурсы ещё нужно привлекать для решения.
Армия в рабочих процессах
Как было упомянуто выше, дисциплина является важным обстоятельством нивелирования рисковых ситуаций. Мы стали вести проект с ориентиром на измеримые показатели (наличие комментариев в Jira, прогресса по решению заявок у каждого исполнителя, обходного решения в сроки), более тщательно планировать загруженность команды с детализаций до одного дня. Если у кого-то не получалось выполнить установленный объём работы за день, обсуждали блокирующие вопросы и помогали друг другу их решить. Проводили ежедневную общую встречу, где актуализировали статусы своих задач.
Если вам кажется, что армейская дисциплина может убить все рабочие процессы в подобного рода ситуациях, то это не так. Баланс между бюрократией и полной анархией решается правилами и регламентами действий для каждого. Когда понятно, какой процесс, для чего и как работает, – всё идёт легко. Более того, технические специалисты работают эффективнее, когда им не нужно заниматься менеджментом.
Итак, дисциплину мы отдали тимлиду, а радость от решения технических задач – команде.
Коммуникация "достать мёртвого"
Заказчик, не отвечающий вовсе или отвечающий не вовремя, – типичная ситуация, с которой можно столкнуться на проекте.
Когда входишь в проект, многие вопросы, такие как доступ к приложениям и компонентам, обратные уточняющие вопросы по заявкам, являются острыми и актуальными для продвижения решений инцидентов вперёд. Если заказчик медленно отвечает или не отвечает вообще, то коммуникация в стиле “достать мёртвого” – вполне себе действенный способ. Найти 33 способа переспросить и апнуть один и тот же вопрос разными словами и разным эмоциональным окрасом ожидания и при этом не достать окончательно заказчика – не просто, но очень эффективно. Зачастую это помогает отодвинуть проект подальше от кризисной черты.
Так общаться всегда не просто, и не каждый готов это делать, но результат не заставит себя ждать. Такая же коммуникация работает и в обратную сторону, когда на стороне команды исполнителей происходят торможения. Благодаря такому стилю общения становятся лучше видны проблемы обеих сторон.
Анализируя проблемы одну за одной, мы пришли к решению каждой путём чёткого структурирования процессов и применения техник Agile. Тем не менее поддержка – это не та сфера, где подход управления проектами в стиле команд разработки уместен всегда. Это связано с тем, что инциденты систем – слабо прогнозируемое явление. Наработав экспертизу в особенностях проекта, создав паттерн приёмки нетипичного проекта на сопровождении, сформировав базу знаний, на выходе мы получили (почти) классический стиль ведения проектов сопровождения. Подход стал работать сам на себя и планомерно развиваться. Целевой процесс не потребовал плотного курирования, отдельно выделенного на фуллтайм менеджера и такого большого количества исполнителей. Мы сократили расход ресурсов, нормализовали управление и вывели проект на стабильный уровень.
Итак, несмотря на то, что история этого проекта изначально не предполагала иметь счастливый конец, happy end всё же случился. После ряда масштабных манипуляций в менеджменте проекта мы добились того, что поддержка проекта встала на устойчивые рельсы, команда начала успевать выполнять свою работу, а у заказчика перестали простаивать важные бизнес-процессы. Ключевое – дальнейший менеджмент проекта стал поддерживать сам себя: были выработаны паттерны ведения проекта, обязательные условия и поручения, которые обеспечили проекту длительную жизнь без привлечения кризис-менеджеров.
Комментарии (19)
fire64
07.09.2022 09:59+6Одно дело, когда вы берете проект из технического интереса и хотите за счёт этого повысить свою экспертность, совсем другое дело, когда берете коммерческий проект и при этом даёте какие-то обещания клиенту, не имея хоть какого-то понимания.
Поддержу предыдущего комментатора - это не проблема команды специалистов, это проблема неправильного менеджмента.
Как результат, у клиента все стоит, ничего не работает, он терпит убытки и наезжает на менеджмент, который давал обещания. Менеджмент наезжает на спецов, а те в принципе не могут решить вопросы. Я бы из подобной конторы давно бы ушел.
п.с.
Видно, что статью писал менеджер. Понимаю, что возможно у вас действует NDA, но вы хотя бы написали общую информацию, для чего предназначен софт, с какими проблемами сталкивался заказчик, как их решали и т.д.
usego
07.09.2022 10:27+1С точки зрения бизнеса правильность или неправильность измеряется в деньгах. Если это приносит деньги, хоть через боль и через слёзы, и не умирает за N лет, то вполне имеет право на жизнь. В экосистеме у всех свои ниши. Даже в канализации кипит жизнь.
fire64
07.09.2022 14:51+2Вопрос спорный, да может проект они осилят, на выходе прибыль получат, но боюсь специалисты в отличие от менеджеров в таком режиме долго работать не смогут. Особенно с такими требованиями от руководства. И когда технической команде это надоест, они просто свалят оттуда.
Daniella_Starchenko Автор
07.09.2022 23:18Описанные меры были актуальны в кризисной ситуации, которая возникла. Команда это понимала и была готова к таким мерам. После нормализации ситуации на проекте мы пришли к комфортным условиям как для заказчика, так и для команды
Daniella_Starchenko Автор
07.09.2022 23:12Описывали менеджерские процессы больше, но если интересно о чем софт, то он предназначен для реализации программ лояльности у заказчика. Система предполагает работу с большим количеством данных в БД (ETL процессы, сегментация данных, realtime обработка входящей информации и тд). Из проблем, которые сразу были наиболее критическими: производительность, ошибки при отработке бизнес-процессов (не правильные данные, конечный пользователь видит в приложении неверную информацию, неверно работают бизнес-акции и тд). По техническому решению таких проблем возможно будет отдельная статья
polar_yogi
07.09.2022 10:48+5Нет ни документации, ни исходного кода, ни мониторинга.
Анализируя проблемы одну за одной, мы пришли к решению каждой путём
чёткого структурирования процессов и применения техник Agile.Решение проблем при отсутствии исходного кода, документации и мониторинга путём структурирования процессов и внедрением Agile - звучит невероятно круто.
Ivan22
07.09.2022 11:03+3"Вы прослушали точку зрения менеджера на то почему он молодец, а теперь дадим слово самим специалистам"
fire64
07.09.2022 11:29+2А дальше будет непереводимая матерная речь... По поводу проекта и менеджмента))
Daniella_Starchenko Автор
07.09.2022 23:23Ситуация, когда у проекта не было ни исходного кода, ни документации, ни мониторинга была сложной и для команды. Специалисты сами пришли за помощью к менеджерам, потому что уже не было сил разрываться между запутанной техникой и поддержкой управленческих процессов
ArgosX
07.09.2022 11:44+2Осилил. Выскажу мнение что вы решили задачу тупо затянув все гайки. Введя максимальное количество совещаний как внутренних так и внешних, заставляя писать комментарии к заявкам, документации, мануалы итд. Представляю как команда вешалась при таком раскладе ... Пытаетесь донести до аудитории, что такой по сути совковый подход, это не такое и плохое решение?
Мне довелось работать и при совковом подходе (стиль управления Диктатор) и при современном (Лидер+Менеджер). И именно при свободном подходе у меня КПД было самое эффективное.
Дисциплина как и профессионализм зависит прежде всего от набранных работников, а не от того, что ситуация требует. Профессиональный инженер как минимум сам для себя пишет мануалы или заметки оставляет как решил проблему. Профессиональный инженер будет решать проблему, если будет грамотно и понятно поставлена задача. Тут больше вопросов именно к руководству этой команды, а не к исполнителям и уж выдавать за заслугу, то что задушили максимально исполнителей заявок это уже совсем некрасиво.
fire64
07.09.2022 12:52+2Эта статья, яркий пример того, как делать не стоит. При этом они пишут о многолетнем опыте на рынке по поддержке таких проектов.
Сугубо мое мнение, специалисты у них молодцы, менеджеры не очень. Особенно некрасиво то, что менеджер себе в заслуги ставит решение проблем...
ArgosX
07.09.2022 14:29Я именно об этом и говорю. Очень интересно было бы послушать отзыв непосредственно исполнителей. Уверен много чего узнаем о компании и руководстве =)
Daniella_Starchenko Автор
07.09.2022 23:29Решение отлично сработало в таком кейсе. Соглашусь с тем, что постоянное напряжение как в армии на работе не хорошо для команды, но здесь было немного иначе. И команда и менеджмент понимали всю критичность ситуации и совместно были готовы "затянуть гайки". По итогу все пришли к более лояльным процессам (которые и не роняют теперь проект) после решения накопившихся проблем
ElvenSailor
08.09.2022 18:33Выглядит, как будто команда замахнулась на то, что ей не по зубам - просто по причине количества.
А как проект поживает? Пациент жив, или скорее, мёртв? )
Daniella_Starchenko Автор
09.09.2022 10:44После преобразований на уровне менеджмента проект чувствует себя прекрасно. Команда справляется с задачами на нем
MechanicusJr
Три месяца выяснялось, что менеджмент подписался на то, на что команда не способна
Спустя еще видимо три месяца появлянется статья "мы молодцы".
Sano000
Ну процессы наладились, значит способна. Несколько месяцев притирки для крупных проектов вполне нормальный срок. Принимать огромное хозяйство без содействия прошлой команды очень трудно (да и с содействием бывает не легко), и проблемы ожидаемы.
MechanicusJr
Статья на хабре - это не процессы наладились, а потребовалось пиара добавить.
Daniella_Starchenko Автор
Специфика поддержки обычно предполагает менеджерские подходы, которые в конкретном кейсе сильно не сработали и пришлось перестраиваться в моменте