Исчерпывающее руководство для начинающих

Когда я занялся разработкой программного обеспечения, я был так взволнован. Я хотел научиться всему сразу: разработке игр, мобильной разработке, искусственному интеллекту и всему, что с этим связано. Я потратил время на написание «привет, мир» и простых программ примерно на 30 языках, просто чтобы понять, какой из них мне следует выучить. В конце концов, все стало скучно, потому что я не мог создавать самые крутые вещи. Однако все изменилось, когда я решил сосредоточиться на чем-то одном и очень хорошо его усвоить. Именно тогда я начал пожинать плоды настойчивости.

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

Чтобы выбрать идеальный путь в индустрии программного обеспечения, необходимо учитывать следующее:

  1. Знать, что нужно для этого (кривая обучения, стек технологий или языки)
  2. Средняя зарплата
  3. Рабочая среда
  4. И наконец, ваши личные сильные стороны.

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

Пора сосредоточиться. Давайте погрузимся.

Веб-разработка

Этот путь - очень распространенный и простой способ попасть в разработку программного обеспечения. Большинство разработчиков попадают в эту категорию или, по крайней мере, занимаются веб-разработкой. В настоящее время веб-разработка делится на две основные категории: интерфейс (на стороне клиента) и серверная часть (на стороне сервера). Между тем, у нас есть разработка full-stack, которая включает и то, и другое.

Внешний интерфейс

Front-end разработка включает в себя все, что пользователи видят в своих браузерах или приложениях. Внешние разработчики несут ответственность за внешний вид веб-приложения.

Требуемые навыки включают разработку пользовательского интерфейса (UI) и взаимодействия с пользователем (UX), CSS, JavaScript, HTML и растущую коллекцию UI-фреймворков, таких как React.js, Vue.js, Angular и другие. Большинство этих фреймворков основано на JavaScript. Барьер для входа в эту роль довольно низок и просто требует, чтобы вы выбрали любую из вышеперечисленных фреймворков для сопряжения с HTML, CSS и JS, и вы готовы к работе. Чтобы стать фронтенд-разработчиком, вам не нужно проходить формальное обучение или получать степень по информатике. Фактически, большинство интерфейсных веб-разработчиков являются самоучками или прошли учебный курс. Но для продвижения в этой области требуется степень младшего специалиста или бакалавра.

Серверная часть

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

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

Для входа в серверную разработку требуется, как минимум: знание серверного языка, такого как Java, Python, PHP, Golang или Ruby; .NET или Node.js (JS-фреймворк для серверного программирования); технологии СУБД, такие как MySQL, Mongo DB, Oracle, SQLserver и другие; и доступ к таким серверам, как Apache, Nginx или Microsoft IIS. Хороший опыт работы с Linux очень помогает в администрировании серверов.

Полный стек

Разработчик полного стека - это человек, обладающий знаниями как в интерфейсной, так и в серверной разработке, но не обязательно являющийся экспертом в обеих областях. Этот путь подходит для предпринимателей (гибридов программиста и предпринимателя). Это хорошо, потому что вы можете быстро выпустить готовый продукт или даже запустить свой стартап, используя только свои собственные навыки. Эта роль пользуется большим спросом у многих стартапов, которые стремятся просто объединить все эти функции рентабельным способом. Сейчас этот путь стал еще проще для новичков. С таким языком, как JavaScript, вы можете стать разработчиком полного стека, выбрав интерфейсную структуру, такую ​​как React.js, и внутреннюю структуру, такую ​​как Node.js, в сочетании с популярной СУБД, такой как Mongo DB, и вы готовы идти.

Средняя зарплата веб-разработчика варьируется от одного места к другому. По данным Glassdoor, средняя годовая заработная плата веб-разработчиков в США составляет 75000 долларов. Нижний предел составляет менее 50 000 долларов, а самые высокооплачиваемые разработчики зарабатывают более 117 000 долларов. Большинство веб-разработчиков работают полный рабочий день.

