Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

В этом уроке мы поговорим о том, какие бывают компании и направления в разработке.

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

IT как отдел

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

Бизнес построен вокруг IT

Вторая категория компаний — это те компании, в которых бизнес построен вокруг IT. Они делятся еще на несколько типов, о которых нужно знать.

Заказная разработка (outsourcing)

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

Из-за особенностей бизнеса заказной разработки, по сути построенного в том или ином виде на продаже времени своих сотрудников, он стабилен, когда в нём много разработчиков — чем больше, тем лучше. По этой причине аутсорсеры стараются быть очень большими, у них работает очень много молодых разработчиков, они часто интегрируются с университетами, имеют кучу офисов по всему миру. В крупных компаниях, таких как EPAM, Luxoft и DataArt, работают тысячи девелоперов. Эти компании действительно зарабатывают много денег и очень стабильны. Помимо таких гигантов, в аутсорсинге работают очень много небольших компаний: от 1-2 до 50-100 разработчиков. Однако чем меньше компания, тем более она нестабильная: если у вас в одном месте где-то заказ не пошёл, освобождаются люди, которых надо чем-то занимать, иначе их зарплата не будет окупаться. С одной стороны, этому бизнесу присущи большие риски, но с другой, его очень легко начать — отсюда и большое количество компаний в нём. Можно просто позвать своих друзей и предложить им делать аутсорсинг. После этого нужно найти первых клиентов — и можно работать. А дальше по сарафанному радио о компании узнаёт все больше и больше клиентов, и при хорошем раскладе можно успешно зарабатывать. Некоторые компании, осуществляющие заказную разработку, именно так и начинали свою деятельность.

Продуктовая разработка

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

Классификация ПО

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

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

Классификация прикладного ПО по платформам

  • Web-программирование
  • Мобильная разработка
  • Десктоп
  • Серверное ПО

В последнее время огромной популярностью пользуется мобильная и веб-разработка — в них больше вакансий, денег и возможностей. В разработке есть специальные направления, не связанные с одним типом платформы, такие как разработка игр (геймдев). Программисты пишут игровые движки, игры для веба и десктопа, и всё больше и больше игр портируется или разрабатывается для мобильных устройств. И скорее всего, созданием игр при текущих условиях будут заниматься именно те, кто работает в мобильной разработке, а не просто люди из области геймдева, которые просто возьмут и сменят платформу. Это лишь отвлеченный пример, связанный с трендами современности: всё уходит в веб и мобильные устройства, но в целом он прекрасно иллюстрирует взаимосвязь платформ и специализированных отраслей разработки, показывая важность первых при выборе направления своей деятельности.

Серверное ПО

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

Прикладное ПО

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

Системное ПО

Это особый тип программного обеспечения, с помощью которого компьютеры выполняют полезные задачи — это операционные системы, драйверы и иные программы, связанные непосредственно с железом.

Инструментарий

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

Desktop

Теряющее популярность, но все ещё очень активное направление — это десктоп. Это так называемые "толстые клиенты", когда программа запускается локально, чаще всего без подключения к интернету.

C++, Java, C\

В этом направлении всегда были популярны такие языки, как С++, Java и C#, но на пятки признанным авторитетам наступают те языки, которые еще не так давно никто не планировал использовать для написания толстых клиентов.

JavaScript, Python

Современный мир диктует свои правила, и универсальным языком, который все глубже проникает абсолютно во все направления разработки и на котором появляется всё больше приложений — это JavaScript. Даже представители компании Microsoft заявили, что в будущих операционных системах Windows все приложения будут использовать HTML и JavaScript. И действительно на JavaScript уже пишут серьёзные толстые клиенты и приложения на десктопе. Яркий тому пример — Atom, очень популярный редактор, который будет использоваться во многих наших уроках и который мы рекомендуем поставить. Этот редактор выпущен Github и основан на фреймворке Electron, который использует JavaScript, что позволяет строить кросс-платформенные приложения: то есть такие, которые пишутся один раз, но работают на всех платформах.

Языки в Mobile

Следующее направление — мобильное, и здесь есть две базовых ветви разработки: Android и iOS.

Android: Java, Kotlin

В Android раньше был только Java, но сейчас большие обороты набирает язык Kotlin. Люди, использующие его в своих проектах, говорят, что теперь разработка под Android стала действительно приятной.

iOS: Objective-C, Swift

Для разработки в iOS не так давно вышел язык Swift, на который мигрировало большинство разработчиков, поскольку хотя Objective-C долго был главным и единственным языком, но уже морально устарел. Swift — это отличный свежий язык с правильными идеями, который Apple внезапно сделала open-source — а значит его скоро можно будет использовать вне iOS, что может быть весьма интересно, потому что этот язык обладает кучей полезных качеств.

Языки в Web

И наше главное направление — это веб. Оно делится на 2 подраздела: бэкенд и фронтенд. Любое веб-приложение в конечном итоге имеет ту часть, которая взаимодействует с пользователем, и почти всегда это тонкий клиент — браузер, в котором крутятся приложения. Если раньше это был просто HTML, и вся логика происходила на сервере, то сейчас логики в браузере становится все больше и больше, и он становится по-настоящему "толстым" и "тяжелым".

Backend
  • PHP, Ruby, Python, JavaScript (Node), Perl
  • Go, C#, Erlang, Java, Clojure, Kotlin, Scala, Groovy

Утяжеление тонких клиентов не отменяет того, что на бэкенде все равно должны храниться данные и выполняться определенная логика. Для бэкенда в вебе существует огромное количество языков. Теоретически, можно использовать вообще любой, но на практике используются чаще всего именно те, который указаны выше. Java, Clojure, Kotlin, Scala, Groovy — это всё языки, построенные вокруг JVM, платформы, которая позволяет использовать их все вместе сразу, по очереди и как-то соединять между собой, поэтому можно сказать, что это одно семейство. Язык Go появился недавно, но очень быстро занял определенную нишу, и используется всё чаще. И, конечно же, самый популярный язык веба — это PHP, который является лидером, несмотря на все свои недостатки, и на нём сделано очень много сайтов, и с каждым днём их число лишь растёт.

Frontend
  • JavaScript

JavaScript присутствует и в бэкенде, и во фронтенде, и он будет все больше проникать в незанятые ранее ниши. JavaScript сейчас очень активно развивается и становится всё более серьёзным и классным языком.

Что выбрать? Критерии

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

Область, к которой лежит душа

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

Требуемая квалификация

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

Количество вакансий

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

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

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →