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

1. Слишком много времени за экраном

Программирование по своей природе требует довольно много экранного времени. Это единственная вещь, которую разработчик Guardian Software Systems Эрика Гилхубер ненавидит в работе разработчика: «Даже если делать частые перерывы и использовать множество других методов профилактики, к концу дня мои глаза настолько устают, что я не могу даже смотреть на облака».

Как же преодолеть последствия чрезмерного долгого пребывания за экраном? По словам Гилхубер, очки, отражающие синий свет, могут стать отличным подспорьем. Кроме того, «настройка ночной подсветки в Windows — это потрясающая вещь. Повысьте ее интенсивность выше обычного уровня, и уже через пару дней она не будет выглядеть оранжевой». Она также использует темный режим везде, где только можно — в настройках ОС, темах, расширениях браузера и т. д.

2. Клиенты, которые не разбираются в технологиях, но думают, что разбираются

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

Еще хуже, по его словам, «клиенты, которые думают, что понимают технологию, но это не так», особенно клиенты, которые уверены, что они точно знают, как что-то должно быть реализовано, потому что они об этом где-то разок прочитали или посмотрели видео. «Моя перспектива как независимого разработчика во многом зависит от наличия довольных клиентов и их рекомендаций или отзывов. Но „удовлетворенность“ — это не просто выполнение того, что вы просите меня сделать, компетентно и недорого».

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

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

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

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

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

Инженер-программист SoftwareMill Scala Бартломей Жилиньски говорит, что очень сложно работать с компаниями, которые «не знают, чего хотят, но это должно быть готово вчера». Часто возникает несоответствие между тем, что хочет клиент, и тем, что возможно с учетом бюджета, времени и ресурсов.

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

3. Переключение контекста, которое нарушает ритм работы

Разработчикам приходится жонглировать различными задачами. В программировании переключение контекста означает сохранение с возможностью последующего восстановления состояния потока или процесса, чтобы его выполнение можно было возобновить позже. «Переключение контекста — это иногда выматывает, — говорит технический директор Over-C Джеймс Шугру. — Оно необходимо, когда что-то ломается в неподходящий момент, например, в выходные или когда вы пытаетесь расслабиться, либо когда вы занимаетесь своими делами и начинаете заниматься какой-то ошибкой».

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

4. Зависимость от технологий и команд

Хотя технологии могут облегчить жизнь разработчика, они также могут создавать препятствия. Дейв Фекак, основатель компании Resume Raiders и группы пользователей Java в районе Филадельфии, сетует, что как разработчик он не может полностью контролировать ситуацию. Существуют зависимости от вещей, которые он не создавал, включая инструменты, API, Open Source-продукты, от других людей, имеющих доступ к вашему коду, и т. д.

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

5. Реализация чужих разработок

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

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

6. Старые практики кодирования, которые становятся новинкой

Несмотря на то, что программирование довольно сильно выросло в популярности, оно отнюдь не является чем-то новым. Основателя Mad Botter Майкла Доминика беспокоит то, что некоторые древние концепции кодирования всплывают в качестве новых идей. «В целом я люблю разработку ПО, но одна вещь, которая с годами стала меня раздражать, — это то, что старые идеи выдаются за совершенно новые», — говорит он.

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

7. Выполнение чужой работы

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

«Я ненавижу выполнять работу своего менеджера», — говорит инженер-программист Пэм Селле из компании Abstract. Она видела, как менеджеры перекладывают всю организационную работу на отдельных исполнителей, вместо того чтобы дать указания о том, что нужно сделать каждому.

«Если менеджеры занимаются управлением, это позволяет мне работать как инженеру, потому что это моя работа!», — восклицает Селле.

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

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

По словам Селле, у этой проблемы есть решения. «Как бы ни ругали крупные корпорации за то, что у них, скажем, есть „лучшая из всех Jira“, менеджеры, работающие над тем, как поддерживать поток работы, направляемых инженерам, действительно позволяют им сосредоточиться на разработке и благодаря этому работать лучше».

Сможете ли вы смириться с отрицательными сторонами?

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

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