Все дело в том, чтобы решить, что вы хотите создать и с какой технологией хотите работать.

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

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

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

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

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

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

Наука о данных (машинное обучение, искусственный интеллект, глубокое обучение)

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

Python

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

Вот несколько хороших библиотек, с которыми стоит изучить и познакомиться: TensorFlow, Scikit-learn, Keras, Pandas и Numpy. Хороший способ попрактиковаться - просто найти наборы данных для работы в Интернете.

R

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

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

JavaScript

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

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

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

Моя рекомендация: Python

Облачная разработка

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

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

Salesforce [Apex, SOQL, Javascript, HTML, CSS]

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

В отличие от других услуг, указанных ниже, Salesforce - это PaaS (платформа как услуга), а не IaaS (инфраструктура как услуга). Это означает, что это проверенная модель для запуска приложений без необходимости поддерживать локальную аппаратную и программную инфраструктуру в вашей компании.

Лучший способ сделать это - сначала начать изучение административных задач Salesforce, чтобы вы могли окончательно понять платформу и получить хорошее представление о ней. Затем на этом этапе вы должны начать изучать Apex (собственный объектно-ориентированный язык Salesforce), SOQL (аналогично SQL, но только для Salesforce), Javascript и HTML, которые служат цели не только для расширения платформу, но также и в автоматизации внутри платформы.

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

Amazon Web Services (AWS) [Различные языки]

В отличие от Salesforce, AWS, Azure и Google Cloud служат в качестве IaaS (инфраструктуры как услуги). IaaS - это форма облачных вычислений, которая предоставляет виртуализированные вычислительные ресурсы через Интернет.

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

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

  • Поддерживаемые языки: Java, Javascript, C # (.NET), PHP, Python, Ruby, GO и C ++

Microsoft Azure [разные языки]

Являясь сильным номером два для AWS благодаря интеграции между собой, Office 365 и Teams, Azure является фантастическим выбором для любого начинающего облачного разработчика. Это решение особенно полезно для организаций, которые уже широко используют инструменты Microsoft, поскольку оно позволяет компаниям более плавно переходить в облако. Это делает понимание Azure очень ценным, так как многие организации уже привержены технологиям Microsoft, что делает Azure идеальным решением для них.

  • Поддерживаемые языки: Python, Java, Javascript, C # (.NET)

Google Cloud [разные языки]

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

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

  • Поддерживаемые языки: Go, Java, C # (.NET), Javascript (Node. js), Python, PHP и Ruby

