9 основных вопросов в карьере разработчика

в 11:59, , рубрики: Исследования и прогнозы в IT, карьера, Программирование, размышления

9 основных вопросов в карьере разработчика

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

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

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

1. На сколько полезна сетификация?

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

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

Главный вопрос для разработчиков звучит так: «Есть ли реальный спрос на конкретный сертификат?». Большинство передовых технологий слишком новы и не стандартизированны, чтобы их можно было объективно проверить, по-этому работодатели ищут другие пути решения своего вопроса. В основе реального рынка сертификатов всегда будут лежать базовые инструменты, например сертификаты обслуживания баз данных Oracle или поддержка серверов Microsoft. Компании, которые зависят от Oracle или Microsoft, обычно платят больше тем, кто прошёл данные сертификации и доказал свою компетенцию. Когда Ваша сертификация и спрос работодателя совпадают, все счастливы.

Но разработчикам следует осторожно выбирать сертификаты. Подготовка к экзаменам занимает значительное время, а вопросы обычно проверяют тривиальные знания — тестирование обычно проходит с помощью предварительно вбитых в базу данных вопросов. Я проходил несколько экзаменов на проверку знаний в области Java, и думал: «Знание этих фактов это не моя забота, ведь для этого есть Eclipse!».

Так же сертификаты обычно имеют ограниченную область применения. Быть экспертом в Windows XP было круто десять лет назад, но это не поможет сегодня — если, конечно, компания не залипнет на Windows XP до самого конца. Так же вы можете оказаться сертифицированным в версиях продукта 1.0, 1.2, 1.4.

2. Какова настоящая ценность диплома в области компьютерных наук?

Если трудно определить, стоит ли профессиональный сертификат по определённой технологии своего получения, то почти невозможно оценить необходимость инвестирования своих ресурсов в традиционное высшее обазование. Один взгляд на таких лидеров как Стив Джобс, Майкл Дэлл, Билл Гейтс или Марк Цукенберг, доказывает, что диплом бакалавра не является залогом способности изменить мир.

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

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

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

3. Должны ли Вы специализироваться на одной технологии или быть специалистом широкого круга?

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

Вся соль заключается в выборе лучшего языка для рынка. Наиболее востребованными будут языки, которые формируют основы больших технологических стеков: Java, C++, PHP и JavaScript всегда будут хорошим выбором.

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

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

Лучший вариант для разработчика — это быть специалистом в языке, который стремительно набирает обороты. Перед выходом iPhone, Objective-C был исчезающим языком, который использовался для написания native приложений для Mac. А потом всё изменилось, и нужда в Objective-C стремительно выросла. Для каждого разработчика выбор нового FooBar языка, который может исчезнуть или стать трендовым, является авантюрным решением.

4. Должны ли Вы делать вклад в open source проекты?

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

Самым очевидным преимуществом работы над проектами с открытым исходным кодом является то, что Вы можете поделиться своим кодом с потенциальным работодателем. Там нет договоров о неразглашении или проприетарных ограничений, которые удерживают Вас от отправки вашего кусочка проекта и фразы: «Я написал это». Любой может взглянуть на него. Если Вы получили статус участника(committer), это уже показывает что Вы хорошо работаете с другими людьми и знаете как сделать вклад в начатый проект. Это важные умения, которые разработчики должны всегда совершенствовать.

Многие из самых популярных open source проектов теперь являются частью корпоративных стеков, так что компании усиленно ищут разработчиков, которые являются частью сообщества, построенного вокруг проектов с открытыми исходными кодами, от которых зависят их стеки. Один менеджер в сильной серверной компании сказал мне, что он не может позволить себе нанять Линуса Торвальдса, но ему нужны эксперты в области Linux. Он наблюдал за проектом Linux и нанял людей, которые знали Линуса Торвальдса. Если списки почтовых расылок показывали взаимодействие между Торвальдсом и разработчиком, менеджер поднимал трубку.

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

Обычно инициативные программисты стараются сделать вклад в open source проекты на ранних стадиях. Они могут работать с передовыми open source проектами в свободное время просто потому, что они классные. Если проект превращается в очередной Hadoop, Lucene или Linux, они получают возможность превратить эти эксперименты в полноценную работу и, вполне возможно, длительную карьеру.

5. Как обойти старение?

Что хочет каждый технический рекрутер? Он хочет холостого 21-летнего выпускника лучшего института компьютерных наук, готового работать длительные часы и создавать замечательные вещи. А что насчёт 22-летнего с одним годом опыта работы? У-у-у. Наверное. Может быть. А остались ещё 21-летние?

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

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

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

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

6. Насколько важно месторасположение?

Если Вы молоды и хотите сложить все свои вещи в багажник автомобиля и двигаться дальше, единственное что для вас важно в месте работы, это нравится ли вам жить рядом с ней. Хорошая еда и доброжелательные соседи — это всё, что нужно на текущий момент.

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

Многие программисты в кремниевой долине успешно движутся от стартапа к стартапу. Если не выстреливает один, через минуту рядом образуется другой. Там полно работы в различных фирмах, и это делает легким нахождение новой компании.

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

7. Можно ли выбрать такую область, чтобы избежать сокращения по невостребованности?

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

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

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

8. Должны ли вы работать на себя?

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

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

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

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

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

9. Есть ли работа вне области компьютерных технологий?

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

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

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

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

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

Автор: valkiriy

Поделиться

* - обязательные к заполнению поля