этому тебя никто не учит

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

Как разработчики, мы учимся избегать неопределенности, и часто ожидается, что мы ее устраним. Сколько времени займет этот (неясно) проект? С какими проблемами мы столкнемся, если отдадим предпочтение направлению А, а не направлению Б? Если вам когда-либо приходилось отвечать на такие вопросы, как те, и если вы старший разработчик, у вас, вероятно, есть, вы знаете, что любой честный ответ не сработает там, что заинтересованные стороны или менеджеры, задающие эти вопросы, ожидают от вас уверенности. Это займет 5 с половиной недель. У нас будет только две проблемы с направлением А, это проблемы, и вот как с ними справиться.

Можете ли вы устранить неопределенность?

Много лет я думал, что смогу. Я считал неопределенность недостатком подготовки и планирования. *Как может кто-то не быть в состоянии точно оценить, если он делал это много раз раньше?*. Конечно, это была дурацкая игра.

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

Когда заинтересованное лицо или менеджер просят вас об определенности, они знают, что вы не можете им ее дать. Тогда не ждите, что вы избавитесь от неопределенности, они ожидают, что вы примете на себя риск.

Что никто не учит вас, как это сделать

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

Прежде всего, вы признаете и принимаете риск этого. Вы не можете гарантировать день, когда проект будет завершен, или вы не можете гарантировать, что 100% объема будет реализовано к указанной дате. И это хорошо, я думаю, что если мы все согласны с тем, что эти вещи не могут быть гарантированы, мы начинаем принимать решения с этой информацией и сводим к минимуму неопределенность: если у нас жесткие сроки, какие самые важные функции нам нужны сделать сначала? если мы не можем справиться с проектом, который занимает неопределенное количество месяцев, как мы можем разбить проект, чтобы вместо этого иметь дело с неопределенным количеством недель?

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

Какова ваша роль как разработчика?

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

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

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

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

Это создает противоречие: менеджеры не хотят начинать движение без четкого и подробного плана, а у разработчиков не может быть четкого и подробного плана, пока они не начнут движение.

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

Практические советы

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

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

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

Заключение

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

Не позволяйте неопределенности тяготить вас!

Если вам понравилась статья или вы нашли что-то полезное, пожалуйста, дайте мне знать в комментариях!

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .