У вас случаются встречи, на которых 10 или более человек никак не могут договориться? Такое может быть и с архитектурными, и дизайн-решениями, и  процессами. В Dodo такое случалось. Это было мучительно больно и выматывающе, поэтому хочу поднять тему решительности или «куража», как это называется в экстремальном программировании.

Почему я? Когда-то давно, когда я ещё не была техлидом, я заметила, что у нас есть проблема с глобальными процессами. От этого страдали все, и я в том числе. В конце концов страдать мне надоело, поэтому я решилась изменить что-то хотя бы в собственной команде. И мне это удалось. Хочу поделиться опытом и рассказать о одном принципе, который помог мне тогда и помогает по сей день.

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

Кто делает, тот несёт ответственность

Сила планеты Уран, я делаю!
Сила планеты Уран, я делаю!

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

Расскажу историю. Давным-давно мы делали сайт. Архитектор придумал, как его делать, и попытался нам передать свою мысль. Мы поняли и пошли пилить. В итоге, несмотря на все объяснения архитектора, его задумка сильно разошлась с тем, что мы сделали.

Как же так? А так, что в рамках разработки вы каждый день должны примерять свою идею на то, как она ложится на реальность. Это непрерывный процесс. Чтобы в результате получилось решение, которое действительно соответствовало задумке архитектора, ему нужно было постоянно сидеть с командой, каждый день ходить на встречи, вникать во все особенности задачи, писать код и непрерывно давать нам обратную связь. По сути, он стал бы таким же участником команды, как и остальные. Если у вас одна команда и нет никакой другой менеджерской работы — возможно, это нормально. Но тут другой вопрос: вы нанимаете хороших специалистов, с головой на плечах, чтобы думать за них? Очень странная трата денег, мне кажется. А если вы таких не нанимаете, а нанимаете манки-кодеров, то искренне вам сочувствую.

К чему эта история: итоговое решение — это сложный конструкт, который складывается из миллиона маленьких решений, принимаемых каждый день, каждый час и минуту. И эти решения принимает тот, кто делает. А тот, кто решает — тот и отвечает.

Я считаю, что принятие решения кем-то другим — не тем, кто делает — это самообман! И эта мысль придаёт мне решительности.

Кто несёт ответственность, тот имеет право принимать решение

Сила планеты Юпитер, я принимаю решение!
Сила планеты Юпитер, я принимаю решение!

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

Возникла у нас недавно проблемка: баги, которые приходят с продакшена через саппорт, разбираются командами как-то медленно, деприоритизируются относительно других задач. Для команды саппорта это выглядит как полный кошмар, так как они отвечают за приём и обработку всей обратной связи с продакшена и коммуникации с партнёрами и клиентами по поводу сроков на исправление. Ребята видят, что качество проседает, но повлиять на команды не могут, так как решение о том, брать в работу баг или нет, принимает продакт-оунер конкретной команды. 

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

Ребята подняли этот вопрос. И не просто подняли, а создали процесс SLA по багам. Очевидно, что мы не хотели, чтобы наш продукт свалился в «пропасть баганутости» так, чтобы им невозможно было бы пользоваться. Тогда давайте научимся оценивать баги и установим суммарный порог по количеству багам, за который мы не скатываемся! А в случае, если мы до него доходим, то останавливаем разработку. Потому что если продукт настолько «баганутый», то от добавления ещё одной фичи пользователям лучше не будет. Им бы лучше, чтобы продукт работал без глюков. Для принятия порога по багам на все команды достаточно команды саппорта плюс CPO или CTO в качестве верифицирующего органа. И не нужны совещания с миллионами апрувов.

Если сформулировать это кратко: я принимаю ответственность за то, что делаю, это даёт мне право на принятие решений.

Если хочу сказать «нет» — говорю

Сила планеты Марс, я говорю «нет»!
Сила планеты Марс, я говорю «нет»!