Мобильная разработка

Это достойный и простой вариант, особенно с учетом стремительного роста мобильного рынка. Если вы любите взаимодействовать с мобильными приложениями и стремитесь их создать, то мобильная разработка может быть подходящей нишей для вас. Это также очень предприимчиво, так как вы можете создать свое приложение или игру и заработать миллионы - если вам повезет. Платформ для мобильной разработки много, но самыми популярными остаются Android, iOS и Windows Mobile. Android занимает наибольшую долю рынка в мире (76,23% по данным StatCounter). IOS занимает второе место с 22,17%; Windows отстает на 0,2%.

Чтобы стать разработчиком Android, вы должны начать свой путь с Java, которая присутствует в игре уже давно, или Kotlin, который является новым официальным языком для платформы Android. Однако оба языка совместимы и могут использоваться вместе.

Чтобы начать разработку для iOS, вам нужно изучить Objective-C. Однако сейчас он постепенно заменяется в экосистеме Apple более мощным языком под названием Swift.

Наконец, если вас интересует Windows Mobile, выберите такой язык, как C #. От серверных приложений, игр и мобильных приложений до веб-сервисов вы можете создавать практически все на C #. Платформа Xamarin полностью изменила ожидания сообщества C #. Xamarin - это инструмент для создания приложений, который упрощает разработчикам C # создание приложений для пользователей Android и iOS. Это подводит нас к концепции кроссплатформенной разработки, которая используется для обозначения приложений, которые созданы для работы на нескольких платформах. К наиболее популярным кроссплатформенным конструкторам относятся React Native, Flutter, Xamarin, Ionic и PhoneGap.

По данным Glassdoor, средняя национальная зарплата разработчика мобильных устройств составляет 97 445 долларов в США. Заработная плата часто колеблется от 78 до 188 тысяч долларов в год.

Разработка для ПК

Разработка настольных приложений доминировала в индустрии программного обеспечения на протяжении десятилетий. Однако с развитием Интернета веб-приложения стремительно набирают обороты. По мере того, как смартфоны стали популярными, мобильные приложения стали пользоваться огромным спросом, вытеснив настольные приложения на третье место. Однако, как многие могут подумать, настольная разработка далека от вымирания. Сегодня большинство корпоративных и профессиональных приложений по-прежнему основаны на настольных компьютерах; например, IDE, которые мы используем для разработки, хотя облачные IDE постепенно появляются в игре.

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

JavaFX и Swing

JavaFX и Swing - это две среды пользовательского интерфейса Java от Oracle. Оба кроссплатформенные. JavaFX новее и рекомендуется Oracle в качестве замены Swing. JavaFX также предоставляет функцию перетаскивания через Scene Builder, которая ускоряет разработку и предоставляет современные пользовательские интерфейсы. Большинство настольных приложений по-прежнему поддерживают Swing. Если вы знакомы с Java, этот вариант вам подойдет. Пример приложения, написанного с использованием Swing, - JetBrains Intellij.

Qt и WPF

Qt: кроссплатформенный UI-фреймворк на основе C ++. Вы можете писать объекты пользовательского интерфейса в коде или использовать QML, который является декларативным языком, чем-то похожим на JSON. Популярные приложения, написанные на Qt, включают Maya и VirtualBox.

WPF: популярная зрелая технология Microsoft на основе XAML. Используя WPF, вы можете писать на C # или Visual Basic .Net (VB.NET).

WPF обладает мощными возможностями создания шаблонов, стилей и привязки, которые подходят для больших приложений.

WPF также требует относительно крутого обучения, работает в любой ОС Windows и является зрелой технологией. Yahoo Messenger использует WPF. Другие технологии Microsoft, которые вам могут быть интересны, включают Windows Forms, обеспечивающую функцию перетаскивания, и Универсальную платформу Windows (UWP), новейшую технологию Microsoft для настольных приложений. Он основан на XAML, как и WPF, и вы можете писать на C #, VB.NET и C ++. Большинство приложений написано на C #.

