Написать пост

Почему вам не стоит становиться программистом — эксперты рассказывают о недостатках профессии

Аватар Никита Прияцелюк

Можно долго говорить о плюсах профессии программиста, но и у неё есть свои недостатки. Эксперты рассказывают, что это за недостатки и что с ними делать.

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

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

Высокий порог входа и сложность самой профессии

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

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

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

Стоимость ошибки

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

Чувство ответственности давит на разработчиков, хотя они и не несут, как правило, прямого риска наказания. Здесь можно порекомендовать использовать лучшие практики CI/CD (continuous integration / continuous deployment) с автоматизированным тестированием, практики парного программирования и проверки кода (code review), которые позволят минимизировать такие риски и обрести со временем чувство уверенности и покоя.

Отсутствие обратной связи, либо чрезмерно активная обратная связь

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

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

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

Реалии бизнеса/рынка

Здесь есть две проблемы.

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

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

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

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

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

Специализация

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

Разные люди делают разный выбор: кто-то пытается охватить максимум всего, постепенно становясь «фулстек» разработчиком, кто-то с самого начала отказывается от изучения дополнительных технологий и растёт только в своём стеке. И у того, и у другого подхода есть свои плюсы и минусы.

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

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

Скорость развития отрасли

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

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

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

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

Есть ещё кое-что: часто знакомые думают, что если ты программист, ты можешь починить всё, что угодно, например чайник. Но это весёлые мелочи.

Постоянная работа за компьютером

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

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

Устаревание знаний

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

Совет: следите за трендами развития технологий. Хотя бы раз в год ходите на профильные конференции, митапы или смотрите их в записи.

Необходим английский

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

Совет: учите английский. Банально поставьте английский язык на телефоне и компьютере языком интерфейса по умолчанию.

Много рутины

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

Совет: старайтесь автоматизировать рутинные задачи. Поверьте: потраченные сейчас 2 часа окупятся впоследствии.

Нарастающая конкуренция

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

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

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

На самом деле, большинство недостатков профессии программиста есть и у других профессий. И водители маршруток могут догонять свои квартальные планы по выходным, и бухгалтеры могут целый день сидеть в неудобном кресле перед монитором, и у поваров бывает дикая загруженность задачами, и у креативных ребят из event-агентств бывают неадекватные заказчики, и пилоты… Хотя нет, пилотов от этих всех недостатков старательно оберегают, и слава Богу! Профессия программиста отличается от всех остальных профессий тем, что она — исключительно интеллектуальная, здесь нужно именно думать, и основную ценность здесь имеют взвешенные и продуманные решения, тщательный анализ и умение абстрактно мыслить. Поэтому главный недостаток, который может быть у такого рода деятельности, это то, что твой труд оказывает влияние на твоё эмоциональное состояние и наоборот. Появились дикие переработки — и ты выгораешь, нет продвижения и амбициозных задач — ты теряешь мотивацию, дёргает заказчик — ты злишься. Во всех этих случаях ты эмоционально нестабилен, а думать и принимать решения в таком состоянии — это всё равно, что водить машину в состоянии опьянения: твои базовые навыки вроде бы работают, но из-за отсутствия концентрации ты обязательно наломаешь дров. Я не знаю другой профессии, где эмоциональное равновесие имеет большее значение. Невозможно как на конвейере штамповать код в любом состоянии (читаемый, корректно работающий, поддерживаемый код!) — программист, в первую очередь, должен решать проблемы, и в каждом конкретном случае ему необходимо принимать грамотные взвешенные решения.

Поэтому одно из главных условий успешной работы в нашей профессии — это поддержание внутреннего эмоционального равновесия. Это довольно сложно и очень индивидуально, но совершенно точно нужно высыпаться, стараться соблюдать режим труда и отдыха, переключаться с умственной деятельности на физическую, заниматься спортом и вообще переключаться на что-то, не связанное с разработкой — потом вы будете возвращаться к своей работе со свежим взглядом. Нужно обязательно подпитываться положительными эмоциями. Важный аспект — это самодисциплина. Профессия у нас, конечно, творческая, но при этом и требующая строгого выполнения всех обязательств. Поэтому очень желательно соблюдать режим дня, грамотно организовывать свой рабочий процесс и вообще быть к себе достаточно требовательным. Как говорил один из основоположников советской военной авиации Яков Алкснис: «От нечищенных ботинок до катастрофы — один шаг». Сюда же, кстати, можно отнести и грамотную организацию своего рабочего места: ничего не должно мешать вам думать, всё должно работать на то, чтобы этот процесс проходил продуктивно и результативно.

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

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

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

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

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

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

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

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

Итак, какие минусы есть у профессии программиста и что с ними делать?

Эксперты перечислили следующие недостатки профессии программиста:

  • высокий порог входа и сложность самой профессии — для облегчения входа в профессию нужно много читать о хороших практиках, стараться работать с профессионалами, и постоянно учиться — как в теории, так и на практике;
  • отсутствие обратной связи, либо чрезмерно активная обратная связь — определите, на каком уровне вы хотите взаимодействовать с клиентами и старайтесь работать там, где этот уровень поддерживается;
  • сложность с выбором специализации — тут можно ориентироваться на свои предпочтения: хотите ли вы знать много технологий на не очень высоком уровне или же отлично разбираться в чём-то одном;
  • скорость развития отрасли — с этим вы мало что можете сделать. Вы либо постоянно учите что-то новое, либо закрепляетесь за каким-то стеком технологий и надеетесь, что он не устареет слишком быстро;
  • постоянная работа за компьютером и вытекающие проблемы со здоровьем — делайте перерывы в работе и занимайтесь спортом или просто внесите немного физической активности в вашу жизнь;
  • овертаймы, дедлайны, общая интенсивность работы могут негативно сказываться на многих вещах, включая work-life баланс и взаимоотношения с людьми — чтобы избежать таких проблем, нужно с самого начала карьеры отделить работу от всего остального и найти себе «опору», не связанную с программированием, например, проводить больше времени с близкими;
  • много рутины — старайтесь автоматизировать рутинные задачи. Два часа работы сегодня могут сэкономить много времени в будущем;
  • необходим английский — это нужно как для общения с коллегами/заказчиками, так и для изучения новой информации, которая может быть переведена на русский с сильным запозданием или не переведена вовсе. Совет: учите английский. Да, вот так просто;
  • большая конкуренция — постоянно развивайтесь, охватывайте широкий спектр технологий, следите за ситуацией на рынке, чтобы знать, что нужно работодателям.

Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики. Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Советы
Карьера
76143