Алгоритм действий такой:

  • Когда на вас давят, а вы понимаете, что если сделать, как говорят, то результат работы будет дурно пахнуть, так об этом и скажите: «Я считаю, что результат такого подхода будет плохим» и приведите аргументы, почему вы так считаете. Предложите вместе придумать лучшее решение, так как вы все заинтересованы в хорошем результате;

  • Eсли всё равно продолжают давить, тогда рождается другой вопрос: если человек, который будет это делать, сам не верит в успех идеи, из этого точно выйдет что-то хорошее?

  • Если и это не помогло, то возникает два вопроса. Какие последствия могут быть в случае факапа? Кто будет разгребать проблемы и насколько это будет болезненным?

    • Если последствия не велики или разгребать их будет, тот кто давит, тогда можно провернуть disagree and commitment: сделать так, как просят, но за результат целиком и полностью отвечает тот, кто настаивает. И обязательно проговорить или даже прописать, что разгребать последствия будет тот, чья идея.

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

Пример: приближаются новогодние праздники и продакт-оунер решает, что срочно нужно сделать и выкатить фичу, работы на 15 минут. Команда на PBR понимает, что фича не так проста, как кажется, и что её реально зарелизить только ближе к 30 декабря. Кроме того, зафичатоглить её полностью не получится. Команда принимает решение сказать продакту «нет». Аргументация звучит так: после релиза фичи на продакшене вполне могут всплыть баги или проблемы с нагрузкой, какой бы замечательный регресс мы не провели. Релизить что-то под занавес мы не будем: во-первых, в такое пиковое время можно получить кучу негатива от клиентов, а во-вторых, в новогодние праздники у всей команды не рабочее время и дожидаться исправлений пользователи будут долго. 

Да, работодатель или лидер могут быть не готовы отдавать принятие решений своим сотрудникам. В таком случае остаётся либо смириться с ситуацией, либо принять, что жизнь слишком коротка, чтобы отдуваться за промахи и косяки других людей. Победы тут тоже ощущаются не совсем своими, потому что за вас ключевые решения принимает кто-то другой. Решительность и смелость здесь будут в том, чтобы уйти. В возможности ощутить результат своим, плохой он или хороший, заключается огромная ценность. У каждого есть право на самореализацию через работу, на которой вы проводите 40 из 112 часов своего бодрствования в неделю.

В целом, у меня всё.

В этой статье остаётся нераскрытым:

  • как быть тим или техлиду в условиях, что принятие решений не теми, кто делает — это самообман;

  • что делать, когда понимаете, что у вас нет экспертизы для принятия взвешенных решений;

  • как принимать рискованные решения, когда это правда необходимо;

  • решительность в условиях социального неодобрения.

Я понимаю, что прочтение этой статьи не сделает нерешительного человека суперуверенного. Но если в нужный момент он вспомнит это правило, это придаст ему ускорения для перехода на новый уровень.

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

Надеюсь, эти мысли и вашу жизнь сделают проще:

  • Кто делает, тот и принимает решение.

  • Принятие ответственности даёт право принимать решения.

  • Если на вас давят, помните: вы можете сказать «нет».

  • Бегите от гиперконтролирующих лидеров.