Электрон

Электрон - это фреймворк, позволяющий разрабатывать настольные приложения с использованием веб-технологий (HTML / CSS / JavaScript). Магия Electron заключается в том, что он использует Node.js и Chromium для создания веб-представления в окне рабочего стола. Electron на какое-то время приобрел некоторую популярность, и с его помощью разработаны отличные приложения, такие как Slack, GitHub Desktop и Visual Studio Code. Хотя он гораздо менее способен взаимодействовать с ПК, чем другие технологии, все же можно использовать тонкий API Electron для основных функций ОС или для вызова .dll файлов непосредственно с Node.js.

Большинство разработчиков настольных компьютеров работают с устоявшимися предприятиями. По данным Glassdoor, средняя национальная зарплата разработчика настольных приложений в США составляет 76 195 долларов в год. В других регионах это может быть не так. Высокооплачиваемые разработчики настольных компьютеров могут зарабатывать до 117000 долларов или даже больше, в зависимости от их ролей, в то время как низкооплачиваемые разработчики зарабатывают 58000 долларов или меньше.

Разработка видеоигр

В те дни, когда я играл в GTA Vice City и другие игры, я ничего не знал о программировании. Поскольку я был (и остаюсь) очень любопытным парнем, я пошел в соседнее интернет-кафе, чтобы провести небольшое исследование и создать игру для себя. Я думал, что смогу построить его за пару дней и пригласить друзей на игровую вечеринку, которую я задумал. Все пошло не так, как планировалось, но я сделал огромное открытие - мне нравилось программировать. Жизнь не всегда соответствует вашим ожиданиям.

Короче говоря, я по-прежнему считаю, что разработка игр - отличный вариант карьеры. Это трудный, с большим количеством соревнований и долгими часами. Если вы увлечены играми, идите по этому пути, но имейте в виду, что позже вы можете переключиться на него. Фреймворки, используемые разработчиками игр, включают DirectX, OpenGL, Unity 3D, WebGL, а языки включают C, C ++, C # и Java. Популярность игр на JavaScript и HTML5 растет. На мобильных устройствах Swift и Java теперь являются предпочтительными технологиями для игр для iOS и Android соответственно.

По данным Glassdoor, средняя заработная плата разработчика игр в США составляет 101932 доллара и колеблется от 66000 до 148000 долларов в год.

Встроенные системы

Встроенные системы контролируют многие устройства, которые сегодня широко используются. Встроенная система - это микроконтроллер или система на основе микропроцессора, которая выполняет определенную задачу. В настоящее время почти у каждого устройства есть мозг. Микроконтроллеры Arduino, PIC, 8051 и Atmel обычно используются для проектирования встраиваемых систем. Разработчики встраиваемых систем часто работают с такими языками, как C, C ++, Assembly, Java или проприетарными технологиями, фреймворками и инструментами. С развитием IoT (Интернета вещей), AI (искусственного интеллекта) и аналитики в реальном времени, встроенные системы эволюционировали для управления всеми видами системной автоматизации, включая домашнюю и строительную. Работа во встроенных системах - отличный вариант, особенно для тех, кто разбирается в электронике. Но независимо от вашего опыта, если вы настроены решительно, вы можете научиться чему угодно.

По данным Glassdoor, в США разработчики встроенного программного обеспечения зарабатывают от 58 000 до 112 000 долларов в год при средней зарплате 80 000 долларов.

Наука о данных

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

Если вы новичок, я бы не стал считать это отличным вариантом для вас. Наука о данных предназначена в основном для людей, у которых уже есть некоторый опыт работы в области технологий, статистики или аналогичных ролей (хотя, конечно, это не должно расстраивать вас, если вы задумались). Темы и инструменты, которые вам необходимо понимать при работе с наукой о данных, включают:

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

