Нам дают задачи и ставят сроки. Иногда сроки не реалистичны. Возможная причина — задачу не проектировали, не разбивали на этапы. Сложно установить сроки выполнения, основываясь только на интуиции и опыте.

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

Привожу советы, которыми руководствуюсь сам и которые меня ни раз выручали. Каждое утверждение требует обсуждения, осмысления и критики.
Тон статьи кажется категоричным. Сразу же извиняюсь за это. Для краткости опустил фразы “я думаю”, “я полагаю” и проч.

Поделюсь опытом на основе примера. Придумаем же следующую задачу. Цифры и сроки условные.

Разрабатываем сайт e-commerce, который продает детские игрушки. Оплата только наличными. Реализовываем оплату безналичными с помощью:
  • PayPal;
  • Yandex.Money;
  • QIWI Wallet;


Менеджер установил срок — неделя.
Вы покопались в готовом коде, изучили архитектуру, пораздумывали над этими требованиями. Вспомнили, что на нас висит еще 5 задач, которые никто не отменял. И осознали, что в установленные сроки вам не справиться.
Вы подошли к менеджеру, объяснили ситуацию. Менеджер ответил так:
  • Задачи срочные, успейте сделать
  • Ок, я приостановлю 2 задачи. Остальные 3 задачи выполняйте параллельно
  • Ок, я продлю срок этой задачи на 1,5 недели


Эти варианты вас не устраивают. Времени не хватит. Вы оказались в тупике и задумались о таких решениях:
  • придти на работу пораньше.
  • задержаться на работе подольше.
  • Вы и так постоянно задерживаетесь, задерживаться придется в 2 раза дольше.


Как же быть?
Тут поможет книга Стивена Р. Кови «7 навыков высокоэффективных людей»

  1. Будьте проактивными
  2. Начиная, представляйте конечную цель
  3. Сначала делайте то, что нужно делать сначала
  4. Думайте в духе выиграл — выиграл


Будьте проактивными — предложите решение возникшей проблемы. У некоторых менеджеров на двери даже висит соответствующая табличка “без предложений не входить”.

Начиная, представляйте конечную цель — конечная цель тут не решить задачу, а удовлетворить текущие потребности бизнеса.
Сначала делайте то, что нужно делать сначала — вот оно решение возникшей проблемы. Самостоятельно узнаем приоритеты и разобъем задачу на этапы!

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

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

Действия такие:
  1. Разбиваем задачу на подзадачи — проактивный подход. Не спрашиваем менеджера, делаем самостоятельно.
  2. Выясняем приоритеты каждой подзадачи.
  3. Разбиваем задачу на этапы.
  4. Совместно с менеджером корректируем сроки.
  5. Поэтапно решаем большую поставленную задачу.


Подзадачи получились такие:
  1. реализовать paypal,
  2. реализовать yandex деньги,
  3. реализовать QIWI wallet


Менеджер корректирует список подзадач. Приоритеты установили на основе процента клиентов, которые хотели бы пользоваться платежными системами. Получили такие этапы:
  1. Yandex.Money 60% пользователей
  2. QIWI Wallet 30% пользователей
  3. PayPal — 10% пользователей.


Совместно с менеджером установили такие сроки:
  1. Yandex.Money — 3 дня
  2. QIWI Wallet — 4 дня
  3. PayPal — 2 дня.


Результаты:

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

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

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

Выводы:
  1. Вместо оправданий и жалоб на неадекватные сроки вы предложили конструктивное решение — разбить задачу на этапы.
  2. С помощью диаграмм вы доказали сложность задачи и обосновали, что эту задача разбивается на этапы.
  3. Менеджер доволен — первый релиз (этап 1) состоялся раньше установленных сроков, появилась полезная документация.
  4. Вы улучшили навыки общения с менеджментом, избежали неадекватных сроков и больших переработок.
  5. Вы улучшили навыки проектирования и документирования за счет того, что предоставили некое готовое решение, которое улучших опытный коллега.
  6. Работа стала интереснее — вы узнали дополнительную информацию о проекте (приоритеты пользователей)


