Эта статья написана для блога Зиги на тему счастья/шума/карьеры/производительности разработчиков https://www.zigi.ai/blog/why-developers-dont-like-etas

Вы можете быть самым квалифицированным и опытным разработчиком на планете, но даже это звание не поможет вам, когда вы окажетесь в ситуации, требующей соблюдения определенного срока. Такая проблема — бич каждого разработчика. Это вопрос, которого вы стараетесь избегать, когда он возникает в разговоре. Почти сродни плохому слову или имени, которого лучше избегать, например тому, которое начинается с буквы «V» в сериале о Гарри Поттере. Что становится совершенно очевидным, когда вы работали над парой проектов, так это то, что жизнь идет не так гладко, как вы ожидаете. Неопределенность может возникнуть, когда вы меньше всего этого ожидаете, и ни один план не является надежным.

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

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

Нереалистичные ожидания

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

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

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

Слишком много запросов клиентов

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

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

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

Сроки

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

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

Откуда взялся этот баг?

Глобальная пандемия

Внешние факторы могут быть абсолютно губительными для проекта. Поговорим о слоне в комнате «коронавирус». В 2020 году в мир вышла долгожданная и долгожданная компьютерная игра. Игра была отложена на несколько месяцев, что уже было огромным красным флагом. Разработчики продолжали оправдываться за задержки, убеждая всех, что все будет хорошо. Что ж, игра наконец-то запустилась, и это была катастрофа. В игре было так много ошибок, что на игровых приставках было почти невозможно играть.

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

Непредвиденные задержки

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

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

Лучшее решение

ETA просто трудно созерцать; нет «одного решения», которое немедленно даст вам решение этой ужасной проблемы. Хотя это может быть так, все надежды не потеряны, если ожидания можно укротить и скорректировать с самого начала, чтобы все были на одной волне. И совсем не помешает объяснить, какие проблемы могут возникнуть, и дать понять клиенту, что разработчики не волшебники вроде Мерлина из «Короля Артура» или Гэндальфа из «Властелина колец». Мы не пишем заклинания, мы пишем код, и иногда он ломается.

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