По данным Glassdoor, специалисты по обработке данных часто работают с крупными компаниями и организациями, зарабатывая от 86 000 до 190 000 долларов в год при средней зарплате 117 000 долларов.

Инструменты и предприятие

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

Корпоративные инструменты часто являются объектно-ориентированными и предназначены для работы с несколькими бизнес-партнерами. Инструменты развития предприятия связывают программы и функции вместе, позволяя организациям работать эффективно и результативно.

Хорошие инструменты корпоративной разработки будут включать Allegro Common Lisp, интерфейс Java, C ++, поддержку SOAP и XML. Он должен включать в себя соединения с базой данных CORBA ORB для наиболее функциональных инструментов, и, если это необходимо для предприятия, он должен включать интерфейсы внешних функций в наборы инструментов. Языки программирования, подходящие для этого пути, включают Java, C #, Python, JavaScript, C и C ++, и это лишь некоторые из них.

Эти разработчики зарабатывают от 62 000 до 117 000 долларов США, в среднем 87 000 долларов США в год.

Облачные вычисления

По мере того как все больше и больше приложений перемещаются в облако, спрос на облачных специалистов продолжает расти. Один из обязательных навыков в этой области - облачная безопасность. Сертификаты Certified Cloud Security Professional (CCSP) открывают широкий спектр возможностей для карьерного роста. Войны инфраструктура как услуга были в значительной степени решены, и трофеи достались Amazon Web Services (AWS), Microsoft Azure и Google Cloud Platform, а AWS претендует на львиную долю.

