Куда податься программировать?

Куда податься программировать?

Больше вкусностей найдешь на моем канале - https://t.me/emotional_robot


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

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

1) Статья о том, кто такие программисты и на кой хрен они сдались.

2) Императивный и декларативный подходы в программировании.

3) Краткая история программирования (привет, микроволновка).

4) Объяснение смысла интерфейсов и сокрытия деталей реализации.

5) Компилируемые и интерпретируемые языки программирования.

6) Парадигмы программирования. Эпизод I: Процедурное программирование.

7) Парадигмы программирования. Эпизод II: Объектно-ориентированное программирование.

8) Парадигмы программирования. Эпизод III: Функциональное программирование.

9) Типизированные и динамические языки программирования.

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


Сферы деятельности и связанные с ними языки программирования


Каждый раз люто хренею с этой кучи, и это только популярные

Начну, разумеется, с той сферы, в которой сам варюсь - веб - программирование.

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

1) Программирование баз данных. Ядром любой информационной системы является база данных, следовательно, и разработка начинается с базы данных. Задача программиста БД сводится к проектированию схемы базы данных и написанию скриптов для манипуляции с ней. Для этого в его арсенале есть куча СУБД (систем управления базами данных) и SQL (structured query language  - «язык структурированных запросов») - декларативный язык программирования для работы в реляционных СУБД - и другие ЯПы, ежели это NoSQL (Not Only SQL) СУБД (как вы поняли, в них кодят не на SQL - долгая история, тоже планирую рассказать). Зарплатная вилка - 80 - 100 тысяч рублей в месяц.

2) Backend - разработчик. Вот тут есть, где разгуляться. Бэкенд пишут на туевой хуче различных ЯПов, например:

  1. Высокоуровневые, компилируемые, типизированные, в основном императивные с курсом на ООП: C#, Java, Kotlin, даже на С++ умудряются писать. Еще есть Go - он странный, но весьма популярный.
  2. Высокоуровневые, интерпретируемые, динамические, мультипарадигмальные: JavaScript (ага, этот засранец залез на чужую территорию, чем до сих пор вызывает жжение в одном месте у тру кодеров), Python, PHP, Ruby.

Каждый из языков тянет за собой уйму вещей, от фреймворков, до подходов и советов при разработке. Знать нужно дохера и больше, но и платят соотвественно. Зарплатная вилка - от 100 до 250 тысяч рублей.

3) Frontend - разработчик. Ваш покорный слуга. Исторически так сложилось, что на фронте власть узурпировал JavaScript, и никому пока не планирует уступать трон, хотя попытки имеются (WebAssembly для любителей низкоуровневого программирования, TypeScript, Dart, Reason для тех, кто не представляет свою жизнь без типизации). Зарплатная вилка - от 100 до 250 тысяч рублей.

4) Fullstack - разработчик. Человек - швейцарский нож, палочка - выручалочка, влажная мечта всех работодателей. Может и БД набросать, и бэкенд замутить, и фронтенд забабахать, короче, все умеет. Вот только из-за этого все шутят (а в каждой шутке, как говорится), что фулстеки - вечные мидлы (Middle разработчик). Невозможно знать глубоко все эти области, разве что вы гений и тратите все свое свободное время на программирование. Хоть фуллстек и шарит во всем, на зарплате этот не особо отражается по сравнению с другими - вилка от 80 до 180 тысяч. Тем не менее, фулстек может довольно быстро углубиться в любую из областей и стать сеньором, тем самым, увеличив доход.


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

Если провести четкие границы, можно выделить следующие направления:

1) iOS - разработчик. Специалист, который обмазан дорогущей техникой Apple, но не всегда в силу своей любви к ней. Apple хитрые ребята - создавать приложухи для айфоней и айпадов можно только на компах и ноутах компании Apple. iOS - разработчика ждет увлекательное знакомство с IDE "XCode" и Swift - открытый, мультипарадигменный, компилируемый, типизированный язык программирования общего назначения. Можно, конечно, кодить на его предшественнике - Objective-C, но нахера? Swift очень классный язык, потому изучение iOS - разработки обязательно нужно начать с этого языка. Зарплатная вилка - от 100 до 200 тысяч рублей.

2) Android - разработчик. Человек, любящий Android и все, что с ним связано. Для разработки Android - приложений и игр подойдет любая техника, главное, чтобы тянула одну из классных IDE, например, "Android Studio" или "Eclipse". По кодингу дело придется иметь либо с Java - компилируемый, строго типизированный, объектно-ориентированный язык программирования - либо с Kotlin - компилируемый, статически типизированный, мультипарадигменный язык программирования, полностью совместимый с Java. Это значит, что Java - программисты могут постепенно перейти на Kotlin ради получения крутых фишек. Если начинать погружение в Android - разработку, то сразу браться за Kotlin. Зарплатная вилка - от 100 до 200 тысяч рублей.

