Кажется, что раз в два месяца кто-то там рекламирует что-то новое в разработке программного обеспечения или необходимые навыки разработчика. Flutter.io, MongoDB Atlas, Apache Mesos… Что это за технологии? И действительно ли им нужно учиться в 2019 году?

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

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

Чтобы получить более полное представление, мы также поговорили с тремя экспертами о том, какие основные навыки необходимы разработчику программного обеспечения в сегодняшней быстро меняющейся среде: Питер Хансельманн, архитектор решений в провайдере онлайн-платежей Bambora, Ченг Лу, интерфейсный инженер платформы поиска агентов по недвижимости OpenAgent, Дэниел Денг, старший инженер по обработке данных платформы временной работы по запросу Airtasker и Бхарадвадж Сампатх , старший инженер по программному обеспечению глобальной платформы обмена валют OFX, Ронил Мухаммад, руководитель инженерного отдела платформы гостиничных сделок HotelsCombined.com.

Технические языки для разработчиков

Найти лучшие языки технического программирования в 2019 году так же просто, как увидеть, где большинство рабочих мест лежит на разработчиках программного обеспечения. Вы заметите, что предложения Лу - C #, Java, Node, C ++ и Ruby - появляются снова и снова. Эти зрелые языки программирования - прочная основа для дальнейшего развития.

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

Еще один хороший универсальный язык - Python. Как говорит Хансельманн: «Такой язык, как Python, также является хорошим языком для всех разработчиков, чтобы иметь в своем наборе инструментов, потому что он набирает популярность и является очень полезным универсальным служебным языком. Даже если вы не пишете производственный код на Python, он, вероятно, будет вам полезен при написании скриптов или для тестирования кода. »

Навыки фронтенд-разработчика

Front-end разработка против back-end? Что ж, фронтенд-разработка - это четкое представление программного обеспечения с точки зрения UX, чему способствуют дизайн, искусство и изящество. Поскольку большое количество программного обеспечения размещается в Интернете, потребность в навыках фронтенд-разработки в ближайшее время никуда не исчезнет. Итак, какие навыки вам понадобятся для фронтенд-разработки в 2019 году?

Лу рекомендует «твердо понимать JavaScript и HTML5 / SCSS. Также полезно знать JavaScript ES6, PHP, Python, SQL, NodeJS. В 2018 году популярны фреймворки JavaScript, такие как React и Angular. ». Это надежный технический рецепт, охватывающий фронтенд-разработку.

Навыки back-end разработчика

А как насчет внешнего и внутреннего программирования с точки зрения серверной части? Внутренний разработчик работает на стороне сервера, выполняя операции с базами данных, бизнес-логику, магию API и многое другое. Для этих операций внутренний разработчик должен знать один-два технических языка (упомянутых выше), а также SQL, Node.js для запуска JavaScript на внутренней стороне и твердое понимание оркестровки программного обеспечения и DevOps.

По словам Хансельманна: «Ожидается, что миграция в облачные среды продолжится, поэтому приобретение опыта хотя бы в одной такой экосистеме, такой как AWS или Azure, становится обязательным. -имеют. Точно так же полезно знать, как создать инфраструктуру как код с помощью такого инструмента, как Terraform. »

Универсальные навыки разработчика полного стека

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

Да, вам понадобятся навыки, упомянутые как в интерфейсной разработке , так и во внутренней разработке!

Дэн также подчеркивает необходимость знать правильную структуру для работы с каждым языком веб-программирования: «Для веб-разработчиков у вас есть много вариантов, и обычно люди склонны выбирать язык и структуру в зависимости от возможностей команды, кандидатов. на рынке и т. д. Ruby / Rails, Python / Django, Java / Springboot, Go / Gin, Elixir / Phoenix были бы отличным выбором, потому что на рынке относительно легко найти людей с соответствующими навыками ».

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

Навыки для разработчиков приложений

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

Твердый совет в области разработки мобильных приложений дает Хансельманн: «Кто-то, кто интересуется разработкой мобильных устройств, должен хорошо владеть Swift для iOS, а также Android, Java по-прежнему доминирует, но популярность Kotlin растет. »Дэн соглашается: « Для разработчиков Android, очевидно, что Java / Kotlin будет их первым выбором, а Swift для Разработчики iOS ».

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

Программирование машинного обучения

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

Что касается использования технологий? «Знание языка программирования R является обязательным для специалистов по данным, тогда как для машинного обучения Python является наиболее часто используемым языком», - говорит Хансельманн.

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

Навыки методологии программной инженерии

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

Хансельманн также выделяет непрерывную интеграцию и непрерывную доставку в качестве ключевой области обучения в разработке программного обеспечения: «Все разработчики сегодня должны познакомиться с CI / CD для непрерывной доставки. Овладение такими инструментами, как Bamboo или Jenkins и Octopus, очень важно для непрерывной интеграции и развертывания. »

Simple Programmer подробнее расскажет об этих важных навыках, так что прочтите.

Навыки решения проблем: секрет успешной карьеры разработчика

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

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

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

Навыки гибкой командной работы, навыки разработки продуктов и многое другое…

Конечно, это только верхушка. Важно оттачивать свои мягкие навыки, в частности, адаптивность, коммуникативные навыки и навыки работы в команде, - говорит Хансельманн. Agile теперь широко распространен на многих рабочих местах. Дэн подчеркивает, что вы должны иметь твердое представление о «дисциплине разработки через тестирование, понимании ценности одноразового кода, концепции дизайна, ориентированного на предметную область. И если вы хотите Чтобы продолжить карьеру специалиста в кибербезопасности, вам нужно изучить определенные навыки, например Solidity, если вы хотите работать с блокчейном.

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

Исходная статья, опубликованная на Martec: https://www.themartec.com/insidelook/essential-software-developer-skills