Кажется, что раз в два месяца кто-то там рекламирует что-то новое в разработке программного обеспечения или необходимые навыки разработчика. 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