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

Я не могу сосчитать, сколько раз в своей жизни (или даже в году) я слышал, как люди говорят: «Я сделаю это вечером…», «Я сделаю это к утру понедельника…»

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

Вот почему очень важно сообщать о задержках и соответственно управлять ожиданиями.

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

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

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

В общем, при работе с командами код должен пройти дополнительные этапы. В том числе следующее:

  • Кодирование
  • Модульные / функциональные тесты
  • Обзор кода
  • QA подписать
  • UAT
  • Развертывание до промежуточного и вторичного тестирования
  • Развертывание в производство

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

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

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

Не запутайтесь

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

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

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

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

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

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

В результате он был заблокирован в офисе. Ни плоских ключей, ни ноутбука, только телефон в руке.

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

Трудно сказать нет

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

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

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

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

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

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

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

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

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

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