Какой язык программирования мне выбрать?
Евгений Картавец Программный директор SkillFactory.
При выборе профессии лучше всего ориентироваться на популярность, востребованность языка среди работодателей, сложность изучения и, конечно же, отрасли. Некоторые языки и наборы языков свойственны даже вполне определенным профессиям: например, Android-разработчику необходимы Java и Kotlin, а чтобы написать приложение на iOS, вам понадобится Swift. Вместе с программным директором SkillFactory Евгением Картавцом разбираем самые популярные языки программирования.
Освойте профессию
«Fullstack-разработчик на Python»
Как оценивают популярность языка программирования?
Почти всем известен индекс TIOBE, компании по разработке софта. Этот рейтинг основан на проценте запросов в поисковиках конкретного языка от запросов по всем языкам и ежемесячно составляется на основе данных из Google, Baidu, Wikipedia, Amazon и Ebay (внимание: Яндекс тут не учитывается). Он не показывает, какой язык лучше, а скорее помогает программистам проверить, насколько актуальные языки они используют.
Профессия / 12 месяцев
Fullstack-разработчик на Python
Создавайте веб-проекты самостоятельно
4 490 ₽/мес 7 483 ₽/мес
Индекс TIOBE — не единственный в своем роде. Вот еще несколько рейтингов, на которые можно опираться: PYPL (Popularity of Programming Language index) — рейтинг GitHub оценивает по Google Trends, к каким языкам чаще всего ищут уроки; Stack Overflow — сервис вопросов и ответов по теме программирования проводит масштабные исследования рынка и опросы разработчиков IEEE — Институт инженеров электротехники и электроники ежегодно публикует на своем сайте рейтинг языков программирования, основанный на 11 параметрах и восьми источниках, включающих соцсети и GitHub. Подробнее о популярности языков и причинах их роста мы писали на Habr. Если вы планируете изучать язык, чтобы потом найти работу с его применением, мы советуем оценивать его популярность по количеству вакансий в вашем городе. Заходите на hh.ru, набираете в поиске Python или C++, и видите количество вакансий с упоминанием языка. Пройдите наш тест и узнайте, какой язык подойдет вам лучше всего.
Какие языки проще, а какие сложнее?
Трудно объективно определить, какой язык проще, а какой сложнее, потому что это зависит не только от его особенностей, но и от вашего бэкграунда, желания разбираться в документации и т.д. Относительно универсальный критерий сложности — близость языка к программированию на машинном коде. Чем ближе к нему язык, тем более он низкоуровневый. Высокоуровневые языки, наоборот, лучше адаптированы для использования программистом. У высокоуровневых языков есть крупные стандартные библиотеки, а значит, большое количество разработанных доступных решений. Низкоуровневые языки предполагают работу с процессором, памятью и другими аппаратными ресурсами: можно контролировать всю изнанку, но из-за этого легче запутаться в синтаксисе. Впрочем, и такая классификация условна: на тему того, какой язык отнести к высокому, а какой к низкому уровню, ведутся споры.
В целом, сложность языка — довольно субъективный вопрос. Для изучения с нуля лучше всего подходят Python и JavaScript. PHP, Swift и Kotlin — немного сложнее. Java и C# — еще сложнее. C++, на мой взгляд, самый сложный. Go — достаточно простой язык, но у него сложная сфера применения, поэтому проще всего на него переходить с другого языка
Евгений Картавец,
ex-программный директор Skillfactory
Python
Сложность: подходит для неподготовленного новичка. Обилие готовых библиотек (многие из которых предназначены для работы с big data) и фреймворков, а также простой синтаксис позволяют практически сразу начать программировать. Профессии: Fullstack-разработчик / Data scientist / Data engineer / Data analyst. Продукты: Sims 4, YouTube, Instagram, Dropbox, Bittorrent. Преимущество Python — в его многогранности и широком применении. Его можно использовать как в веб-разработке (фреймворк Django, например, достаточно прост для того, чтобы новичок быстро разобрался в основах его использования) и работе с данными, так и в написании скриптов. Вы можете заниматься анализом данных для банковских систем, автоматизацией простых задач, разрабатывать приложения, совершенствовать голосовые помощники или обучать нейросеть (для этого, кстати, есть веб-сервисы типа Google Colaboratory, где можно бесплатно пользоваться мощным процессором TPU). Python сейчас все активнее набирает популярность среди программистов. Из-за простоты кода его часто используют в командных проектах, что облегчает разработчикам жизнь: можно не тратить время на разбор чужого материала.
PHP
Сложность: по синтаксису PHP близок к С и Java. Но не стоит пугаться: на самом деле это относительно легкий, гибкий и доступный новичку язык. При базовых представлениях об HTML и CSS можно сразу написать простой одностраничный сайт. Продукты: WordPress, Facebook, VK, Wikipedia. Профессии: Веб-разработчик PHP — серверный язык веб-разработок, он подходит для создания одностраничных или комплексных высоконагруженных сайтов. Он «оживляет» статичные HTML-страницы, поэтому на нем оптимально разрабатывать динамические сайты вроде соцсетей, форумов, интернет-магазинов и блогов. Мощный и высокопроизводительный PHP подходит и для проектирования баз данных тех же магазинов. Его можно использовать на многих операционных системах: язык ладит с Windows, Unix, Linux. При работе с ним нужно быть крайне внимательным, потому что из-за гибкости языка легко ошибиться в коде, а найти проблему потом бывает непросто. У PHP бесчисленное количество сообществ. На официальном сайте структурировали основные информационные рассылки. Почти в любой соцсети можно оперативно найти живое сообщество и обратиться за помощью.
Станьте веб-разработчиком и найдите стабильную работу на удаленке
Kotlin
Сложность: поскольку одной из целей создания языка было упростить Java, синтаксис Kotlin — интуитивно понятный и лаконичный. Профессии: Android-разработчик / Backend-разработчик. Продукты: Uber, Pinterest, Basecamp. Российская компания JetBrains представила язык Kotlin в 2016 году как альтернативу Java. Благодаря официальной поддержке Google он стал языком разработки приложений на Android. При этом он совместим с Java: код обоих языков можно использовать в одном и том же проекте. Помимо разработки Android, Kotlin используют и в серверных, и в клиентских приложениях для веб-разработок и backend. Сообщество Kotlin живое, хоть и немногочисленное, многие общаются на форумах или в Slack. Язык развивается не очень быстро, несмотря на открытость исходного кода.
Swift
Сложность: философия языка — простота и производительность, так что у него понятный, логичный и удобный синтаксис. В нем легко разбираться, если у вас уже есть база из высокоуровневых языков, но и без нее все не так сложно. Профессии: iOS-разработчик Продукты: Safari, Procreate, Kickstarter, VSCO На Swift создают продукты для экосистемы Apple: приложения для iOS, Mac, Apple Watch, Apple TV. В этом его преимущество и недостаток. С одной стороны, разработчики на iOS востребованы, их немного, поэтому можно будет быстро найти работу. С другой стороны, приложения сильно завязаны на своей экосистеме, и на других платформах они работают с трудом, на костылях. При этом делать функциональные и красивые приложения на Swift — проще. Разрабатывая их, вы будете сталкиваться и с UI-дизайном, и с дополненной реальностью. Swift многое взял из языка Objective-C, поэтому не лишним будет знакомство и с ним, чтобы в дальнейшем развиваться в направлении разработок для iOS. Обычно продукты Apple закрыты для сообщества, но у Swift открытый исходный код, что полезно как языку, так и комьюнити.
Go
Сложность: синтаксис Golang минимален, а широкая стандартная библиотека позволяет быстро разобраться в управлении командами. Профессии: Backend-разработчик Продукты: YouTube, архитектура Ozon, backend Wildberries Go разработали инженеры Google. Это (так же, как Swift и Kotlin) — компилируемый язык, который выступает альтернативой C++ для высоконагруженных приложений. На нем можно писать сетевые приложения на промышленном уровне, поэтому на Go все чаще обращают внимание крупные ритейлеры (вроде Ozon). По сравнению с остальными языками, этот — очень молодой (2009 год), но у него достаточно быстро растущее комьюнити, которое взаимодействует по Google-рассылке.
JavaScript
Сложность: можно выучить JavaScript быстро, главное — отрабатывать теорию на практике в тренажерах (подборка хороших интерактивов и обучалок). Уже за полгода можно освоить документацию, поскольку логика у него простая и гибкая. Язык мощный, а его инструменты просты и доступны Профессии: Frontend-разработчик / Fullstack-разработчик / Веб-девелопер. Продукты: Frontend сайтов программируют только на Javascript, так что он используется на большинстве сайтов. JavaScript — язык веб-разработок. Изначально на нем можно было программировать только frontend сайтов, но сейчас, благодаря Node.js, который выступает в роли веб-сервера, можно писать и серверные приложения. Язык делает сайты интерактивными и высокопроизводительными. А чтобы эффективно использовать возможности языка для создания красочных сайтов, нужно уметь пользоваться инструментами верстки HTML и CSS, знать один из популярных фреймворков (React, Vue или Angular). В веб-разработках сообщество большое, так как fullstack- и frontend-разработчики нужны всем. Сайтов огромное количество, мы пользуемся ими каждый день, и их всегда нужно улучшать. Кроме того, такие проекты можно вести самому с нуля вплоть до самого релиза, что тоже очень ценно, если вам привычнее инди-разработка.
Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все
C#
Сложность: C# изначально перенял синтаксические конструкции языков C++ и Java, так как его разработали специально, чтобы упростить последние. У него хороший набор фреймворков (.Net, Xamarin) и библиотек. Профессии: Разработчик игр / Fullstack-разработчик / Backend-разработчик. Продукты: Это универсальный язык программирования. На нем можно писать серверную часть сайтов, десктопные приложения, серверные приложения и даже игры. На российском рынке популярен движок Unity 3D, который позволяет на языке C# писать игры для любых платформ: для PC, мобильных устройств, приставок или VR. На нем удобно писать оконные приложения и веб-приложения или даже корпоративное программное обеспечение (например банковское обслуживание). Так как язык входит в пятерку самых популярных, он узнаваем, и в целом из-за обширной синтаксической семьи C# его сообщество масштабное и активное. Вы можете быть как инди-разработчиком, так и работать в команде — у вас всегда найдутся единомышленники и помощники.
C++
Сложность: синтаксис у C++ устроен сложнее, чем у тех же Python или C#. Однако использование языковых средств и концепций этого языка даст лучшее понимание теории программирования и может облегчить изучение других языков в дальнейшем. Профессии: C++ разработчик / Разработчик игр Продукты: на нем написан движок REDengine, на котором создали «Ведьмака» и Cyberpunk 2077, CCleaner, продукты Adobe, Autocad, Telegram, Microsoft 365 C++ — это один из фундаментальных языков программирования. Он быстрый, на нем вы можете заниматься оптимизацией, архитектурой ПО, решать задачи по автоматизации процессов, создавать системы моделирования. На нем можно писать с нуля программы, антивирусы, драйверы — все, что ближе к железу. Продукты, которые требуют более глубокого понимания основ программирования (роботы, нейросети), лучше создавать на C++. Из-за сложности языка сообщество программистов более сплоченное: активнее делится кодами и библиотеками языка. Можно даже наткнуться на горячие споры: кто-то считает, что C++ идеален в качестве первого языка, а другие относятся к языку со скепсисом и не видят смысла изучать его первым.
Java
Сложность: Сложнее, чем Python, но проще, чем C++. Довольно сильно похож на C# как по синтаксису, так и по сложности освоения. А большое количество обучающих материалов разного уровня доступно бесплатно. Профессии: Тестировщик ПО / Android-разработчик/ Java-разработчик. Продукты: архитектура Netflix, Spotify, Uber, веб-приложение Twitter Java стал вездесущим из-за своей универсальности и надежности. Про него слышали даже те, кто далек от программирования, потому что на языке написаны продукты, которыми мы пользуемся каждый день (Android-приложения, игрушки, десктопные ПО, банковские системы). Он кроссплатформенный, благодаря JVM (Java Virtual Machine) его можно запускать везде. Его чаще используют в компаниях, а не в инди-проектах. У Java одно из самых мощных сообществ. Вы сможете найти много разных проектов с открытым исходным кодом, обратиться за помощью и использовать готовые решения для своих кодов, развивая и совершенствуя их. Тест: Какой язык программирования вам подойдет?
Java-разработчик
Java уже 20 лет в мировом топе языков программирования. На нем создают сложные финансовые сервисы, стриминги и маркетплейсы. Освойте технологии, которые нужны для backend-разработки, за 14 месяцев.
Какой язык программирования выбрать новичку в 2023 году
Мы проанализировали популярность, уровни зарплат и собрали подборку, которая поможет выбрать язык программирования для изучения в 2023 году.
Совсем недавно закончилась «Битва языков программирования 2022». А в этой статье поговорим о том, какой язык программирования стоит изучать уже в 2023 году.
Сейчас насчитывается больше 8 000 разных языков программирования (ЯП), и их количество постоянно растёт. Каждый год, если не месяц, появляются новые, в том числе созданные just for fun, но популярных и востребованных всё же гораздо меньше. На какие из них стоит обратить внимание новичку?
Отвечая на этот вопрос, мы проанализировали несколько самых известных языков и сравнили их популярность по двум рейтингам: TIOBE и Stack Overflow. Также мы изучили уровень зарплат для каждого языка из статьи и проанализировали порог вхождения. В статье рассматриваются JavaScript, Golang, C++, Python, Java, Swift и Kotlin из мобильной разработки.
JavaScript
Популярность
Этот язык находится на 7–ом месте по индексу TIOBE, строящемуся на основе подсчёта результатов поисковых запросов, содержащих название ЯП. В 2022 году рейтинг JavaScript вырос на 0,9%. На графике ниже показана динамика изменения рейтинга языка с 2002 года.
Что касается индекса Stack Overflow, то JavaScript находится на 17–ом месте. Он нравится 61,46% пользователей ресурса (индекс составлен с учётом 22 544 голосов).
Уровень зарплат
По данным Хабр Карьеры, медианный уровень зарплаты программистов на JavaScript — 150 000 рублей. Этот показатель не вырос, но и не снизился с 2021 года, что может говорить о стабильном спросе на разработчиков, специализирующихся на этом ЯП.
Порог вхождения и перспективы
По мнению самих разработчиков, у JavaScript относительно невысокий порог входа, что делает его весьма популярным и востребованным. Его стоит изучать потому, что технологии на базе языка повсеместны. Так, он исполняется у любого пользователя сети в браузере и применяется в бэкенде. При этом задачи, для решения которых используется JS, могут быть очень сложными.
Перспективы у JS хорошие — его популярность вряд ли будет снижаться в ближайшие несколько лет. Хотя бы потому, что это единственный язык программирования такого класса, который поддерживается браузерами. Плюс он подходит для работы с серверными технологиями.
Golang
Популярность
Golang — относительно молодой ЯП, созданный командой Google. За примерно десять лет он поднялся до 12-го места в индексе TIOBE. В 2021 году он занимал 19–ю позицию. Вот динамика изменения рейтинга ЯП с момента его появления в 2010 году.
В индексе Stack Overflow он занимает 8–е место. С ним предпочитают работать 64,58% пользователей ресурса.
Уровень зарплат
По данным Хабр Карьеры, медианная зарплата разработчиков Golang составляет 205 000 рублей, с ростом на 3% по отношению к 2021 году. Рост зарплат может быть свидетельством увеличения популярности языка от года к году.
Порог вхождения и перспективы
По этому показателю Golang несколько проигрывает JavaScript, поскольку язык изучают в основном профессиональные разработчики, которые программируют и на других языках. Как правило, язык изучают в связке с PHP и Python.
Тем не менее многие программисты считают, что Go подходит и для изучения в качестве первого ЯП. Это полный язык по Тьюрингу, а его достоинства — простота и лаконичность. С помощью Golang можно решать задачи практически любого уровня сложности.
С++
Популярность
Согласно индексу TIOBE «плюсы» занимают 3–ю позицию, поднявшись с 4–го места в 2021 году. За год рейтинг языка увеличился на 4,21%. Ниже — динамика популярности с 2002 года.
А вот согласно индексу Stack Overflow язык занимает 25–е место. Он нравится 48,39% пользователей ресурса.
Уровень зарплат
Медианный уровень, по данным Хабр Карьеры, — 150 000 рублей. По сравнению с 2021 годом уровень зарплат вырос на 9%.
Порог вхождения и перспективы
У этого языка довольно высокий порог вхождения. Желательно иметь хотя бы базовое представление о том, что такое программирование, как работает аппаратное обеспечение ПК и ОС. При работе с языком требуется контролировать типы данных, а также выделение и освобождение памяти.
Спрос же на разработчиков С++ остаётся стабильно высоким. Их приглашают на работу в компании разного масштаба, включая такие крупные, как Microsoft, Amazon и Google.
Python
Популярность
По данным индекса TIOBE, Python занял в 2022 году 1–е место, его показатель популярности вырос с 2021 года на 3,76%. Судя по динамике изменения рейтинга, востребованность специалистов по этому ЯП постоянно растёт.
В индексе Stack Overflow язык занимает 6–е место. Его выбирают 67,34% пользователей ресурса.
Уровень зарплат
По данным Хабр Карьеры, Python-программисты получают около 140 000 рублей. При этом с 2021 года этот показатель упал на 7%. Падение может быть связано с ростом количества программистов, работающих с этим ЯП, и вследствие этого ростом предложения на рынке.
Порог вхождения и перспективы
Язык считается несложным для изучения. До уровня Junior его могут освоить люди без технического образования. Что касается перспектив Python, то его популярность растёт год от года. Причина — несмотря на относительную простоту, ЯП позволяет разрабатывать серьёзные проекты со сложной архитектурой.
Java
Популярность
В индексе TIOBE Java находится на 4–ом месте, тогда как в 2021 ЯП занимал 3–ю позицию. Язык много лет занимает ведущие позиции рейтинга, перемещаясь в первой пятёрке. Вот динамика изменения рейтинга.
А вот по версии индекса Stack Overflow он находится на 28–ом месте. Язык нравится 45,75% пользователей ресурса.
Уровень зарплат
Согласно данным Хабр Карьеры медианная зарплата Java-разработчика составляет около 200 000 рублей. За год зарплаты в среднем выросли на 13%.
Порог вхождения и перспективы
По мнению ряда разработчиков, порог вхождения в Java средний. Чтобы научиться программировать на языке, нужен технический английский, чтобы разбираться в документации. Требуются общие знания ООП, паттернов проектирования, а также общее хорошее знание Java в объёме Sun’s java tutorial.
Как войти в backend-разработку на Java
Стоит отметить, что Java — язык программирования, который используется в энтерпрайзе. В мире нет крупных компаний, которые не используют Java. В ближайшие лет 10 никто не сможет отказаться от этого языка, поскольку на нём написано множество продуктов, модулей и т. п.
Swift
Популярность
Согласно индексу TIOBE язык Swift занимает 15–е место по популярности среди разработчиков. Стоит отметить, что за год ЯП опустился сразу на 5 позиций, в прошлом году он занимал 10–е место. Вот динамика изменения популярности языка с 2014 года.
Что касается индекса Stack Overflow, то Swift занимает 12–е место. Язык нравится 62,88% разработчиков.
Уровень зарплат
Хабр Карьеры говорит о том, что Swift-разработчики получают около 200 000 рублей, за год зарплаты остались на прежнем уровне. Это может говорить о стабильном спросе на специалистов по этому ЯП, который остаётся примерно на одном и том же уровне из года в год.
Порог вхождения и перспективы
Он довольно низкий по сравнению с другими языками. Начать работать после получения базового опыта и знаний можно в пределах года с момента начала изучения Swift. При этом, если раньше кодовая база имела 75 000 кодовых строк, то сейчас это количество сокращено более чем на две трети.
У языка отличные перспективы, поскольку экосистема Apple, для поддержки устройств которой и создан язык, продолжает активно развиваться. Практически у любой относительно крупной компании есть приложение на iOS, что означает, что спрос на разработчиков не будет падать в ближайшие несколько лет.
Kotlin
Популярность
Согласно индексу TIOBE Kotlin занимает 23–е место. Это относительно новый язык, который ещё просто не успел войти в первую двадцатку или тем более десятку. Тем не менее его популярность постепенно растёт. Так, с прошлого года рейтинг ЯП вырос на 0,58%.
По индексу Stack Overflow язык занимает 11–е место. Он нравится 63,29% разработчиков.
Уровень зарплат
Тезис о росте популярности языка подтверждает и уровень зарплат разработчиков, которые специализируются на Kotlin. По данным Хабр Карьеры, медианная зарплата программиста на Kotlin составляет около 185 000 рублей. За год этот показатель увеличился на 3%.
Порог вхождения и перспективы
По мнению разработчиков, порог вхождения в Kotlin низкий по сравнению с другими языками. Ещё быстрее его можно освоить, если разработчик хотя бы на базовом уровне знает Java. При этом родные для Java итераторы и коллекции поддерживаются им «из коробки».
Интересный факт: в Google считают, что Kotlin открывает больше возможностей, чем Java. Его популярность постепенно растёт — некоторые компании предпочитают переходить на Kotlin с Java. Плюс это универсальный язык, на котором можно написать и Android-приложение, и сервис, и приложение для ПК. В ближайшие лет 5 его популярность будет расти, так что и спрос на Kotlin-разработчиков будет стабильно высоким.
Java vs Kotlin для Android-разработки: ответы «за» и «против»
Так что же выбрать?
Мы рекомендуем выбирать тот язык программирования, принципы развития и сфера применения которого ближе к вашим профессиональным интересам. Скажем, если вы собираетесь выбрать своей отраслью Data Science, то вам нужен Python. Если хотите посвятить себя мобильной разработке, то без Java, Swift или Kotlin не обойтись.
Так что приведённые данные относительно места разных ЯП в индексе или уровня зарплат разработчиков — лишь ориентир, но далеко не главный фактор, которым стоит руководствоваться при выборе языка программирования, который вы собираетесь начать учить в 2023 году.
Следите за новыми постами по любимым темам
Подпишитесь на интересующие вас теги, чтобы следить за новыми постами и быть в курсе событий.
Как выбрать язык программирования и начать карьеру: советы от разработчика, занимающегося наймом
Хайп вокруг «войти в IT» привел к тому, что в разработчики и тестировщики потянулись не только студенты профильных вузов, но и люди из других профессий. Не будем сейчас обсуждать правильность подобного выбора в той или иной ситуации, а просто расспросим опытного человека в области разработки о том, как правильно подойти к выбору языка программирования и начать свой карьерный путь, раз вы на это решились или крепко задумались по этому поводу.
Этот пост — выжимка из моей беседы с Даниилом Пилипенко, создателем компании SymbioWay, занимающейся подбором и оценкой IT-специалистов для сторонних компаний и предоставляющей услуги аутстаффинга.
Даниил — профессиональный разработчик с 18-летним стажем. Начал свой путь с младшего программиста на Java. Через шесть лет стал руководителем отдела разработки, изучил PHP и JavaScript. В данный момент, кроме работы по подбору персонала, проводит карьерные консультации, выступает в качестве спикера на конференциях и вебинарах, преподает флагманский курс по Java в Skillbox.
Одно из последних выступлений Даниила, как раз посвященное выбору языка программирования, прошло при поддержке Leader-ID, что и послужило поводом для данного материала. Далее — слово Даниилу.
IT-рынок: какие изменения произошли, оценка текущей ситуации и ожидания в будущем
Если говорить про IT-рынок, то здесь интересно наблюдать за двумя показателями: количество резюме и количество вакансий. Обратившись за статистикой на HeadHunter, можно сказать, что начиная как минимум с первого квартала 2014 года спрос на разработчиков растет быстрее, чем предложение, и расстояние между двумя кривыми — то есть дефицит специалистов — постоянно увеличивается:
Весной 2020 года наблюдался «пандемийный спад», а затем резкий рост рынка с лета 2020 года по конец 2021-го. В декабре 2021-го спрос на разработчиков вырос почти в три раза, и количество вакансий в пике приблизилось к 86 тыс. по сравнению с примерно 32 тыс. в конце марта 2020 года.
Любые кризисы приводят к тому, что экономические пузыри лопаются. Ровно это и произошло со спросом на разработчиков этой весной. Отмечу, что это общемировой тренд и такая картинка наблюдается не только в России. В итоге количество вакансий вернулось к тому, каким бы оно было, если бы рост происходил обычным «допандемийным» темпом. Это хорошо видно на графике выше.
С мая этого года количество вакансий для программистов в России вышло на плато и составляет примерно 46 тыс. При этом происходит реструктуризация рынка: часть вакансий закрывается и некоторые компании уходят с рынка, но другая часть, наоборот, открывается.
Сложно сказать, что будет происходить дальше, потому что в кризисах такого масштаба никто еще не жил. Такие крупные игроки, как Amazon, Facebook, с мая этого года начали приостанавливать наем и даже массово сокращать сотрудников. Это связано со всеобщей неопределенностью и осторожностью крупных инвесторов, которые пока сами не очень хорошо понимают общие тренды и предпочитают не рисковать.
Тем не менее спрос на программистов по-прежнему превышает предложение, как и все последние 25 лет. Истинных профессионалов по всем самым востребованным специальностям сегодня все так же не хватает.
Что касается самих разработчиков, пожалуй, февраль 2022 года был самым напряженным и переломным моментом для них. Как мы знаем, после февраля (и затем в сентябре) из страны уехало большое количество IT-специалистов. Однако, по нашим данным, около 50% из них продолжают работать на российские компании. Ну и сейчас, в ноябре, некоторые специалисты по разным причинам снова начинают возвращаться из-за рубежа.
Реально ли сейчас начать карьеру и устроиться на позицию junior-разработчика?
Есть мнение, что в последнее время компании стали менее охотно нанимать junior-разработчиков. А в дальнейшем спрос на них и вовсе сойдет на нет, потому что программы сами будут писать программы. Но все это лишь слухи.
Во-первых, простые системы тоже надо кому-то разрабатывать. Взять, например, ту же Tilda, которая облегчает создание сайтов. Может показаться, что программист больше не нужен, ведь сайт можно собрать через конструктор. Но не стоит забывать, что кто-то разработал и продолжает улучшать и поддерживать саму Tilda.
Во-вторых, такие инструменты, как Tilda, имеют довольно ограниченный функционал: с его помощью мы можем легко сделать пару страничек, но какой-нибудь серьeзный продукт вроде «Яндекс Маркета» на нем не напишешь. Да и в будущем вряд ли кому-то удастся создать универсальную систему, которая будет писать любую другую систему без участия человека.
В-третьих, учитывая текущие реалии и массовый отъезд программистов уровня middle и senior, компаниям ничего не остается, как нанимать junior-разработчиков. Например, junior-разработчики, которых сейчас воспитывают в том же Skillbox, при грамотно составленном резюме, имея определенную базу и навыки, находят себе работу в течение месяца после окончания курса. Этот факт доказывает, что спрос на джунов по-прежнему высок.
Ну и в-четвертых, в каждом проекте есть задачи, которые просто не поручишь программистам уровня middle и senior, а для junior-специалистов они идеальны — просты, позволяют относительно легко войти в проект и успешно закрепляют базовые навыки.
Поэтому, если есть желание начать карьеру разработчика, — сейчас самое время.
С чего начать
Очевидный первый шаг — выбрать язык программирования и направление, которым вы хотите заниматься (об этом следующий раздел).
Второй — заняться практикой. Ощутить и почувствовать, что такое кодинг. Обзавестись минимальным арсеналом junior-разработчика (см. ниже).
Третий — найти работу применение своим знаниям и навыкам. Чтобы поддерживать и расширять экспертность в любом деле, необходимо постоянно практиковаться. Для этого недостаточно придумывать себе задачи «на покодить» или учиться на курсах. Важно как можно быстрее перейти на профессиональный уровень и найти вариант, где вы каждый день занимаетесь разработкой.
Что не рекомендуется делать на старте карьеры
Читать много книг. Некоторые книги сложны для восприятия и написаны тяжелым языком. В моей практике есть несколько негативных примеров старта карьеры с книг: такие люди иногда годами читают книги, но так и не написали ни единой строчки кода и, соответственно, пока не стали программистами.
Минимальный арсенал junior-разработчика
- знание синтаксиса языка;
- понимание принципов объектно-ориентированного программирования;
- владение каким-либо основным для данного языка фреймворком (если речь про веб-разработку) или понимание того, как с точки зрения архитектуры создаются мобильные приложения (если речь про мобильную разработку);
- знание языка запросов SQL (для backend-разработки);
- понимание принципов клиент-серверного взаимодействия, базовое знание протокола HTTP и стандарта REST;
- опыт работы с Git и командной строкой;
- опыт командной работы (этот пункт очень желателен и существенно повышает шанс найти работу).
Как выбрать свое направление в программировании
В сфере программирования есть несколько ветвей. Первая, веб-разработка, — самое обширное направление во всем мире (по разным оценкам, более 50% всего программного обеспечения в мире — это именно веб-приложения). Веб-разработка подразделяется на направления frontend- и backend-разработки.
Вторая крупная ветвь — мобильная разработка. Другие ветви — разработка десктопных приложений, игр, встроенного и системного программного обеспечения, разработка для Data Science и другое.
Чтобы выбрать направление, можно для начала задаться вопросом, хотите ли вы работать с визуальной частью тех или иных приложений? Если да, то, имея в арсенале некоторые способности и интерес к данной области, можно начать покорять вершины frontend- или мобильной разработки.
Если же желания работать с визуальной частью нет, а хочется, наоборот, знать и понимать, как устроена серверная часть веб-приложений, как она взаимодействует с frontend’ом и с мобильными приложениями, то стоит рассмотреть для себя backend-разработку.
Если вы хотите развиваться в мобильной разработке, стоит начинать с разработки на той операционной системе, на которой работает ваш смартфон, — Android или iOS. Это значительно ускорит процесс вашего обучения и сделает его более эффективным, поскольку с высокой вероятностью вы знаете соответствующую платформу лучше другой и сможете сразу тестировать то, что вы создали.
Как выбрать язык программирования
Выбор языка существенно зависит от того, какое направление в программировании вы выберете.
Возьмем, к примеру, веб-приложения и frontend-разработку. В этом примере выбор языка очевиден — это JavaScript и в качестве дополнения TypeScript.
Если же мы рассмотрим топ языков для backend-разработки, то увидим, что треть всех вакансий в РФ и, соответственно, первое место в топе уже многие годы принадлежит языку Java.
Второе место в топе и примерно 15% всех программистских вакансий отдано Python. В этом году чуть сдал свои позиции и занимает третье место язык PHP. Четвертое почетное место в топе у языка Go. И, кажется, он скоро сможет пробиться выше. Вот эта первая четверка языков закрывают около 75% рынка. А далее, на пятом месте? идет C#. Его доля на сегодняшний день около 10%. Спрос на С# с каждым годом снижается.
Теперь попробуем сравнить языки backend-разработки между собой. К примеру, Go и PHP — языки программирования, применяющиеся в основном для создания веб-сайтов и веб-приложений. Напротив, Java и Python — более универсальные языки, на них пишут практически всё, и выбор одного из них в качестве своего первого языка выглядит очень логично.
Если задаться вопросом, насколько каждый из них подходит для enterprise-разработки, то Java будет являться несомненным лидером. Все банковские и платежные системы, Госуслуги, «Яндекс Маркет», «Яндекс Музыка» в значительной мере написаны на Java.
Вторым критерием для сравнения Java и Python является порог вхождения. И тут уже побеждает Python.
Давайте посмотрим, как выглядит вывод в консоль традиционного «Hello, world!» на двух языках.
Действительно, на первых этапах Python кажется проще для изучения (пример кода нам это доказывает), но, изучив Java, в дальнейшем можно легко переходить практически на любой другой язык: Kotlin, PHP, С# и тот же Python. Если же вначале изучить Python, то с него «прыгнуть» куда-то еще будет немного сложнее.
Третий критерий сравнения — спрос. Если мы посмотрим рынок РФ, то спрос на Java практически в два раза превышает спрос на Python. Если же посмотреть на мировой рынок, то все будет наоборот — Python сегодня в мировых лидерах. Например, такую активно развивающуюся сферу, как Data Science, язык Python оккупировал более чем на 90%.
Стоит сказать про языки Kotlin и Swift, которые практически полностью заняли собой мобильную разработку на Android и iOS.
Чтобы определиться, нравится ли человеку выбранный язык программирования, необходимо его «попробовать» — решить на нем небольшую практическую задачу. К примеру, если выбор пал на Kotlin, значит, нужно изучить его основы и попробовать написать свое первое, пусть и очень маленькое, мобильное приложение под Android.
Самым правильным вариантом для старта карьеры является «начать пробовать» и, собственно, начать писать код. И не очень важно, на каком именно языке. Главное — начать.
Можно годами изучать рынок и топы, сомневаться в выборе языка и так ничего и не сделать. А можно изучить любой из современных языков и, если он не понравится или захочется расширить свои навыки, просто перейти на какой-либо другой.
Все современные языки программирования сильно похожи, логика написания кода на них практически одинакова, за исключением относительно небольшого количества различий и нюансов, которые познаются за считаные недели, если есть уверенное владение каким-то другим языком.
Есть еще одна важная рекомендация: если вы хотите стать программистом, не стоит идти «в обход» — например через верстку, тестирование или DevOps. Есть риск потерять много времени, занимаясь нелюбимым делом. Даже если вход в разработку видится вам сложным, не стоит искать другие пути. Все трудности будут вам по плечу, если у вас будет интерес. И тяжeлый вход в самое желанное направление будет гораздо эффективнее с точки зрения затрат времени и ресурсов, чем любой «обходной путь».
В мире IT есть тенденция часто менять работу. Почему? Потому что спрос на IT-специалистов значительно превышает предложение, работу найти легко и можно непрерывно улучшать свои условия труда. Но часто люди меняют работу не из желания профессионально расти, а из-за возникновения каких-либо трудностей: сотрудник не может решить поставленную задачу, накапливается большой объем нерешенных проблем, ему не хватает квалификации или опыта, он не может организовать свою работу, и тогда он просто убегает от трудностей, меняя место. А ведь профессионализм человека в любой сфере определяется именно тем, как он умеет преодолевать трудности.
Чтобы стать профессионалом, нужно получить опыт и преодолеть как можно больше трудностей.
С чего начать изучение языка программирования
Начинать изучение любого языка нужно с синтаксиса и с практики. Это как обучение вождению: можно изучить всю теорию, все правила, но пока не сядешь за руль, водить не научишься.
Итогом обучения должна стать в идеале разработка какого-то пусть и небольшого, но полезного проекта. Например, в Skillbox на курсе по Java мы предлагаем по итогам обучения разработать поисковый движок. На подобных задачах можно полноценно ощутить, что такое создание систем с нуля на MVC-фреймворке, закрепить навыки работы с базой данных и языком запросов SQL, попробовать работу с файлами, научиться получать и обрабатывать HTTP-запросы и формировать HTTP-ответы в соответствии со стандартом REST. Без этих базовых знаний об успешном трудоустройстве можно даже не мечтать. Мало знать только синтаксис языка и уметь писать голый код, нужно понимать, как написать код так, чтобы получилась рабочая система или мало-мальски готовый продукт.
Можно ли научиться программировать на курсах?
Курсы и школы бывают разные. Есть школы, у которых все курсы хорошие, а есть школы, где можно выделить только пару достойных курсов. Любой курс разрабатывает специалист (или команда специалистов), поэтому его успех зависит от методики и профессионализма этого конкретного специалиста или команды.
Можно попробовать отыскать для себя хороший курс по программированию по следующем критериям:
- продолжительность курса от шести месяцев и больше;
- он включает в себя изучение основ языка и фундаментальных понятий в современном программировании;
- в программе курса есть много тем, пересекающихся с требованиями в вакансиях по данной специальности;
- на курсе будет очень много практики по написанию кода, а также индивидуальный и командный проекты.
Реализация командного проекта примерно на 50% повышает шанс на трудоустройство выпускников: работа под руководством тимлида, где студенты познают все горести и радости командной работы, учатся взаимодействовать, соблюдать дедлайны и участвовать в таких активностях, как код-ревью, груминг и дейли-митинги.
К сожалению, все чаще можно наблюдать проблему с трудоустройством у выпускников курсов по программированию, которые не доучились или обучались на слабом курсе. Был тут интересный случай: однажды, ко мне на карьерную консультацию пришел мужчина 57 лет, который окончил курс по frontend-разработке и не мог устроиться на работу. Он был уверен, что вся его проблема кроется в возрасте. Но на консультации выяснилось, что он не может написать ни одной строчки кода и просто-напросто не имел практики, изучив только термины и теорию. Поэтому совет для него звучал так: сначала нужно изучить основы (я дал ему конкретный перечень, что и где можно быстро и бесплатно изучить), разместить резюме, устроиться на работу и только потом уже вспоминать, сколько ему лет. Кстати, карьера этого человека сложилась отлично: сначала он устроился на работу верстальщиком и в течение года вырос до младшего frontend-разработчика.
Правильный курс может стать отличной базой для старта карьеры. Остается только вопрос мотивации и интереса самого человека. Если человек занимается чем-то вовлеченно, то он постоянно думает о своем деле и непрерывно практикуется, например на pet-проекте. Комбинация из курса и вовлеченности в дело помогает ему найти работу и стать настоящим профессионалом.
Сертификат после прохождения курса — это просто бумажка, которую можно положить на полку. Но интерес к делу не получится оставить пылиться на полке. Поэтому нельзя однозначно ответить на вопрос, можно ли научиться программировать на курсах. Кто-то научится, а кто-то — нет.
Hard и soft skills на старте карьеры: что важнее
С учетом сегодняшнего дефицита программистов на рынке, hard skills на старте более весомы. Важно хорошо уметь писать код, решать задачи. Существует мнение, что в первую очередь человек должен быть разумный, а дальше он всему научится. Моe персональное мнение состоит в том, что soft skills можно прокачать в процессе работы. А вот то, насколько человек технически подкован, на старте карьеры очень важно, и обучать его основам программирования не всегда есть ресурсы.
На рынке мнение о том, что важнее — hard или soft skills, разделяется ровно пополам. На нескольких своих последних выступлениях я проводил опрос, и эта статистика подтверждается: примерно половине руководителей важнее soft skills, а другой половине — hard skills.
Чем junior, middle и senior отличаются друг от друга?
На эту тему есть две шутки. Первая: junior еще не может работать самостоятельно, а senior — уже не может. Вторая: junior приходит к своему руководителю с вопросами, а middle — с ответами. Выводы из этих шуток следующие: основное, что отличает программистов разных грейдов друг от друга, это уровень их самостоятельности. Безусловно, уровень самостоятельности — это комплексный показатель, отражающий одновременно и hard skills, и soft skills.
Тестирование кода: важный навык хорошего разработчика
Важный навык хорошего разработчика состоит в умении тестировать код (свой или чужой) и находить там ошибки. Поэтому разработчик должен уметь писать unit- и e2e-тесты. По этому вопросу есть одно наблюдение: получается намного эффективнее, если тестовый и основной код пишут разные разработчики. Так программа гораздо быстрее вычищается от багов, улучшается тестовое покрытие и кодовая база в целом.
Методика выявления настоящего профессионала в программировании
Чем каждый день должен заниматься программист? Писать код. Поэтому, чтобы определить настоящего программиста, нужно посмотреть на то, как он работает.
Идеальное собеседование — это один рабочий день, когда мы просто сажаем человека на текущие задачи и в конце дня смотрим, как он с ними справился. Но обычно такой возможности нет, и тогда на собеседовании мы устраиваем live coding, по которому становится понятны опыт, грейд, наличие или отсутствие интереса и образ мышления соискателя.
Таким образом первая часть методики определения настоящего профессионала состоит в небольшой задаче на написание кода. Если код написан чисто, быстро, грамотно разбит на функции и методы, переменные названы понятно и во время выполнения задачи соискатель вошел в состояние потока (включился и полностью погрузился в задачу), такого человека можно брать на работу.
Вторая часть методики заключается в задавании соискателю вопросов в виде задач, которые проверяют умение думать. На такой вопрос нельзя ответить заученными шаблонами, требуется пропустить проблему через себя и искать решение на ходу. Вопросы лучше задавать по возрастающей сложности, чтобы можно было измерить уровень человека и его общий интерес к профессии.
Итоги
Мне кажется, что в программисты успешно попадет тот, кто горит своим делом. Мало просто знать язык и уметь на нем писать. Важно иметь желание разрабатывать продукты, продумывать взаимодействие компонентов приложения, улучшать кодовую базу, автоматизировать рутинные действия, расти и развиваться как специалист. И всегда помнить, что бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как работают профессионалы.
- программирование
- войти в программирование с нуля
Какие языки программирования учить?
Довольно популярное мнение среди разработчиков, что уровень квалификации и зарплата зависят от количества языков программирования, которыми разработчик владеет.
Я сам в свое время ходил и думал, что бы такого изучить, чтобы потом писать в резюме много умных слов. Затем однажды на работе познакомился с коллегой, С++ разработчиком, который за всю жизнь освоил только один этот язык и все. А зарплата у него была, как у меня, может даже больше. Помню, как он ходил и с интересом спрашивал, как такие же вещи можно делать на С #. Это меня очень удивило, потому что я увидел, что человек достаточно успешен в IT-карьере, хотя он хорошо выучил всего один язык, а за его пределами почти ничего не знает.
Конечно, это не значит, что надо ограничивать свой кругозор единственным языком. На мой взгляд, секрет успеха в том, чтобы стать профи в чем-то одном, а затем осваивать смежные области, которые будут дополнять друг друга и двигать в направлении одной цели. Например, если вы занимаетесь Web-разработкой, будет плюсом знать какой-то язык для бэкэнда и JavaScript для фронтэнда. Но если я буду учить С++ для бэкэнда, то знания JavaScript для фронтэнда мне ничего не даст, потому что я никогда не буду использовать их вместе.
Обычно, с одного языка пересесть на другой не так сложно из-за схожего синтаксиса и общих принципов. Например, с C # на Java. При этом вокруг каждого языка есть своя большая экосистема: библиотеки, фреймворки, либы. А вот на это уже нужно много времени, и быть достаточно высококвалифицированным специалистом в двух-трех разных областях в программировании очень сложно.
Рынок вакансий диктует условия
Если осваивать программирование с целью карьеры, а не в качестве хобби, ориентироваться надо на рынок вакансий. Идем на HeadHunter и видим такую картину
Зеленым выделены языки с положительной динамикой вакансий. За год Kotlin и Go впервые оказались в этом списке. Красным выделен Ruby — для него число вакансий сокращается, и возможно, скоро из топ-10 его вытеснит какой-нибудь другой перспективный язык.
Может показаться, что если выбрать что-нибудь экзотическое, у вас будет меньше конкурентов, а значит проще найти работу. Это не совсем так. Работодатели тоже идут на hh, смотрят кандидатов и решают, на чем запускать проекты, под которые реально собрать команду. Замкнутый круг. Поэтому мой совет с точки зрения развития карьеры: выбирайте популярный язык, при этом ориентируйтесь на спрос на рынке труда, а не по каким-то другим рейтингам.
Вместо того, чтобы обсуждать актуальность отдельно взятого инструмента — а именно этим являются языки программирования — я рассмотрю их в разрезе 4-х направлений разработки и составлю наборы навыков, необходимых для решения разных задач.
Web-разработка
Здесь больше всего вакансий, но и сильнее конкуренция среди специалистов, т.к. направление развивается уже много лет. Web-разработка состоит из Frontend — визуальная часть сайта, то, с чем взаимодействуют пользователи, и Backend — серверная часть сайта.
Начальный маршрут для фронтендера:
- HTML, CSS — языки верстки
- JavaScript — для интерактивных элементов
- ECMAScript / Typescript — расширения JavaScript, дающие больше возможностей
- Опыт работы с одним из фреймворков: React / Angular / Vue
Как правило, выбор фреймворка не столь принципиален: работодатель готов рассмотреть кандидата с опытом в любом из трех, т.к. довольно быстро можно пересесть на нужный специально под проект.
Для бэкендера есть несколько вариантов. Каждый пункт в списке — пара из языка и его фреймворков:
- PHP + Laravel / Yii 2 / Symphony
- Javascript + NodeJS (Express.JS, Nest.js, TypeScript, GraphQL, Apollo)
- Python + Django
- Java + Spring
- C# + ASP.NET Core
Каждый из наборов актуален для написания серверной части сайтов, поэтому можно выбрать на свое усмотрение. В любом случае понадобится овладеть еще и этими знаниями:
- HTML & CSS — понимание верстки сайтов
- SQL (PostgreSQL / MySql) — работа с базами данных
- Архитектуры и паттерны — как писать код, который легко поддерживать и масштабировать
В большинстве случаев это необходимый минимум, джентельменский набор для бэкенд-разработчика, работающего над сайтами. Далее, можно развиться как разработчик в 2 разных направлениях: начать осваивать технологии из списка фронтендера, т.е. стать Fullstack-разработчиком, или углубиться в бекенд и хайлоад. Выбрав второй путь, будет полезно освоить следующие технологии:
- NoSql (MongoDB, Reddis, Cassandra)
- Брокеры сообщений: RabbitMQ / Kafka
- Docker / Kubernates
- Highload, микросервисы
Мобильная разработка
Более молодое направление, в котором меньше вакансий, но пока наблюдается дефицит кадров. Языки программирования выбираются в зависимости от того, под какую платформу вы будете создавать приложения.
Android-разработчик:
- В большинстве проектов нужно знать и Java и Kotlin
- Новый код чаще пишется на Kotlin, однако очень много кода, который нужно поддерживать, написан на Java
Kotlin молодой, но очень перспективный язык, созданный питерской компанией Jetbrains в 2016 году. Он полностью совместим с Java, но примерно на 40% короче его, что значительно ускоряет разработку. Кроме того, в какой-то момент Google, устал от исков со стороны правообладателей Java за использование кода в Android и назвал Kotlin предпочтительным языком для Android-разработки. Сейчас все чаще приложения пишут на нем. Однако на текущий момент все еще очень много проектов, написанные на Java, которые нуждаются в поддержке и развитии. Поэтому Android-разработчику надо знать оба языка, чтобы уметь читать и вносить изменения в старый код.
iOS-разработчик:
- Достаточно знать Swift
- Старый код написан на Objective-C
Легкий и простой Swift пришел на смену и значительно потеснил первый iOS-язык Objective-C. Эти языки несовместимы, поэтому новые проекты начинают на Swift и его вполне достаточно для разработки на платформе. А Objective-C остается актуальным только для старых больших проектов, которые не решились переписывать на Swift.
Что касается востребованности, то Java и Kotlin универсальные языки, которые используют не только для мобильной разработки и под различные платформы. А вот Swift подходит исключительно для мобильной разработки под iOS и десктопной разработки под MacOS.
Еще один путь мобильного разработчика — освоить библиотеку ReactNative для JavaScript. Она устроена таким образом, что написанный код работает под все платформы. С одной стороны это очень удобно. Однако нередки случаи, когда появляется необходимость прописать нативный код для каждой платформы, а это значит нужно иметь наготове знания и Kotlin, и Swift.
Серверные приложения
Путь разработчика серверных приложений во многом похож на бэкендера, разрабатывающего сайты. Во-первых, надо выбрать и изучить один из языков. Сейчас в ТОП-е по количеству вакансий на российском рынке:
Во-вторых, как и бэкендеру, для большинства задач вам понадобятся навыки работы с базами данных и умение писать качественный код. Тут вам пригодятся:
- SQL (PostgreSQL / MySql)
- Архитектуры и паттерны
Дальше можно изучить:
- Алгоритмы и структуры данных
- NoSql (MongoDB, Reddis, Cassandra)
- Брокеры сообщений: RabbitMQ / Kafka
- Docker / Kubernates
- Highload, микросервисы
Из этого самый сложный пункт — выбор языка. Я подготовил сравнительную таблицу:
Java, Python и С # между собой очень похожи и довольно универсальны. Java используют для сайтов и мобильной разработки. Python отдают предпочтение стартапы (а также крупные проекты, выросшие из стартапов) из-за его простоты освоения и универсальности. C # популярен и для сайтов, и для написания игр на движке Unity 3D. Я советую выбирать тот, с которым вы уже хоть немного имели дело и на какую сферу больше ориентируетесь. При необходимости быстро пересесть на другой из этой тройки не составит труда.
C++, на мой взгляд, один из самых сложных в освоении язык, подходящий в основном для серверных, десктопных программ и игр, реже — для Data Science. Разработка на нем занимает значительно больше времени, но дает программисту огромные возможности. C++ используют для программ, требовательных к быстродействию, например, Photoshop, или масштабных игр, так как с его помощью можно контролировать и распределять нагрузку на «железо».
Golang (Go) появился как более простая версия С++. Его легко освоить, и он заточен под высокие нагрузки и многоядерные процессоры, но имеет очень ограниченный функционал, например, нет дженериков, исключений и т.д., которыми обладают другие языки программирования. В первую очередь его целесообразно использовать для консольных утилит и highload бэкенда. Вакансии разработчика на Go открывают преимущественно крупные корпорации, хотя в последнее время спрос на разработчиков Go начал появляться и в проектах поменьше.
Разработка игр
Выбор языка во многом определяет платформу, на которой вы сможете писать игры:
- C#, Unity 3D — кроссплатформенный, возможность быстро портировать игру с одной платформы на другую
- C++, Unreal Engine — PC, обычно используется для масштабных игр, требовательных к быстродействию «железа»
- Javascript — Web
- Java — Android
Если по выбору языка какие-то моменты не осветил, задавайте вопросы — отвечу.