Комментарии (24)


  1. kwazar1471
    27.12.2022 17:52
    +1

    И в других отраслях также! Спасибо!


    1. a_morozova Автор
      27.12.2022 18:23

      Рада, что вам это откликнулось!)


  1. scruff
    27.12.2022 18:08
    +4

    " зафичатоглить " О Всемогучий, что за суржик? Просто кровь из ушей. Как это разслышать взад?


    1. nronnie
      27.12.2022 19:42
      +2

      Для меня вообще так и осталось тайной что это слово означает.


      1. gdt
        27.12.2022 19:59
        +8

        Есть в принципе варианты:

        • Включать feature только когда соответствующий feature toggle включен

        • Закрыть feature feature toggle'ом

        • Зафичатоглить

          Ни в коем случае не оправдываю, но когда есть опыт с фича тогглами, вроде интуитивно понятно, о чем речь.


      1. caes
        28.12.2022 00:25
        +2

        Это значит - я у мамы знаю недосленг.


    1. evoq
      27.12.2022 21:29
      -4

      Вот так теряем красивую словесность. Показывая свою типа продвинутость делают блевотную солянку из нашего могучего и пресного английского


      1. F0iL
        29.12.2022 18:58

        и пресного английского

        это вы просто английский плохо знаете.


    1. insighter
      28.12.2022 06:36
      +5

      > Кроме того, зафичатоглить её полностью не получится.

      Перевод: не получится сделать задачу так чтобы её функционал можно было бы оперативно и безболезненно отключить без новых правок в коде.

      Обычный сленг, не понятно что смутило.


    1. nemo78
      28.12.2022 09:18

      Ну не нравится и не нравится. Если автор хочет формулировать свои мысли это его право. Главное что Вы поняли суть статьи ????????


  1. zverolyub
    27.12.2022 19:11
    -1

    Аня, спасибо за решительную статью! Прочитала с кайфом и одобрительными кивками, плюс просебяшными поддакиваниями.


  1. eaa
    27.12.2022 19:24

    Только сегодня с тимлидами обсуждали эту тему, и тут статейка прям вовремя.


  1. keymusicman
    27.12.2022 19:43

    Спасибо, заложил статью. Как раз сейчас в команде натыкаемся на проблемы, что продумывает как делать один человек, а делают другие. Регулярно какая-то часть знаний и требований теряется по ходу работы.


  1. evoq
    27.12.2022 21:34
    +2

    Подход в целом хороший, но нужно добавить условия - работает только для инхаус - процессов, требует высокой квалификации исполнителей, не подразумевает текучку... Думаю еще обязательные условия найдутся


  1. sshmakov
    28.12.2022 00:44
    +1

    Историю про архитектора не понял. Зачем вообще нужен весьма дорогостоящий архитектор, если на его решение можно наплевать и сделать по своему?


    1. a_morozova Автор
      28.12.2022 10:18

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

      Ответ на вопрос "В чем же роль архитектора или техлида в таком подходе?" нетривиальный и заслуживает отдельной статьи. Возможно, напишу её в будущем. Когда статья выйдет, скину её сюда и буду рада продолжить обсуждения в комментах под ней!


      1. sshmakov
        28.12.2022 11:14

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


        1. a_morozova Автор
          28.12.2022 15:04

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

          Мое мнение, что в нашем случае архитектор, когда стал решать за команду как ей код писать, напоролся на две проблемы. Проблема 1: другому человеку свои мозги не пересадишь. Проблема 2: когда делаешь что-то реально сложное, ты можешь не учесть всего в самом начале, и итоговое решение может сильно меняться исходя из той информации, которую ты получаешь начав что-то делать.
          Добавлю, что для уменьшения вероятности второй проблемы можно использовать подход с прототипированием.

          У вас были какие-то случаи из рабочей практики, в которых стреляли такие проблемы?


          1. HellWalk
            28.12.2022 17:25

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

            Это болезнь называется микроменеджмент. Когда вместо того, чтобы поставить задачу с точки зрения бизнеса (т.е. какой функционал нужен для клиента, и какие требования к скорости/масштабируемости) и спрашивать её также, начинают говорить "здесь такую табличку в базе создай", "тут такую библиотеку добавь".


          1. mortadella372
            28.12.2022 19:29
            +1

            уменьшения вероятности второй проблемы можно использовать подход с прототипированием.

            По опыту, так себе помогает -- прототип имеет меньшую сложность, меньший масштаб и так далее. Те на то, чтобы "учесть всё" в случаях, где прототип имеет смысл -- на это архитектора хватает. А вот всякие граничные кейсы, огромные объемы данных там где их не ждали, ну и вообще вся лабуда из реальной жизни -- всплывают после реализации, у реальных клиентов.

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

            Возможно, у меня просто хорошего архитектора не было. Ну.. таки да, не было.


            1. a_morozova Автор
              28.12.2022 21:07

              Конечно прототип не серебряная пуля. Тут могу только согласиться


      1. sshmakov
        28.12.2022 11:15

        А статью ждём


  1. HellWalk
    28.12.2022 10:17
    +1

    Да уж, кажется очевидные вещи, а нужно об этом рассказывать и доказывать.

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

    Впрочем, есть такой тип людей, которым бесполезно что-либо объяснять. По этому иногда решением является просто смена работы.


    1. evoq
      29.12.2022 14:55

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