Язык программирования следует выбирать, отталкиваясь от конкретных задач, которые вы планируете решать. Вместе с программным директором SkillFactory Евгением Картавцом и ментором, автором научных статей и курсов SkillFactory Дмитрием Крыловым рассказываем, какие языки используют специалисты в IT.
Data Scientist
Что делает
Специалист в области Data Science (науки о данных) строит на основе данных модели, которые помогают людям принимать решения в разных сферах. В бизнесе с их помощью можно оптимизировать маршрут транспорта, настроить ленту предпочтений пользователю в онлайн-кинотеатре, прогнозировать спрос на товар. С данными работают как в крупных компаниях и стартапах (например предсказывают и строят модели поведения клиентов), так и в научных организациях (например определяют растения по форме, цвету и текстуре листа).
Специалисты этой сферы работают со статистикой, прогнозированием, применяют различные методы машинного обучения. Data Scientist проверяет гипотезы, экспериментирует с алгоритмами машинного обучения, нейросетями, ищет в неструктурированных данных закономерности, чтобы предсказывать результаты, которые выведут бизнес на новый уровень или увеличат прибыль. Его деятельность направлена на будущее: в банковском деле он может оценить платежеспособность клиента; маркетологам построит модель следующего визита, чтобы покупатель скорее вернулся в магазин; в сфере развлечений проанализирует предпочтения клиента в кино или музыке.
Какие языки использует
Python — один из самых популярных языков в data science. У него простой синтаксис — это позволяет быстро освоиться в языке и не заниматься долгим изучением классов и структур, а сразу перейти к тренировке моделей.
У Python большое количество библиотек и фреймворков: для анализа данных дата-сайентисты работают с Pandas, с помощью библиотеки NumPy можно решать сложные системы уравнений (она автоматизирует вычисления с помощью множества математических функций), для машинного обучения пригодится Scikit-learn. В Matplotlib (библиотека для визуализации данных) проанализированные данные можно оформить в наглядные графики.
R — преимущество этого языка программирования в удобной визуализации данных. В R акценты сделаны на статистике, поэтому синтаксис там немного сложнее, чем у Python. В нем огромное количество библиотек, в том числе по машинному обучению (Caret, MLR, randomForest), мощные библиотеки по визуализации (Ggplot2, Esquisse, ggvis), по работе со строками (stringr) и манипуляции с данными (Dplyr, data.table).
Matlab — с его помощью можно достать данные из облачных хранилищ, предварительно их обработать, оформить результаты анализа в графиках с помощью среды Live Editor. Matlab сокращает время на обработку разных типов данных: от изображений до текста. При этом модели машинного обучения можно развертывать и на C или С++.
С/С++ — если Python обеспечивает простоту манипуляций с кодом, то они дают скорость. Операции имеют меньшее время отклика, что применяется, например, в поисковых системах или при разработке компьютерных игр. Также эти языки используют для того, чтобы писать на них библиотеки и фреймворки для работы с данными (например TensorFlow или Shark для машинного обучения).
Data Engineer
Что делает
Помогает дата-сайентисту и аналитику с первичной обработкой данных. Он собирает и структурирует информацию, проектирует хранилища для обработанных наборов данных. Он должен владеть инструментами автоматизации, чтобы налаживать последовательную работу скриптов, разбираться в инфраструктуре и архитектуре генерации данных.
Какие языки использует
На SQL дата-инженер «общается» с базами данных: извлекает данные из реляционных баз (таблицы со структурированными наборами данных), например MySQL, Oracle, PostgreSQL. Нужно разбираться в командах. Например, понимать, как собирать docker container, какие параметры прописывать, следить за метриками нагруженности.
Для большинства вакансий требуется знание одного из трех языков программирования: Scala, Python или Java. На них оптимально автоматизировать процессы, шедуллить скрипты (вызывать команды по расписанию). На Java написаны основные инструменты для обработки больших данных: Apache Hadoop, Kafka, Cassandra.
Scala — один из эффективных в промышленных масштабах языков программирования для дата-инженеров. Он быстрее Python, что выгодно выделяет его при работе с обширными базами данных. Также дата-инженеры часто пользуются фреймворком Apache Spark, который позволяет работать с реляционными базами данных (доставать данные с разных компьютеров).
Data Analyst
Что делает
Дата-аналитик собирает, обрабатывает, анализирует, визуализирует данные. Аналитик помогает бизнесу сделать правильные выводы на основе данных. Например, выявить, после чего большинство пользователей приложения принимает решение о переходе на расширенный платный тариф. Или наоборот: после чего пользователи перестают использовать сервис.
Какие языки использует
Дата-аналитик работает с данными, применяет статистические методы, чтобы потом делать обоснованные выводы, поэтому у Python и R в профессии остается преимущество. Сценарии на этих языках можно запускать в Tableau (через TabPy) и Power BI, там выводы и метрики можно вывести в понятные дашборды. Помимо Excel-таблиц аналитик может работать с данными из баз данных. Для этого ему понадобится знание языка SQL.
Маркетолог-аналитик
Что делает
Анализирует рынок и конкурентов, оптимизирует рекламные кампании и бюджеты, отслеживает источники трафика и разрабатывает стратегии, предусматривая возможные кризисные ситуации. Он хорошо разбирается в продукте, построении воронок продаж, умеет делать прогнозы на основе данных.
Какие языки использует
Python — механика задач маркетолога-аналитика и других профессий в data-сфере схожа: нужно достать и проанализировать данные, выдвинуть гипотезы, проверить и визуализировать их. Маркетологи проводят A/B-тестирование (когда контрольная группа сравнивается с тестовой), для которых им нужны те же Pandas для работы со сгруппированными данными, NumPy для работы с функциями и матрицами, Matplotlib и Seaborn для визуализации.
В R много инструментов, предназначенных как раз для веб-аналитики. Написание кода в R можно облегчить с помощью среды RStudio; разрабатывать аналитические веб-приложения в Shiny, выгружать данные из Яндекс.Метрики или Google Ads с помощью клиентов rym и RAdwords.
Много задач в этой сфере можно решить, не обладая навыками программирования. Однако если вы выучите Python и научитесь его применять для анализа данных, то получите конкурентное преимущество и сможете решать более широкий спектр задач.
Продуктовый аналитик
Что делает
Собирает и анализирует данные о взаимодействии пользователей с продуктом. Так же, как и маркетолог-аналитик, он должен правильно интерпретировать данные, принести менеджеру продукта какие-то инсайты. Он разбирается в KPI и продуктовых метриках, помогает команде принимать наиболее выгодные для бизнеса решения (чтобы выделить продукт среди конкурентов или удержать аудиторию).
Какие языки использует
Помимо классических задач по построению моделей, A/B-тестированию, визуализации конкретных бизнес-решений в дашбордах, с помощью R или Python продуктовый аналитик может проводить когортный анализ — оценивать метрики пользователей за определенный отрезок времени, разделив их на независимые группы — когорты.
Кроме того, автоматизация нужна, например, для RFM-анализа большой базы клиентов. Это еще один метод сегментации, при котором клиентов делят по критериям: давности совершения покупки (Recency), частоте (Frequency) и деньгам (Monetary). Вручную этот процесс может занимать много времени, поэтому автоматизация позволяет его усовершенствовать и избежать ошибок.
Системный аналитик
Что делает
Переводит требования заказчика на язык разработчиков. Он собирает требования к продукту, а потом разрабатывает техническое задание. Системный аналитик находится между двумя разными сферами: бизнесом и программированием, — поэтому должен проанализировать, как эффективно внедрить требования, чтобы и угодить компании, и минимизировать издержки программиста.
Какие языки использует
Системный аналитик далек от разработки кода. Он умеет его читать, знает, IT-инфраструктуру и занимается проектированием документации. Ему достаточно знать основы SQL, чтобы управляться с анализом данных и проверять реализацию требований.
Системный администратор
Что делает
Системный администратор занимается организацией и обслуживанием сетей, установкой и конфигурированием ПО для работы ОС, хранением и резервированием данных. Есть несколько разновидностей сисадминов: те, кто занимается поддержкой работоспособности компьютеров корпоративной сети, и те, кто администрирует серверы, — такие специалисты выполняют более сложные задачи и обладают более высокой квалификацией. В их задачи входит, например, составление и выполнение аварийных планов, поиск причины отказа сервера, исправление ошибок, разворачивание бэкапов и восстановление системы.
Какие языки использует
Системному администратору Linux стоит знать Bash (предустановленная командная оболочка), в Windows он должен уметь использовать команды ОС, также будет полезен PowerShell (средство автоматизации из оболочки с интерфейсом командной строки и языка сценариев). Скрипты системный администратор может писать на Python.
Тестировщик и QA-инженер
Что делает
Тестировщик смотрит, как продукт выполняет свои функции, как ведет себя в нестандартных ситуациях. Новичку нужно понимать основную разницу между ручным тестированием (когда продукт проверяют вручную) и автоматизированным (когда программы автоматически тестируют ПО без помощи человека). Традиционно тестировщик начинает карьеру с ручного тестирования, параллельно учит язык программирования и переходит в автотестеры.
QA-инженер обычно выступает менеджером продукта. Он разрабатывает стандарты, подбирает инструменты, чтобы количество ошибок на всех этапах было минимальным, следит за качеством процессов.
Какие языки использует
Языки применяет только специалист-автоматизатор, ручному тестировщику программировать не нужно. Автотесты на Python разрабатывают с помощью фреймворка PyTest, тестировать веб-приложения можно c Selenium, а в браузерах уже есть встроенные инструменты для тестирования (например Chrome DevTools в Google Chrome).
Java — другой популярный язык для создания автотестов. Тот же Selenium совместим с обоими языками, а значит, его можно комбинировать с одним из самых популярных фреймворков JUnit. Инструмент Jenkins используется для непрерывной сборки и тестирования проектов, что облегчает интеграцию изменений.
Вместо Java тестировщик может использовать Kotlin. Его синтаксис компактнее, чем у Java, благодаря этому проще читать код и писать API-тесты (искать ошибки в связях разных систем).
Frontend-разработчик
Что делает
Занимается веб-разработкой: создает визуальную часть сайта, делает его удобным для клиента. От дизайнера он получает описание работы интерфейса и его внешнего вида. После этого он верстает страницу, реализует то, как пользователь будет взаимодействовать с ней, то есть делает сайт приятным и удобным, программирует работу интерфейса. Frontend-разработчик тесно взаимодействует с backend-разработчиком. Поэтому иногда он превращается в fullstack-разработчика.
Какие языки использует
HTML — на этом языке пишут разметку страницы, то есть структуру, разделы, абзацы, расположение элементов на сайте. HTML состоит из тегов, которые как раз и управляют представленными на экране данными.
CSS — отвечает за стили и расположение элементов в браузере. С помощью него можно добавить стили, цвета, органично встроить отступ.
JavaScript — делает сайт интерактивным. Благодаря этому можно добавлять динамические элементы (слайдеры, всплывающие окна), поддерживать взаимодействие с ними: они будут реагировать на действия пользователя (клики, движение) и меняться. Например, именно с помощью JavaScript по мере прокручивания подгружается лента в соцсетях. Для сложных проектов принято использовать уже готовые фреймворки и библиотеки (React, Angular или Vue); кроме того, сейчас JavaScript часто используется и на backend.
Backend-разработчик
Что делает
Занимается серверной частью продуктов, которая скрыта от пользователей. Это нужно не только для сайтов, но и для мобильных приложений, многопользовательских онлайн-игр. В банках, например, с его помощью анализируют платежи с терминалов, проектируют системы хранения.
Какие языки использует
PHP — предназначен для backend сайтов. Код на PHP передает информацию из базы данных на frontend: например, он отображает на странице интернет-магазина товары, их названия и стоимость. С фреймворками вроде Symfony или Laravel можно сократить рутинную работу, не нужно тратить время на повторное программирование типовых модулей.
Go — с его помощью можно реализовать backend, с которым будет взаимодействовать продукт. Чаще всего его используют для разработки микросервисов и высоконагруженных проектов, где много пользователей одновременно работают с сайтом или приложением.
C# — популярен среди разработчиков, потому что он обладает мощью C++, но более прост в использовании и потому что в нем защищены от ошибок команды, которые обычно ставят в тупик пользователей C++.
Fullstack-разработчик
Что делает
Он совмещает в себе функции frontend- и backend-разработки, поэтому может создать, к примеру, веб-приложение целиком, начиная с верстки и заканчивая бизнес-логикой на сервере. Fullstack строит архитектуру и ядро сайта, разрабатывает функционал, пишет код, делает из дизайнерского макета рабочую страницу, тестирует работу сайта и обновляет базы данных и разделы.
Читайте также: Гид по профессии fullstack-разработчик
Какие языки использует
Для backend-разработки сайта есть много вариантов. Например, язык Python в сочетании с фреймворком Django или PHP и один из фреймворков: Laravel, YII или Symfony. На C# можно пользоваться фреймворком ASP.Net, а на Java — Spring.
Разработчик игр
Что делает
Создает игры для любых платформ: PC, мобильных устройств, приставок или VR. Он объединяет все сюжетные и дизайнерские задумки, доводит их до ума, загружает игру в сторы. Он может делать как многопользовательские 3D-игры, так и простые 2D-платформеры.
Какие языки использует
C# — один из самых популярных языков для разработки игр, так как на нем написана скриптовая часть одного из самых известных движков — Unity. Разработчику нужно разбираться в ООП, циклах, функциях и массивах, владеть Unity, чтобы писать код под любые платформы. Unity особенно популярен в России и заточен под мобильные устройства и кроссплатформенность.
C++ — можно разрабатывать не только игры, но и движки к ним (например, на С++ написаны Unreal Engine, Cryengine, основная часть Unity). На нем чаще создают игры, которые требуют высокой производительности, например со сложной графикой. Также он поддерживает низкоуровневые возможности, которые позволяют оптимизировать продукт под конкретные платформы (те же PlayStation или Xbox).
Мобильный разработчик
Что делает
Создает приложения для смартфонов, планшетов, часов, любых мобильных устройств. Он контролирует все этапы разработки: архитектуру, проверку, запуск в продакшн, выпуск обновлений, реализует интерфейс по заданному дизайну. Сейчас у мобильных разработчиков два пути развития: если есть Mac, то удобнее заниматься приложениями для iOS, если нет — Android.
Читайте также: гид по профессии iOS-разработчик
Какие языки использует
Kotlin и Java — благодаря поддержке Google Kotlin стал официальным языком разработки приложений на Android. При этом работать на обоих языках можно в одном проекте: они совместимы, а Kotlin — это доработанная версия Java.
Swift — на Swift создают продукты для Apple: приложения для iOS, Mac, Apple Watch, Apple TV, они функциональны и удобны для пользователя.
Приложения пишут в интегрированной среде разработки Apple XCode, там собраны все необходимые инструменты для комфортной работы: можно и создавать интерфейс, и редактировать код, и проводить UI-тесты.
DevOps-инженер
Что делает
DevOps — это набор практик, инструментов и способов решения инженерных задач в команде, направленных на постоянное улучшение и автоматизацию процессов. DevOps-инженер работает на стыке между разработчиком, тестировщиком и администратором. В его задачи входит обеспечение переноса разработанного кода в продакшн и мониторинг работоспособности системы.
Какие языки использует
Python — один из наиболее распространенных языков для DevOps: он универсален и применяется на разных операционных системах. Но можно писать скрипты и на том языке, который лучше всего удалось изучить или который используют в компании.
Инструменты управления контейнеризацией (Docker, Kubernetes), непрерывной интеграции (Jenkins, GitLab), развертывания сред по шаблону (Puppet, Ansible, Terraform) — классический стек DevOps.
«Белый» хакер
Что делает
Работает на стороне программ, сервисов, компаний, ищет незащищенные от хакерских атак места и рассказывает об этом владельцам, чтобы те, в свою очередь, доработали слабые части. Он занимается пентестами — тестами на проникновение, которые помогают найти уязвимости в безопасности на сайтах, в операционных или корпоративных системах, поэтому «белого» хакера еще называют пентестером.
Читайте также:
- Кто такой «белый» хакер?
- История Егора Зайцев: «За день до трудоустройства я провел кибератаку на работодателя»
Какие языки использует
«Белый» хакер работает на уровне готовых программ и ОС, поэтому ему важны знания принципов и алгоритмов работы, а также способов управления ими и их взлома.
Подойдет любой язык для скриптов, например Python, — в том числе потому, что хакеру нужно работать с базами данных. Язык применяется в стандартных автоматизациях, на нем можно написать простые компоненты ПО вроде кейлогера, который записывает любые манипуляции с клавиатурой, или брутфорсера, который угадывает пароль путем подбора различных комбинаций символов.