Чего хотят программисты?

international-programmer-dayНа прошлой неделе я получил имейл от трех студентов из Университета Хэлмстеда, которые три месяца работали над проектом на тему: чего же хотят программисты от своей работы, и как компании могут привлечь талантливых программистов. Вашему вниманию представлены мои ответы на их вопросы, в порядке важности. Конечно, у каждого из нас свои предпочтения, поэтому было бы интересно узнать, с какими из пунктов вы согласны, а с какими ­ нет, в каком порядке вы бы их расположили, и чего, на ваш взгляд, не хватает.

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

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

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

Крутые технологии. В основном это касается использования интересных языков программирования (например, Clojure, Erlang или Go), но также включает в себя фреймворки и приложения (к примеру, Hadoop или Cassandra). С этим у компании могут быть трудности. Если их приложение написано на определенном языке (допустим, C++), с этим уже ничего не поделать. В этом случае, если вы захотите перейти на какой-­нибудь новый язык ­ скорее всего, вам придется искать новую работу. Например, если вы хотите работать с Erlang в Стокгольме, вы можете попробовать обратиться в Klarna или Campanja.

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

Хорошая зарплата. Компании, в которых работает много хороших разработчиков, понимают их ценность. Поскольку между отличными и средними программистами есть большая разница, гораздо логичнее (в экономическом смысле) нанимать качественных разработчиков ­ разница в продуктивности будет значительно выше, чем разница в зарплате. С другой стороны, компании, которые плохо платят программистам, часто рассматривают своих работников как взаимозаменяемые «ресурсы». Таких компаний стоит избегать не только из­-за низкого уровня заработной платы, но и по множеству других причин.

Хорошие инструменты. Здесь всё практически очевидно. Наличие быстрого компьютера и нескольких мониторов позволяет ускорить процесс разработки ­ кто­-то готов с этим поспорить? (Окей, бестолковые боссы, то готов с этим поспорить? (Окей, бестолковые боссы, видящие только расходы, но не пользу, наверняка, будут против).

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

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

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

Малое расстояние до работы. Безусловно, вы вряд ли что­-то сможете с этим поделать, но возможность не тратить ежедневно несколько часов в пробках ­ это действительно здорово.

КОММЕНТАРИИ

Если вы выступаете в качестве консультанта, то список нужно подкорректировать. Мне всегда нравилось работать в компаниях, выпускающих готовый продукт, поскольку я люблю углубляться в изучение системы и наблюдать за ее развитием. Так что у меня нет личного опыта работы консультантом, но вот что я об этом думаю. Работая консультантом, гораздо проще открывать для себя новые классные технологии, поскольку у вас есть возможность работать с множеством различных клиентов. Однако, даже если у вас отличные коллеги, вы, скорее всего, не будете работать с ними ежедневно, поскольку у вас может быть несколько заказчиков. Собственно, вот и весь список, в порядке важности, моих ожиданий от компании. В реальной жизни всегда есть место для некоторых компромиссов, но чем выше что­-то в этом списке, тем меньше желания у меня идти на компромисс в этом вопросе.

А какие у вас приоритеты?

Автор:  Henrik Warne

Источник