Требуемые навыки включают умение работать с облачными платформами; базы данных (БД NoSQL, такие как Mongo DB, Apache CouchDB или SQL DB); программирование (Java, Python, C #, C ++, JavaScript и др.); Linux, прием данных, информационная безопасность и специальные веб-технологии, такие как REST и Grails.

Разработчики облачных вычислений зарабатывают от 73 000 до 83 000 долларов США, в среднем 77 000 долларов США в год.

Тестирование программного обеспечения

Тестирование программного обеспечения - это процесс оценки функциональности программного приложения с целью определить, соответствует ли оно указанным требованиям, и выявить любые дефекты. Существует два типа тестирования: ручное и автоматическое. Если вы новичок в программировании, подумайте об этом как о тестировании алгоритма. Как тестировщик программного обеспечения вы:

  • Анализировать истории пользователей, варианты использования и требования на предмет достоверности и осуществимости;
  • Сотрудничать с другими членами команды и отделами;
  • Выполнить все уровни тестирования (системное, интеграционное и регрессионное);
  • Проектировать и разрабатывать сценарии автоматизации;
  • Выявление и отслеживание дефектов и несоответствий программного обеспечения;
  • Применять принципы инженерии качества на протяжении всего жизненного цикла продукта Agile; а также
  • Предоставляем поддержку и документацию.

Очень важно владение такими инструментами автоматизации, как Selenium, Katalon Studio, TestComplete, унифицированное функциональное тестирование, s oapUI или Rational Functional Tester, и это лишь некоторые из них.

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

  1. Javascript. Популярные фреймворки: cucumber.js, Nightwatch, Protractor.

2. Java. Популярные фреймворки: Gauge, TestNG, JUnit.

3. Python. Популярные фреймворки: PyUnit, Lettuce, Behave.

4. C #. Популярные фреймворки: фреймворк модульного тестирования Visual Studio, SpecFlow, NUnit.

5. PHP. Популярные фреймворки: Codeception, Behat, SimpleTest.

6. Рубин. Популярные фреймворки: Capybara, RSpec, minitest.

По данным Glassdoor, средняя национальная зарплата тестировщика программного обеспечения в США составляет 61 977 долларов. Для более опытных людей зарплата может превышать 84 000 долларов.

DevOps

DevOps означает разработку и эксплуатацию. Это набор методов, который автоматизирует процессы между разработчиками программного обеспечения и ИТ-командами, чтобы они могли создавать, тестировать и выпускать программное обеспечение быстрее и надежнее. DevOps - это скорее культура, которая подчеркивает изменение мышления, лучшее сотрудничество и более тесную интеграцию.

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

- Джулиан Данн, менеджер по продукту Chef

DevOps требует хорошего владения программированием и написанием сценариев.

Знание Gradle, Git, Linux, Jenkins, Docker, Kubernetes, Puppet и других подобных инструментов просто необходимо. Кроме того, инженер DevOps должен понимать компоненты инфраструктуры центров обработки данных и облачной инфраструктуры и быть в состоянии обеспечить наличие в системах механизмов защиты от распространенных уязвимостей кибербезопасности.

Профессионалы DevOps зарабатывают от 91 000 до 155 000 долларов в зависимости от своего местоположения.

Искусственный интеллект

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

ИИ не является частью программной инженерии, но большинство компьютерных ученых и инженеров-программистов переходят на ИИ или, по крайней мере, используют ИИ в своих приложениях. Крупные компании, такие как Google, например, позволили разработчикам легко включать ИИ в свои приложения с помощью таких инструментов, как ML Kit: набор инструментов машинного обучения, который поставляется с множеством API и может маркировать изображения и обнаруживать штрих-коды, текст, лица. , и объекты, выполняют обработку естественного языка и т. д.

AI в основном предназначен для моделирования процессов человеческого интеллекта. Эти процессы включают обучение (получение информации и правил использования информации), рассуждение (использование правил для достижения приблизительных или определенных выводов) и самокоррекцию.

Популярные облачные сервисы AI включают сервисы Amazon AI, IBM Watson Assistant, Microsoft Cognitive Services и вышеупомянутые сервисы Google AI.

Вот лучшие языки для создания проектов AI:

  1. Python: Python считается выбором номер один для приложений ИИ. Его простота и мощные библиотеки упрощают реализацию алгоритмов ИИ. Некоторые из этих библиотек включают NumPy, библиотеку, которая помогает выполнять многие научные вычисления, и PyBrain, которая позволяет нам использовать машинное обучение в Python.
  2. R: Когда дело доходит до статистических вычислений, R - один из самых мощных языков. Помимо универсального языка, R имеет множество пакетов, таких как RODBC, gmodels, class и tm, которые используются в области машинного обучения. Эти пакеты упрощают реализацию алгоритмов машинного обучения.
  3. Java: ИИ во многом связан с алгоритмами поиска, искусственными нейронными сетями и генетическим программированием. Java предоставляет множество преимуществ: простота использования, легкость отладки, многочисленные сервисы пакетов, упрощенная работа с крупномасштабными проектами, графическое представление данных и улучшенное взаимодействие с пользователем. Поскольку Java обеспечивает беспрепятственный доступ к платформам больших данных, таким как Apache Spark и Apache Hadoop, она закрепила свое место в разработке ИИ, связанной с аналитикой данных.
  4. Лисп: Основанный на лямбда-исчислении, Лисп является одним из старейших языков в области ИИ. Лисп можно описать как практическую математическую нотацию компьютерных программ. Разработчики ИИ часто обращаются к Lisp для проектов ИИ, в которых много машинного обучения, потому что он предлагает возможности быстрого прототипирования, поддержку символьных выражений, библиотеку типов коллекций, а также является очень гибким и адаптируемым к их потребностям в решении проблем.

Другие языки, которые вы, возможно, захотите изучить, включают C ++, JavaScript и Prolog.

Некоторые из наиболее популярных в настоящее время инструментов ИИ - это IBM Watson, Keras, scikit-learn, Swift AI, TensorFlow, Theano и Torch.

Заработная плата большинства разработчиков ИИ в настоящее время колеблется от 97000 долларов (25-й процентиль) до 143000 долларов (75-й процентиль) в США.

Заключение

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