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




Казалось бы, такая рациональная и основанная на логике профессия вряд ли будет восприимчива ко всевозможным выдумкам, однако сообщество разработчиков по-прежнему сталкивается с мифами настолько распространенными, что они начинают проникать в реальность. Будь все эти мифы правдой, мир программирования напоминал бы когорту 20 летних гиков, использующих свои высокие математические навыки для того, чтобы кодить в любое время дня и ночи. Если вы работаете в этой сфере, вы вероятнее всего знаете, что это вовсе не так. Однако, даже сами разработчики склонны верить некоторым предрассудкам. Давайте разбираться.

1. Хорошие разработчики работают круглосуточно


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

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

2. Чем больше людей проверит код, тем меньше багов


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

3. Математические навыки определяют навыки разработки


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

4. Разработчики – гении


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

5. Достаточно освоить что-то одно


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

6. Язык Х лучше


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

7. Овладеть языком можно за несколько недель


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

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

8. Выход продукта в продакшн = конец работы над проектом


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

9. Программирование — это просто написание кода


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

10. Программирование – не творческое занятие


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

11. Разработчики обладают низкими социальными навыками


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

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

12. Молодые разработчики считают себя лучшими специалистами


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

13. Программирование – это скучно


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

14. После 35 карьера разработчика заканчивается


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

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

15. Разработчики — это товар


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

Заключение


Мне будет интересно услышать о нелепых стереотипах, с которыми вам доводилось столкнуться за время своей практики (а их, я уверен, было не мало). Оставляйте свои варианты в комментариях.