3) Windows phone разработчик. Самая немногочисленная группа программистов среди мобильщиков. Исторически сложилось так, что Винда потерпела поражение в войне за пользователей, и сейчас доля мобильных устройств на Windows Phone заставляет одного Билла Гейтса рыдать горькими слезами. Тем не менее, вакансии есть, но их мало, даже не уверен, что стоит с этим заморачиваться. Но упомянуть стоило - мало ли, как жизнь повернется, и Винда даст просраться Google и Apple.


Помимо узконаправленных специальностей в мобильной разработке присутствует еще две приколюхи:

1) Кроссплатформенная разработка. Есть дикая куча инструментов, на которых можно создавать так называемые "кроссплатформенные приложения и игры". Это когда пишешь код один раз, а потом билдишь сразу на все платформы. Экономия времени и ресурсов. Можно содержать одну команду таких разработчиков вместо двух команд для iOS и Android. Но если бы были только одни плюсы, уже давно все в кроссплатформенность кинулись. Производительность таких штук гораздо ниже нативных приложений (от слова "native" - родной, то есть под конкретную платформу на конкретных инструментах). Тем не менее, вакансий и на такую специальность хватает. Разброс зарплат огромный, потому не могу привести средних цифр, тут уже искать и сравнивать самим нужно.

2) Разработка гибридных мобильных приложений. Если совсем по-крестьянски объяснить - берем уже готовый сайт, заворачиваем его в специальную оболочку с помощью инструмента и билдим мобильное приложение. Как бы сайт внутри мобилки получается, потому гибридное. Но тут вряд ли можно отнести это к отдельному виду деятельности. Чаще всего этим занимаются веб-программисты, которых заказчик попросил заодно с сайтом запилить и мобильное приложение, а разрабам делать нечего разбираться с мобилками, вот и заворачивают сайт в какую-нибудь Apache Cordova или Ionic и довольные идут пить чай с печеньками.

Еще стоит упомянуть супер-кроссплатформенные штуки - когда можно запилить код сразу для Веба и мобилок. Это "React Native" и "NativeScript". Но подробнее об этом я точно буду позже рассказывать, так как сначала нужно разобраться хотя бы с React, Vue и Angular (мать честная, каждый раз диву даюсь, сколько всего в мире программирования существует).


А братьях старших всех мобилок тоже нельзя забывать. Десктопная разработка никуда не исчезла, до сих пор пилится крутое ПО под известные платформы (коих всего три: Windows, Linux и macOS), причем можно пилить как и нативные приложения, там и кроссплатформенные.

Разделять не буду по языкам, скажу, что их тоже навалом, но самые известные, доказавшие свою зрелость и мощь, конечно, Си (компилируемый, статически типизированный язык программирования общего назначения) и С++ (компилируемый, статически типизированный язык программирования общего назначения с поддержкой процедурного и объектно-ориентированного программирования). Из новичков выделяется Rust - мультипарадигмальный, компилируемый язык программирования общего назначения, сочетающий парадигмы функционального и процедурного программирования.

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


Игруууульки

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

В основном разработка идет под персональные компьютеры (винда), Play Station, XBox. Пишут в большинстве на С++, потому что этот язык позволяет (при правильной готовке) создать действительно мощный и производительный продукт. Но и гемора с ним при обучении словить можно длиной как от Земли до Луны. На свой страх и риск погружайтесь в эту пучину безумия и отчаяния.


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


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

Итого

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

Разрабатывайте сайты, веб-приложения, бэкенд для них, мобильные приложения (нативные, гибридные, кроссплатформенные) и игры, десктопные приложения на любую из платформ, нейронные сети, блокчейн, операционные системы, "Интернет вещей", пишите алгоритмы для роботов, автопилотов, создавайте игры для ПК, PS, XBox, пилите, Шура, пилите.

Быть может, помимо кодинга вы отлично шарите в финансах - запилите платежную систему, биржу, а если шарите в криптовалюте, то криптобиржу. Или создавайте вспомогательные вещи для существующих систем: расширения для браузеров, плагины для приложений, ботов для социальных сетей и месседжеров, альтернативные клиенты других приложений (например, как Kate Mobile для ВКонтакте или Telegram X для телеги). Где вы еще найдете такое многообразие задач и возможностей?

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




Report Page