Как выбрать направление в программировании: сравнение специализаций и тест

Как выбрать направление в программировании: сравнение специализаций и тест Про IT

Выбрать направление в программировании — значит сопоставить три вещи: какой результат работы вам интересно видеть (интерфейс, данные, сервер, игра, железо), какая «сырая» работа внутри него вам не надоедает и какой первый проект вы готовы довести до конца. Ниже — таблица девяти специализаций, восемь вопросов-критериев, мини-тест на Python, который сводит ответы в топ-3, и способ проверить выбор пробным проектом за одну-две недели, а не угадывать.

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

Направление, язык, грейд: три разных выбора

Новички часто смешивают три оси и из-за этого застревают. Разведем их до сравнения.

Понятие Что это Пример Когда выбирать
Направление (специализация) Тип продукта и задач, за которые вы отвечаете frontend, data science, DevOps Первым
Язык и стек Инструмент, которым решаются задачи направления Python, Kotlin, C#, SQL Вторым, под направление
Грейд Уровень самостоятельности: intern, junior, middle, senior junior backend-разработчик Не выбирается, растет с опытом

Порядок «сначала язык, потом решу» работает хуже: один язык ведет в разные направления (Python — в backend, данные и автотесты), а одному направлению нужно несколько инструментов.

Сравнение специализаций: таблица

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

Направление Что создаете Основной стек (2026) Что должно нравиться Порог входа Первый артефакт
Frontend Интерфейс сайтов и веб-приложений HTML, CSS, JavaScript/TypeScript, React или Vue Видеть результат сразу, доводить детали Средний Адаптивная страница с формой и запросом к API
Backend Серверную логику, API, работу с базой Python, Java, Go, C#, PHP или Node.js; SQL Логика, данные, надежность без визуала Средний REST API с базой и тестами
Мобильная разработка Приложения для Android и iOS Kotlin (Android), Swift (iOS), Flutter/Dart Интерфейсы плюс ограничения устройства Средний; для iOS нужен Mac с Xcode, для Android хватает эмулятора в Android Studio Приложение-список с сохранением данных
Gamedev Игровую логику, механику, инструменты C# и Unity 6 или C++ и Unreal Engine 5 Игры, векторная математика, оптимизация Выше среднего Маленькая законченная игра на один уровень
Data science и аналитика Модели и выводы из данных Python, SQL, pandas, scikit-learn Числа, статистика, проверка гипотез Выше среднего из-за математики Разбор открытого датасета с выводами
QA automation Автотесты и проверку качества Python или Java, pytest, Playwright Искать, где сломается, граничные случаи Ниже среднего для ручного QA, средний для автоматизации Набор автотестов на учебный сайт
DevOps и SRE Сборку, выкладку, инфраструктуру Linux, Git, Docker, CI/CD, Kubernetes, Bash/Python Системы, сети, автоматизация рутины Высокий, обычно после опыта в разработке или админстве Пайплайн: тесты и сборка контейнера по коммиту
1С Учет, склад, отчеты предприятия Встроенный язык 1С, запросы 1С Бизнес-процессы, общение с заказчиком Средний Доработка отчета в учебной конфигурации
Embedded Программы для микроконтроллеров и устройств C, C++, иногда Rust; схемотехника Железо, память, работа «близко к металлу» Высокий Устройство на плате: датчик -> обработка -> вывод

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

Тест-критерии: 8 вопросов для самопроверки

Отвечайте про то, что нравилось делать на практике (учеба, работа, хобби), а не про то, что звучит престижно.

Вопрос «Да» указывает на
Хочу сразу видеть результат на экране Frontend, мобильная разработка, отчасти gamedev
Нравится продумывать логику, API и хранение данных Backend, отчасти 1С
Люблю числа, статистику и поиск закономерностей Data science и аналитика
Интересно, как устроены серверы, сети и автоматизация DevOps, отчасти embedded
Нравится искать ошибки и граничные случаи QA automation, отчасти backend
Хочу делать игры, готов к векторной математике Gamedev
Интересно железо: датчики, микроконтроллеры, память Embedded
Хочу автоматизировать учет, склад, отчеты компании 1С, отчасти аналитика

Мини-тест на Python: ответы -> топ-3 направлений

Скрипт ниже сводит ответы 0/1/2 (нет / отчасти / да) в долю от максимально возможного балла по каждому направлению и печатает три верхних. Проверено на Python 3.14.7; нужен Python 3.10 или новее из-за zip(..., strict=True).

# Мини-тест: какие направления программирования проверить первыми
QUESTIONS = [
    ("Хочу сразу видеть результат на экране", {"frontend": 2, "mobile": 2, "gamedev": 1}),
    ("Нравится продумывать логику, API и хранение данных", {"backend": 2, "1c": 1}),
    ("Люблю числа, статистику и поиск закономерностей", {"data": 2}),
    ("Интересно, как устроены серверы, сети и автоматизация", {"devops": 2, "embedded": 1}),
    ("Нравится искать ошибки и граничные случаи", {"qa": 2, "backend": 1}),
    ("Хочу делать игры, готов к векторной математике", {"gamedev": 2}),
    ("Интересно железо: датчики, микроконтроллеры, память", {"embedded": 2}),
    ("Хочу автоматизировать учет, склад, отчеты компании", {"1c": 2, "data": 1}),
]

# Ответы: 0 - нет, 1 - отчасти, 2 - да (замените на свои)
ANSWERS = [2, 1, 2, 0, 1, 0, 0, 1]