Моя рекомендация: Salesforce (Admin, Apex, Javascript) или AWS (язык зависит от языка, но я бы сказал, Javascript, Java или C # с точки зрения серверной веб-разработки)

Разработка мобильных приложений

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

XCode [Swift]

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

Теперь, если вы хотите создать приложение с XCode, вам необходимо изучить Swift. Основная причина, по которой вы хотели бы разработать Swift, - это создание приложения, которое не только быстро работает на устройстве Apple, но и имеет настраиваемый пользовательский интерфейс для этого устройства.

Android Studio [Java]

То же самое можно сказать об Android Studio, как было сказано с XCode о пользовательском интерфейсе и производительности. Как видно из названия, это IDE, которая используется для разработки собственных приложений для Android. Java - язык, который необходимо знать для разработки с использованием Android Studio.

React Native [Javascript]

React Native - это кроссплатформенный фреймворк, созданный Facebook в 2015 году, и подавляющее большинство ваших любимых приложений, вероятно, были созданы с использованием React Native, например Facebook, Instagram, Uber Eats, Discord и Pinterest. Он позволяет пользователям использовать Javascript и React с собственными возможностями платформы для создания мобильных приложений.

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

Xamarin [C #]

Xamarin, самая старая из трех перечисленных здесь кроссплатформенных платформ, была основана в 2011 году и позволяет разрабатывать гибридные приложения с использованием C #, .NET и Microsoft Visual Studio.

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

Flutter [Дротик]

Flutter - это еще один кроссплатформенный фреймворк, который является новейшим из этих трех (созданный в 2017 году Google), но завоевавший широкую популярность, особенно среди интерфейсных разработчиков, для разработки гибридных приложений для мобильных устройств. Его основной язык программирования - Dart.

Он предлагает платформу разработки со встроенными виджетами, API, инструментами CLI (интерфейса командной строки) и почти всеми другими инструментами, которые могут вам понадобиться для разработки. Это обеспечивает высокую настраиваемость, надежность и горячую перезагрузку приложений для более быстрого исправления ошибок. К сожалению, он не предоставляет для использования многие собственные API-интерфейсы, поэтому вам придется прибегать к использованию сторонних пакетов.

Моя рекомендация: React Native (Javascript) или Flutter (Dart)

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

Когда мир вращается вокруг современного Интернета, возможность всегда будет найдена в разработке веб-сайтов. Веб-разработчики руководят современными инновациями и постоянно меняют способ работы технологий и мира, используя такие замечательные примеры, как Facebook, Spotify, Twitch, Youtube, Discord и многие другие, которые в конечном итоге начинали как веб-сайты, прежде чем они вышли на рынок мобильных приложений. Как веб-разработчик, вы, по сути, можете предоставить услуги любому человеку на любом рынке.

Веб-разработку можно разделить на две категории: Front-end и Back-end Веб-разработка. Внешняя веб-разработка - это практика преобразования данных в графический интерфейс с использованием HTML, CSS и Javascript, чтобы пользователи могли просматривать эти данные и взаимодействовать с ними. С другой стороны, внутренняя веб-разработка, - это навык, лежащий в основе Интернета. Языки серверной разработки обрабатывают «закулисную» функциональность веб-приложений. Это код, который подключает Интернет к базе данных, управляет пользовательскими подключениями и обеспечивает работу самого веб-приложения.

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

Фронтенд (Javascript, HTML, CSS)

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

  • React (Javascript) - интерфейсная библиотека, впервые созданная для принятия компонентной архитектуры. Его очень легко изучить, он быстрый, может использоваться как на стороне сервера, так и на стороне клиента и, как правило, полезен для одностраничных приложений, таких как Facebook.
  • Angular (Javascript, Typescript) - интерфейсный фреймворк, который специализируется на создании полнофункциональных одностраничных приложений с возможностями создания полных клиентских приложений. К недостаткам можно отнести большой размер и не совсем оптимизированный для SEO по своей природе. Его используют Google, Microsoft и Paypal.
  • Vue (Javascript) - очень прогрессивный фреймворк, который можно легко реализовать и использовать в существующем приложении. Он следует за компонентной архитектурой, позволяющей создавать полные интерфейсные приложения. Тот факт, что мы не видим, чтобы такие громкие имена, как Google или Facebook, его использовали, не означает, что это не мощный фреймворк. Vue на самом деле набирает обороты, и мы видим, что его используют такие компании, как Grammarly и Adobe.

Бэкэнд (C #, Java, Python, Javascript, Ruby или PHP)

Backend - это, по сути, то, что вы можете ожидать, чтобы обслуживать всю закулисную работу и обработку приложения. Возможно, это более важно, чем интерфейс, поскольку это инфраструктура, которая в первую очередь поддерживает приложение. Здесь вы обычно управляете подключениями к базе данных и обработкой для облачных сервисов, таких как AWS, Azure и Google Cloud. Вот несколько фреймворков, которые следует учитывать:

  • Express (Javascript) - будучи одним из самых популярных фреймворков на базе Node.js, вы можете видеть, что он используется в таких местах, как IBM и Uber. Новичкам может быть сложно научиться этому, поскольку нет определенного способа делать что-то, но он очень быстрый, надежный и гибкий в поддержке полных приложений, а также REST API.
  • Django (Python) - это фреймворк модель-представление-шаблон, который используется такими суперзвездами в сфере высоких технологий, как Google, Youtube и Instagram. Он предоставляет разработчикам методы и инструменты, позволяющие легко создавать безопасные веб-сайты, и предлагает множество функций, включая обмен сообщениями и аутентификацию.
  • Rails (Ruby) - фреймворк модель-представление-контроллер, используемый такими компаниями, как Airbnb, Github и Hulu. Он очень удобен для новичков и позволяет новичкам легко приступить к веб-разработке, но также приобретает крутой курс обучения, когда вы входите в более сложные его функции. Очень полезен и позволяет быстро развиваться благодаря своим библиотечным функциям.
  • ASP.NET (C #) - очень простая структура модель-представление-контроллер для создания веб-и облачных приложений, особенно с учетом того, что она обеспечивает простую интеграцию с Azure, поскольку она встроена в среду Microsoft. Это очень безопасный, высокопроизводительный фреймворк, дополненный богатым набором инструментов Visual Studio. Такие компании, как StackOverflow, GoDaddy и Ancestry, используют ASP.NET.
  • Spring (Java) - фреймворк модель-представление-контроллер, используемый такими компаниями, как Zillow, Wix и TicketMaster. Тот факт, что этот фреймворк использует Java, делает его очень привлекательным для разработчиков.

Моя рекомендация: React (Javascript) и Express (Javascript) / Django (Python)

Разработка игр

Создание видеоигр - мечта многих, и я полностью понимаю, что на самом деле я начал свою карьеру программиста, занимаясь разработкой игр, до того, как перешел в Salesforce Cloud Development. Идея создания вселенных и интерактивных миров из ничего, кроме строк кода и анимации, была для меня абсолютно увлекательной. Это, наверное, самое близкое, что мы когда-либо будем играть в бога.

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

Единство (C #)

Unity - это кроссплатформенный игровой движок, который можно использовать для создания игр 3D, 2D, виртуальной и дополненной реальности, а также моделирования. Unity в основном используется инди-разработчиками для простого создания сложных игр с помощью C #.

Самые популярные игры, созданные с помощью Unity, - это обычно красиво сделанные 2D-инди-игры, такие как Hollow Knight, Cuphead и Hearthstone. Это не означает, что вы не можете создавать красивые и сложные игры уровня AAA с помощью Unity, но, честно говоря, чтобы достичь такого мастерства графического рендеринга с помощью Unity, требуется гораздо больше работы, чем Unreal Engine, поэтому вы действительно не видите выходные игры Unity. которые находятся в одном ряду с изощренностью некоторых игр на движке Unreal Engine.

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

Unreal Engine (C ++ / визуальное программирование)

На мой взгляд, Unreal Engine более сложный и мощный игровой движок, чем Unity. Он способен создавать самые красивые и великолепные видеоигры, которые вы можете себе представить, и нет никаких сомнений в том, что многие из вас слышали о таких играх, как Fortnite, Borderlands, Gears of War, Bioshock и о бесконечном списке мощных игр. сделано с помощью Unreal.

Это не совсем означает, что вам следует начинать разработку с пылающим Unreal Guns. Unreal Engine создан для разработки больших игр и рендеринга игр с чрезвычайно подробной графикой, а тот факт, что он использует C ++ (съеживается от ужаса) в качестве основного языка программирования, мешает начинающим программистам сразу приступить к работе. Да, у них есть функция визуального программирования, но суть в том, что вы хотите научиться программировать. Если ты думаешь, что справишься с этой задачей, будь моим гостем.

Моя рекомендация: Unity C # (для начинающих), Unreal Engine C ++ (для экспертов)

Заключение

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