[Перевод] Ежедневные сложности сениор-разработчика

mu7ak205lceymmfw-nctiuftvea.jpeg

Больше десятка лет я работал на одну из крупнейших в мире компаний по разработке ПО. Выполняя множество задач, я видел многие аспекты бизнеса: от быстрого «ковбойского» кодинга до серьёзных покупок конкурентов и стартапов.

1. Планёрки


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

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

Однако митинги и сосредоточенность — настоящие враги. Я уже сбился со счёту, сколько раз мой планировщик отвлекал меня, сообщая, что через 15 минут мне нужно явиться на планёрку, пока я пытался разобраться в сложной концепции, которую недавно придумал. Разумеется, я заранее знал, что будет планёрка. Когда я смотрел своё расписание в понедельник, чтобы оценить время, которое у меня будет на написание кода на этой неделе, у меня не было никаких сомнений: мои рабочие дни заполнены совещаниями.

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

И знаете что? Эти знания в основном передаются на совещаниях. Поймите меня правильно, само по себе это хорошо.

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

Настала пора ещё одного совещания.

2. Огромная машина


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

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

«Но разве всем нам не нужно иметь возможность спокойно засыпать по ночам?», — шепчу я иногда на наших уютных планёрках.

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

И это опять-таки вступает в конфликт с концепцией Разработчика. У меня возникало бесчисленное количество ситуаций, когда я знал (или, по крайней мере, думал, что знал), что решение Б будет лучше, чем А с точки зрения производительности, удобства для пользователей или качества кода. Но у человека выше по иерархической лестнице или у важного клиента было другое мнение. И именно это мешает мне засыпать по ночам.

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

Есть странная двойственность — с одной стороны, ты хочешь быть частью механизма, с другой стороны, остаётся какая-то горечь.

Огромная машина — это довольно странная вещь.

6wiaxvmasabvhlxjihwzp-px-dg.jpeg

3. Качество кода и срок поставки


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

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

Срок сдачи проектов. Дедлайны.

Несложно понять, что качество кода и сроки сдачи не очень хорошо дружат.

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

Потому что над всеми нами нависает большая рука.

4. Проверка кода


Сразу признаю, что проверка кода (code review) является критически важной частью каждого отдела разработки. Я знаю это и соглашаюсь с этим.

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

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

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

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

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

5. Коллеги


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

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

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

Но такова неизбежность при общении с людьми, с коллегами.

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

Экстравертов это может порадовать, но я не экстраверт.

Заключение


У меня есть один коллега, назовём его Ларри.

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

Дело в противостоянии его и мира. Ларри против Огромной Машины.

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

Руководство не часто спрашивает, чем он занят.

Он создаёт самые невероятные решения и алгоритмы. Одно совершенное решение за другим.

Иногда я хочу быть как Ларри. Находиться на пустынном острове посередине океана. Только я и мой ноутбук.


На правах рекламы


Эпичные серверы — это надёжные серверы на Linux или Windows с мощными процессорами семейства AMD EPYC и очень быстрой файловой системой, используем исключительно NVMe диски от Intel. Попробуйте как можно быстрее!

8p3vz47nluspfyc0axlkx88gdua.png

© Habrahabr.ru