По мере того, как наша жизнь становится всё более связанной с программным обеспечением, спрос на грамотных разработчиков только растёт. Но поскольку софт становится всё более вездесущим — от серверных технологий до Интернета вещей — возрастает и ответственность разработчиков, появляется необходимость постоянно развивать свои навыки.
Компании сейчас постоянно ищут кого-то, кто знаком со всеми сторонами разработки, кто может выделить необходимое из огромного набора данных, кто может стратегически мыслить о тенденциях, кто может переделывать старые системы, используя новейшие языки и фреймворки. Этого хватает, чтобы разработчики терялись и не знали, с чего же начать.
Чтобы определить наиболее важные для разработчика навыки, мы собрали мнения исполнительных директоров, главных инженеров и прочих руководителей касательно основных технологий, в которых стоит себя попробовать, стратегий, над которыми стоит поразмышлять, и навыков, которые необходимо оттачивать.
Если вы ищете, чем можно заполнить своё резюме или как улучшить свои способности (а вы должны искать), то эта статья точно для вас.
Освежите свои навыки в JavaScript
Если верить тем, кого мы опрашивали, сегодня вы точно не ошибётесь, если будете совершенствовать знания JavaScript. Это наиболее частый критерий, который называли руководители.
«Большинство разработчиков уже имеют представление о том, какие ключевые слова ищут в резюме», — говорит Шериф Абушади (Sherif Abushadi), инструктор Dev Bootcamp, — «JavaScript — одно из таких слов, его сообществом создано огромное количество полезных библиотек и фреймворков».
Неважно, проектируете ли вы под декстоп, веб или разрабатываете мобильные приложения, «JavaScript очень ценится на рынке, в частности, из-за его портативности», — рассказывает нам Тодд Англин, главный евангелист Progress Software.
«Инженеры с фундаментальным познаниями в компьютерных науках, владеющие современными технологиями, долго работу не ищут», — делится Марк Стагно, главный консультант по компьютерным технологиям в WinterWyman Search. — «Это, например, full-stack инженеры или сфокусированные на UI разработчики, которые умеют работать с JavaScript и владеют современным библиотеками, вроде AngularJS или React».
Абушади добавил, что, несмотря на такую значимость JavaScript, не надо забывать и про остальные языки. Попробуйте себя в Ruby с фреймворком Ruby on Rails, поиграйте с Python и фреймворком Django. Эти технологии хорошо зарекомендовали себя на рынке.
Посмотрите в сторону BigData
Проекты, связанные с этим, продолжают расширяться, и ничто не указывает на то, что этот рост замедлится.
«Поскольку Big Data достаточно много обсуждают в последние годы, это уже что-то вроде тренда», — говорит Андрей Аксельрод, сооснователь и технический диркетор Smartling, — «Разработчики должны иметь развёрнутое представление о Business intelligence и анализирующих продуктах, о машинном обучении, о других решениях, которые передают, хранят и обрабатывают большие объёмы информации, чтобы можно было принимать лучшие решения».
«Скорость появления информации просто головокружительная», — делится Джон Перкос, вице-президент инженеринга в VoltDB, — «Мобильные устройства и устройства интернета вещей распространяются по всему миру. Приложения, которые разрабатываются сегодня, справляются с поразительными объёмами данных. Технологии, которые получают и обрабатывают данные в режиме реального времени, эдакие потоковые решения, и хранение данных в памяти — то, что просто необходимо изучать сегодня, эти навыки будут кормить разработчиков ещё как минимум десятилетие».
Расширяйте сферу своих знаний
Многие топ-компании сейчас ищут full-stack разработчиков, которые могут свободно работать на разных уровнях, с разными технологиями и платформами.
Такие разработичики «понимают принцип работы приложения, начиная с уровня ядра и до уровня представления, интерфейса», — рассказывает Хоссейн Рахнама, основатель и директор по продуктам стартапа Flybits, — «Это великолепно, таким людям очень легко найти работу, а в стартапах они мешают созданию бюрократической машины с классическими методами управления, команда остаётся маленькой и эффективной».
Брайан Рейнеро, developer advocate в MongoDB, говорит, что в будущем инженерам будет необходимо иметь более широкий спектр навыков, чтобы быть эффективными.
Используйте DevOps
Многие думают, что DevOps уйдёт по мере распространения облачных технологий, но Рейнеро из MongoDB с этим не согласен: «Принцип DevOps можно описать как «Специалисты, ответственные за написание приложения, и специалисты, которые буду его поддерживать, должны быть одними и теми же людьми. Это значит, что разработчики должны чётко понимать, как действительно их продукт будет использоваться, должны быть ответственны за производительность и стабильность на стадии разработки. После овладения этими навыками вам не только будет гораздо проще заполучить работу, вы станете незаменимым специалистом в компании». Согласно его мнению, разработчики, которые мыслят таким образом, будут писать качественный код быстрее и с большей уверенностью. Этот принцип сплотит коллектив и даст компании серьёзные преимущества.
Изучайте различные технологии
Сейчас спектр навыков, которые нужны компаниям, гораздо шире, чем несколько лет назад, рассказывает Марк Стагно из WinterWyman Search: «Java и C# занимают значительную часть рынка, но если вы посмотрите на компании, которые были основаны относительно недавно, то вы увидите, что они используют много разных технологий: Ruby on Rails, Python/Django, Node.js, разные функциональные языки вроде Scala. Мы начинаем видеть, что где-то даже внедряют Go. Я не думаю, что вам нужно найти «правильную» технологию и изучать только её, нужно идти в ногу со временем и адаптироваться под возникающие условия».
Работайте с OpenSource
В частности, это актуально для фрилансеров — возможность показать свой код на GitHub, который был по достоинству оценён другими пользователями, дорогого стоит.
«Написать стоящую библиотеку и выложить её в открытый доступ — отличный способ продемонстрировать свои навыки потенциальным работодателям», — поделился Киран Бондалапати, сооснователь и технический директор ZeroStack, — «Если вы помогаете в разработке чужого проекта, это тоже поможет заработать репутацию».
Кандейс Мёрфи, менеджер по персоналу в Addison Group, уверяет, что хотя .Net и Java всё ещё ценятся очень высоко, заметен серьёзный рост спроса на профессионалов, владеющих Ruby, Python, Node.js, AngularJS… Компании стараются отходить от платформ, для которых необходимо покупать лицензию.
Если сами компании ищут подходящие технологии, просматривая GitHub, что вам мешает это делать?
Тренируйте навыки командной работы и используйте agile-методы
Гибкая методология разработки должна быть обязательным навыком для любого разработчика в 2016 году, считает Грег Стерндейл, сооснователь PromptWorks — консультационной компании, специализирующейся на вебе и мобильных приложениях. «Не бойтесь agile-методов, это способность разбивать большие проекты на простые задачки, это умение выстраивать приоритеты, быть готовым к изменениям, это умение делать свою работу лучше».
Инструктор Bootcamp Абушади подчёркивает необходимость понимать своих коллег так же хорошо, как проект: «Способность давать честные, доброжелательные и действенные отзывы во время работы в команде единственно возможна только тогда, когда вы чувствуете тех, с кем вы работаете. Умение давать и принимать критику очень часто становится разницей между успешным и провальным проектом»».
Изучайте информационную безопасность
Если верить Мёрфи из Addison Group, компании, которые пострадали из-за дыр в безопасности за последний год, уж точно знают, чего они хотят и какие навыки будут им наиболее полезны в 2016. Для работы на сохранностью данных они будут использовать не только внутренние резервы, знание информационной безопасности будет одним из требованиям к новым работникам.
С ним полностью согласен Аашиш Калра, председатель Cambridge Technology Enterprises: «С ростом облачных технологий у предприятий резко повысилась необходимость писать защищённый софт, поэтому спрос на специалистов по безопасности и управлению данными будет только расти».
Исследуйте мобильные технологии
«Мобильные разработчики сейчас очень востребованы, особенно те, кто может продвигать свой продукт», — рассказывает Акселрод из Smartling, — «Я привык считать, что звания успешного мобильного разработчика нельзя достигнуть только через изучение соответствующих технологий, необходимы ещё определённые навыки ведения бизнеса. Написание кода — только первая стадия проекта. Знать, как раскрутить своё мобильное приложение, как привлечь целевую аудиторию — вот что приносит настоящий успех».
«Когда мобильные телефоны только появились, первая проблема, которая возникла — где взять опыт, который поможет создать приложение, которое будет одинаково хорошо работать на разных устройствах и операционных системах?» — вспоминает Джефф Хайни, генеральный директор и сооснователь Appcelerator, компании, которая специализируется на мобильных приложениях, — «Теперь вопрос стоит иначе — как мне получить данные в нужном формате, нужного размера, с нужными правами? Это гораздо сложнее».
Проблемы связи и тот факт, что часто устройства не имеют экрана, заставляют больше внимания уделять вопросам обработки данных в мобильной разработке.
«Модели связи через веб не работают», — говорит Хайни, — «эта проблема вкупе с тем, что устройства не всегда имеют экран и могут зависеть только от получаемых данных, даёт понять, что проблема обработки данных — новый вызов разработчикам».
Мобильность — лучший из аспектов интернета вещей, считает Рейнеро из MongoDB. Но он согласен, что это бросает определённые вызовы. «Мобильные приложения, которые начинаются с малого, могут стать невероятно популярными и серьезно повлиять на всю инфраструктуру. Это значит, что каждый компонент бэкенда мобильного сервиса, включая серверные приложения и сервера с базами данных, должны подстраиваться под них достаточно быстро. Разработчикам нужно ознакомиться как с механизмами адаптации отдельных компонентов, так и с предложениями типа инфраструктура-как-сервис (IaaS), вроде Amazon Web Services, Microsoft Azure и Google Cloud Compute».
Даже если мобильная разработка не ваша сильная сторона, ознакомление с основными технологиями, которые используются и разрабатываются сейчас, может поднять вашу карьеру.
«В мобильной отрасли широким спросом пользуются разработчики, которые имеют представление о пользовательском взаимодействии (User Experience)», — рассказывает Джейсон Нейман, исследователь рынка из TEKsystems, — «Способность понимать и эффективно применять UX делает разработчика очень конкурентоспособным».
Не забывайте об облачных технологиях
Не вызовет удивления, что разработчики, которые знакомы с Amazon Web Services и Microsoft Azure, ценятся высоко. «В области облачных веб-сервисов Amazon по прежнему основной игрок, так что следите за их расширенными предложениями вроде API Gateway, Lambda и Container Service», — советует Ник Бендерс, директор по архитектуре из New Relic.
Но вопрос не только в инструментах — следуя общим тенденциям, компании ищут разработчиков, которые обладают навыками бизнеса, которые могут осуществлять руководство проектом и вести переговоры с производителями, считает Хейман из TEKsystems.
По мнению Рейнеро из MongoDB, успех в облачных технологиях означает безопасную, точно выверенную и откорректированную систему. IaaS и облачные платформы предлагают потрясающие возможности, но неправильное управление облачной инфраструктурой может уничтожить всякую выгоду от этого.
Новая отрасль — интернет вещей
Нашумевший IoT наконец-то начинает влиять на спрос специалистов, теперь для него требуются не только инженеры встраиваемых систем.
«Вы можете заниматься этой отраслью даже в качестве JavaScript программиста», — считает Хусейн Рахнама из Flybits. «Приход протоколов вроде Wi-Fi Halo и открытые SDK для многих IoT устройств дают огромный простор возможностей для разработчиков».
Рейнеро из MongoDB видит развитие этих возможностей в медицинских устройствах и улучшении облачных технологий: «Будет больше носимых устройств, которые будут использоваться для амбулаторного лечения, приборы для диагностики будут становиться всё меньше. Эти устройства позволят нам узнать больше о нас самих и нашем здоровье. Основным назначением этих устройств будут сбор и анализ данных. Ну и, конечно, откроется простор для невозможных до этого медицинских исследований, с таким-то объёмом данных».
Будьте убедительны
Многие из наших экспертов придают особое значение «мягким навыкам» — навыкам, проявление которых сложно отследить, проверить и наглядно продемонстрировать, вроде мотивации, лидерства или таланта управления.
«Эти навыки особенно важны при общении с клиентами, в частности, способность мягко, но убедительно отказывать в чём-то», — объясняет Стерндейл из PromptWorks. «Очень полезно умение объяснить клиенту технические детали, подсказать что-то действительно стоящее».
«Продемонстрировать качественные навыки общения важно, как ничто другое», — соглашается Мёрфи, — «Важно не только создать качественный продукт, но и уметь его презентовать».
Будьте гибким
Хорошо, пусть вы отличный специалист, full-stack, ваши сервисы пользуются огромным спросом, всё отлично. Но если вам вдруг придётся сделать поворот в карьере, вы поймёте всю разницу между тем, чтобы быть трудоустроенным, и тем, чтобы стать им.
«Я не один раз слышал о разработчиках, которые, может, и не были самыми талантливыми в команде, но точно были одними из самых ценных из-за своих отношений с окружающими,» — рассказывает Стагно из WinterWyman Search. «Быть хорошим членом команды, иметь желание решать проблемы, а не создавать их, протянуть руку помощи в сложный момент, подкинуть идею по улучшению продукта, а не бездумно выполнять обязанности — люди любят это, и это изменит отношение к вам к лучшему».