[Перевод] Ежедневные сложности сениор-разработчика
Больше десятка лет я работал на одну из крупнейших в мире компаний по разработке ПО. Выполняя множество задач, я видел многие аспекты бизнеса: от быстрого «ковбойского» кодинга до серьёзных покупок конкурентов и стартапов.
1. Планёрки
Большинство известных мне разработчиков любит свою работу. Они действительно обожают разработку, написание кода, создание программ и поддержку инфраструктуры, необходимой для того, чтобы их код увидел мир.
Для этого им часто нужно фокусироваться на том, что они делают. Наверно, именно в этом причина популярности шумоподавляющих наушников и AirPods, которые окружают нас в повседневной жизни.
Однако митинги и сосредоточенность — настоящие враги. Я уже сбился со счёту, сколько раз мой планировщик отвлекал меня, сообщая, что через 15 минут мне нужно явиться на планёрку, пока я пытался разобраться в сложной концепции, которую недавно придумал. Разумеется, я заранее знал, что будет планёрка. Когда я смотрел своё расписание в понедельник, чтобы оценить время, которое у меня будет на написание кода на этой неделе, у меня не было никаких сомнений: мои рабочие дни заполнены совещаниями.
Чем дольше ты работаешь, и чем лучше вы с коллегами справляетесь, тем больше знаний вы получаете. Ценных знаний. Или опыта, как их называют некоторые.
И знаете что? Эти знания в основном передаются на совещаниях. Поймите меня правильно, само по себе это хорошо.
Но когда я нахожусь в потоке и в процессе написания самого лучшего за мою жизнь кода (по крайней мере, эта мысль помогает мне засыпать по ночам), то последнее, что мне нужно — это крошечное напоминание в углу экрана, говорящее «Пора».
Настала пора ещё одного совещания.
2. Огромная машина
Мне очень повезло, я работаю в чрезвычайно крупной компании. И я каждый день благодарю за это судьбу.
Вероятно, поэтому тема этого раздела будет для меня особо актуальной. Но и каждый из нас, в том или ином смысле, является в своей профессиональной жизни частью чего-то большего. Главная задача наших компаний — писать отличный код.
«Но разве всем нам не нужно иметь возможность спокойно засыпать по ночам?», — шепчу я иногда на наших уютных планёрках.
Однако задачи этим не ограничиваются, они масштабнее. Мы должны выпускать продукты и сервисы. Удовлетворять потребностям наших конечных пользователей и заказчиков. В конце концов, заработать пару центов.
И это опять-таки вступает в конфликт с концепцией Разработчика. У меня возникало бесчисленное количество ситуаций, когда я знал (или, по крайней мере, думал, что знал), что решение Б будет лучше, чем А с точки зрения производительности, удобства для пользователей или качества кода. Но у человека выше по иерархической лестнице или у важного клиента было другое мнение. И именно это мешает мне засыпать по ночам.
Но нам приходится с этим мириться. Кроме того, чтобы оспаривать неправильные решения (как вы догадались, это происходит на бесконечных совещаниях), вы никак не можете повлиять на результат. Вам просто сообщат о решении. Сообщением по внутренней связи или коротким конференц-звонком. Нужно отдать должное, иногда люди прислушиваются к твоим аргументам. Это отлично, потому что не только поднимает самооценку, но и позволяет чувствовать себя частью Огромной Машины.
Есть странная двойственность — с одной стороны, ты хочешь быть частью механизма, с другой стороны, остаётся какая-то горечь.
Огромная машина — это довольно странная вещь.
3. Качество кода и срок поставки
Если вы добрались до этой части статьи, то уже могли заметить, как я люблю качество кода. Хороший код — это мой хлеб, почти в буквальном смысле. Мы можем долго рассуждать о написании идеального кода (которого не существует, должен заметить), но я думаю, что большинство из нас согласится, что это, по крайней мере, то, к чему мы стремимся.
Но догадайтесь, кто постучится в вашу дверь с большей неотвратимостью, чем уведомления планировщика на экране, пока вы выжимаете из IDE максимум?
Срок сдачи проектов. Дедлайны.
Несложно понять, что качество кода и сроки сдачи не очень хорошо дружат.
Надо сказать, что дедлайны, разумеется, могут быть отодвинуты, если качество кода нас пока не устраивает. Да, такое происходит. Но то же самое справедливо и в обратную сторону. Код поставляется, несмотря на то, что не имеет того качества, к которому стремится ваша команда в повседневной работе.
Потому что над всеми нами нависает большая рука.
4. Проверка кода
Сразу признаю, что проверка кода (code review) является критически важной частью каждого отдела разработки. Я знаю это и соглашаюсь с этим.
Но, честно говоря, изучение кода и решений, концептуально сильно отличающихся от утопических построений в моей голове — не самое любимое моё дело. Да, при этом многому учишься. А другие, надеюсь, тоже учатся чему-то из моей цифровой писанины.
Если ты работаешь сениор-разработчиком, у тебя постоянно просят обратной связи. Разумеется, во время самой проверки кода, но и в другое время тоже. У кофемашины, во время планёрок, даже когда ты чешешь спину.
Во многих смыслах это честь для тебя, потому что это означает, что твои мысли и отзывы ценят и уважают. И я отдаю этому должное, без всякого сарказма.
Но когда дело доходит до ежедневной профессиональной жизни и личного уровня, я предпочитаю нечасто смотреть на работу других людей. Я изучаю чужой код, только если хочу научится чему-то, или из любопытства.
Но я должен, у меня нет выбора. Чем более опытным ты становишься, тем больше изучаешь работу других людей и тем сильнее с ней связан. Нравится тебе это, или нет.
5. Коллеги
Этот пункт относится ко всем нам, вне зависимости от должности. Если вы только не создали гениальное приложение в гараже в одиночку, вам приходится иметь дело с коллегами.
Некоторые из них замечательны и могут даже стать вашими друзьями. Но надо признать: есть и другие. Такова природа человека: кто-то нам нравится, кто-то нет.
Те, кто нам не нравится, или те, «с кем у нас не очень хорошее взаимопонимание», могут писать красивый и качественный код. А некоторые из моих друзей — не самые лучшие из разработчиков.
Но такова неизбежность при общении с людьми, с коллегами.
Повторюсь: как мы уже поняли на примере проверки кода, чем больше у вас опыта, тем больше вам приходится общаться с людьми по работе.
Экстравертов это может порадовать, но я не экстраверт.
Заключение
У меня есть один коллега, назовём его Ларри.
Он целый день сидит в одиночестве в углу. Он намного умнее меня. Непохоже, что люди решили его сторониться: это он решил сторониться людей.
Дело в противостоянии его и мира. Ларри против Огромной Машины.
Он всегда посещает планёрки (за всё время не проронив ни слова), однако бОльшую часть времени он смотрит на экран или давит на клавиатуру с силой, на которую не рассчитывали её производители. Когда его руководство спрашивает, над чем он работает, он тихим и безмятежным голосом отвечает: «Вы знаете, над чем». И не отрывает при этом взгляда от монитора.
Руководство не часто спрашивает, чем он занят.
Он создаёт самые невероятные решения и алгоритмы. Одно совершенное решение за другим.
Иногда я хочу быть как Ларри. Находиться на пустынном острове посередине океана. Только я и мой ноутбук.
На правах рекламы
Эпичные серверы — это надёжные серверы на Linux или Windows с мощными процессорами семейства AMD EPYC и очень быстрой файловой системой, используем исключительно NVMe диски от Intel. Попробуйте как можно быстрее!