Выводы в виде советов:
  1. Приходите с готовым решением. Вы получите дополнительный бонус — ошибки корректируют.
  2. Не тратьте много времени на разбиение задачи на подзадачи. Смысл — подготовить черновик для обсуждения.
  3. Не приступайте к кодированию. Даже если менеджер спроектировал и нарисовал схемы до вас. Набросайте собственную интерпретацию задачи. Это позволит уточнить неясные моменты и сэкономит вам массу времени.
  4. Пробуйте расставлять приоритеты самостоятельно.
  5. Проектируйте сами и не рассчитывайте на то, что менеджер или тим лид вами всецело управляют и корректируют шаги. У них нет на это времени.


Ссылки:


P.S.
  1. Жду ваших ссылок и полезных советов в тему — добавлю в статью
  2. Если тема интересна — напишу статью, где на сложном примере разберу процесс проектирования и разбиения задачи на этапы.
Вам приходится не только кодить, но и проектировать?

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

Проголосовало 54 человека. Воздержалось 9 человек.

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


  1. dkukushkin
    10.08.2015 18:13
    +1

    Как же быть?

    Избавиться от рабской психологии, перестать быть мальчиком, об которого все ноги вытерают и найти нормальную работу.


    1. HotFire
      10.08.2015 18:42
      -1

      Рассмотрена простая задача и крайний случай, для упрощения изложения. Можно было бы конечно добавить «менеджер с вами согласился, но не полностью, ситуация вас до сих пор не устраивает». И подобное по каждому пункту. На мой взгляд это вода, которая и так всем понятна.


      1. dkukushkin
        11.08.2015 01:22
        +2

        Вы не в том ракурсе ситуацию рассматриваете. Вы как бы говорите себе «ты начальник, я дурак».

        Два варианта:

        1. Сроки вычисляете вы (нужны навыки, среднестатистический девелопер этого не умеет).
        2. Сроки вычисляет менеджер.

        Если менеджер некомпетентен, как в вашем случае, то работать с таким человеком и тем более что то ему доказывать — себя не уважать.

        Вам не нужно чтобы менеджер соглашался. Он выполнил свою работу — назвал срок. Делаете в своем привычном темпе. Если результат не совпадает с его прогнозами — то либо вы ничего не делали, либо он не компетентен и не умеет прогнозировать сроки разработки. Проводите разбор полетов, если нужно, и находите в чем проблема (в вашем случае менеджерит левый чувак, который думает что государством/проектом может управлять и кухарка)

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


        1. HotFire
          11.08.2015 08:44

          Рассматривается ситуация активного участия в проектировании. В некоторых небольших фирмах это допустимо. В фирмах масштаба Яндекс применимы принципы, о которых вы пишете в своих комментариях.

          Вообще, точные сроки (день в день, час в час, не раньше ни позже) мало кто способен вычислить. От этого и необходимость проектировать и обсуждать.


  1. HotFire
    11.08.2015 08:47

    В статье представлен крайний случай, чтобы не рассусоливать «вы понимаете, что точно в сроки успеть не сможете и будет задержка в 2 дня». Это бы увеличило публикацию в 1,5 раза. В принципе, такая манера изложения была выбрана на пробу. Какие есть комментарии по этому поводу?


    1. eugzol
      11.08.2015 15:10
      +1

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


      1. HotFire
        11.08.2015 15:12

        Конкретику планирую описать в следующей статье. Если тема интересна.


      1. AlexanderG
        13.08.2015 08:11
        +1

        Проектирование, декомпозицию и роль UML во всем этом разврате, на мой взгляд, очень доходчиво и на конкретных примерах описывает Крэг Ларман.


        1. HotFire
          13.08.2015 08:28

          Книга 2004 года. Все еще актуальна?


          1. AlexanderG
            13.08.2015 12:16

            Вполне. Сам язык не так сильно изменился, чтобы это как-то мешало (всё равно им серьезно никто не пользуется), а изложенные в ней принципы (agile-scrum, проектирование в целом) известны минимум лет 25 уже. Но модными стали только не так давно.


            1. HotFire
              13.08.2015 12:47

              Спасибо, Александр. Добавлю в статью