def rank(answers):
    got, maximum = {}, {}
    for (_, weights), answer in zip(QUESTIONS, answers, strict=True):
        if type(answer) is not int or answer not in (0, 1, 2):
            raise ValueError(f"ответ {answer!r}: допустимы только 0, 1, 2")
        for direction, weight in weights.items():
            got[direction] = got.get(direction, 0) + weight * answer
            maximum[direction] = maximum.get(direction, 0) + weight * 2
    # доля от максимума: направление из 3 вопросов не обгоняет
    # направление из 1 вопроса только за счет числа вопросов
    share = {d: got[d] / maximum[d] for d in got}
    return sorted(share.items(), key=lambda item: item[1], reverse=True)


for direction, value in rank(ANSWERS)[:3]:
    print(f"{direction:<9}{value:.0%}")

С ответами из примера в консоли появится:

frontend 100%
mobile   100%
data     83%

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

Типовая ошибка — складывать баллы без нормировки. Если заменить строку с share на share = got, а в print формат {value:.0%} на {value}, скрипт выведет сырые суммы:

data     5
frontend 4
mobile   4

Data science оказался первым не потому, что мотив сильнее, а потому, что он встречается в двух вопросах и может набрать до 6 баллов, а frontend — только до 4. Исправление — делить на максимум, как в основном коде.

Вторая защита — strict=True: если забыть один ответ, скрипт не посчитает молча по неполным данным, а упадет с ValueError: zip() argument 2 is shorter than argument 1. Третья — проверка type(answer) is not int: без нее ответы True и 1.0 молча прошли бы условие answer not in (0, 1, 2), потому что в Python True == 1 и 1.0 == 1.

Проверка практикой: пробный проект на 1-2 недели

Возьмите два верхних направления из теста и сделайте по одной короткой задаче. Критерий «мое» — не «получилось без ошибок», а «хотелось вернуться и доделать».

Направление Пробная задача Признак, что направление ваше
Frontend Сверстать страницу-визитку и вывести на ней данные из открытого API Цепляют отступы, анимации, поведение на телефоне
Backend Написать API «список задач» на Python с сохранением в SQLite Интересно, что будет при двух одновременных запросах
Мобильная Приложение-счетчик в Android Studio на Kotlin Нравится думать про экран, жесты и жизненный цикл
Data science Взять открытый датасет и ответить на один вопрос графиком Хочется проверить, не случайна ли закономерность
QA automation Написать 5 автотестов pytest на свою же функцию Радует найденный крайний случай, который все ломает
DevOps Упаковать чужой учебный проект в Docker и запускать тесты по коммиту Удовольствие от того, что рутина исчезла

Дорожная карта после выбора

  1. Выучить базу основного языка направления: типы, условия, циклы, функции, коллекции, работа с файлами и ошибками.
  2. Освоить Git: коммиты, ветки, публикация репозитория.
  3. Сделать первый артефакт из таблицы и довести до состояния «можно показать»: README, инструкция запуска, тесты там, где они уместны.
  4. Сделать второй проект сложнее: с базой данных, внешним API или развертыванием.
  5. Прочитать 20-30 вакансий junior в своем регионе, выписать повторяющиеся требования и закрыть пробелы.

Честный срок назвать нельзя: он зависит от базы, часов в неделю и направления. Прогресс считайте артефактами, а не пройденными уроками.

Если не получилось

Симптом Вероятная причина Что сделать
Тест выдает все направления поровну Ответы «про престиж», а не про опыт Ответить заново, вспоминая конкретные случаи, где было интересно
Нравится все, начать не можете Выбор без ограничения по времени Взять первое место теста и зафиксировать 4 недели на пробу
Застряли в бесконечных туториалах Нет своего проекта Начать артефакт из таблицы, туториалы — только под конкретную задачу
Пробный проект вызвал только скуку Направление не ваше, и это полезный результат Перейти ко второму месту теста

Еще одна частая ловушка — совет «сначала выучить C++, потом разберетесь». Для embedded и части gamedev C++ действительно основа, но frontend, данные, QA и 1С без него обходятся, и такой старт только оттягивает первый артефакт.

Выводы

  • Направление выбирают первым, язык — под направление, грейд растет с опытом и не выбирается.
  • Таблица специализаций сужает выбор по типу результата и «сырой» работе, а не по престижу.
  • Тест из 8 вопросов дает топ-3, но близкие направления (frontend и mobile) разводит только практика.
  • При подсчете баллов нужна нормировка: иначе выигрывает направление, упомянутое в большем числе вопросов.
  • Проверка выбора — пробный проект на 1-2 недели и критерий «хотелось вернуться и доделать».

Где применяется / связь с практикой

Освойте тему на практике

Python — один из немногих языков, который открывает сразу несколько направлений из таблицы: backend, анализ данных, автоматизацию тестов и скрипты в DevOps. Поэтому он удобен как первый язык, пока выбор еще не окончательный. Граница тоже есть: для frontend основной язык — JavaScript/TypeScript, для iOS — Swift. Структурно освоить базу и сделать первые проекты можно на курсе «Python-разработчик. Базовый уровень», а посмотреть, как выглядит работа в разных направлениях, — на открытых уроках Otus.

FAQ

Можно ли сменить направление через год-два?
Да, и база переносится: Git, алгоритмы, SQL, тестирование и умение читать документацию нужны почти везде. Проще всего переходы между соседними направлениями, например backend -> DevOps или QA automation -> backend.

Стоит ли сразу целиться в fullstack?
Обычно нет: fullstack — это backend и frontend на уровне самостоятельной работы, а для старта надежнее одна сторона, к которой потом добавляется вторая.

Нужна ли математика, чтобы стать программистом?
Зависит от направления: для data science, gamedev и embedded — заметно больше школьной программы, для frontend, QA и 1С обычно хватает логики и школьной базы.

OTUS Журнал
Распродажа ноябрьских курсов (поп-ап)
Бесплатные открытые уроки (поп-ап)