Разбираемся, в чем суть профессии разработчика ПО, чем он отличается от программиста и какие специальности сейчас самые востребованные.
Кто такой разработчик программного обеспечения
Разработчик — широкое определение IT-специалистов, которые с нуля создают программное обеспечение и функционал ПО для разных проектов: от компьютерных и мобильных игр до сложных систем для управления заводами.
Разработчики нужны не только в IT-компаниях, но и в медицине, строительстве, e-commerce, банках, на производстве и в рекламе. Девелопер может создать визуальный редактор контента для медиа, систему распознавания заболеваний для больницы, корпоративное приложение для завода или нефтедобывающего предприятия, мессенджер или операционную систему. Масштаб задач зависит от опыта разработчика и его желания расти.
Чем разработчик отличается от программиста
На первый взгляд кажется, что разработчик и программист — это разные названия для одной и той же профессии. Это не совсем так. Разработчик с любой специализацией умеет программировать, но не каждый программист способен полностью разработать программное обеспечение.
Программист может решить конкретную задачу, используя уже заданные и известные алгоритмы. Разработчики подходят к проекту комплексно. Они не только пишут код, но взаимодействуют с техническим заданием, тестируют решения и выстроенную программную архитектуру. Их задача — создать эффективное, безопасное и стабильное решение, которое хорошо впишется в инфраструктуру бизнеса.
Разберем на примере программы лояльности банковского приложения. Глобальная задача — создать внутри приложения новый функционал, который помогал бы клиентам копить баллы за покупки, а затем тратить их у компаний-партнеров банка. Разработчику нужно придумать, как будет работать новая фича, как будут взаимосвязаны действия клиентов и накопление баллов, подобрать подходящие алгоритмы, реализовать свои идеи в архитектуре приложения. Программисту в этом проекте дадут конкретные задачи: например, написать фронтенд и бэкенд для интерфейса, где клиент будет проверять количество баллов.
Hard skills разработчика
Прикладные навыки разработчика ПО зависят от специализации и направления работы. Вот несколько универсальных, которые точно нужны:
- знать как минимум один язык программирования — Python, C++, JavaScript, PHP или другой;
- уметь работать в разных ОС: Mac, Linux, Windows;
- писать «чистый» код, понятный команде и коллегам-разработчикам с первого взгляда;
- знать системы контроля версий (Git);
- работать с алгоритмами и базами данных;
- использовать фреймворки и библиотеки.
Soft skills для разработчика
Опытному разработчику недостаточно только технических навыков. Он работает в команде, передает задачи коллегам и отвечает за качество конечного кода. Поэтому важно также обладать базовыми soft skills:
- общение с клиентами и членами команды на понятном языке: русском или английском;
- тайм-менеджмент, чтобы не срывать дедлайны и организовать собственную работу;
- умение анализировать и внимание к деталям;
- критическое мышление, чтобы оценить задачу с разных сторон;
- желание развиваться как профессионал (IT-индустрия не стоит на месте);
- мультизадачность: иногда приходится одновременно созваниваться с командой, фиксить баги и дописывать новый код.
- оригинальный подход к решению задач.
Плюсы и минусы карьеры разработчика
Разработчик — востребованная профессия, но в ней нужно постоянно учиться и осваивать актуальные навыки. Девелоперам хорошо платят, но они вынуждены весь день проводить за компьютером. Собрали в одну таблицу плюсы и минусы карьеры разработчика.
Плюсы
- Свобода в выборе графика и режима работы. Закрывать задачки можно даже в ночное время, главное — соблюдать дедлайны и не терять в продуктивности. Многие разработчики предпочитают удаленный формат работы — специфика профессии позволяет избежать географической привязки.
- Возможность вести несколько проектов сразу. Разнообразие в задачах — то, что избавляет разработчика от рутины.
- Быстрый карьерный рост. Для целеустремленного разработчика не проблема вырасти из junior-специалиста в лида своей команды.
- Легкое трудоустройство в зарубежные компании, которые часто помогают с релокацией.
- Международный нетворкинг и открытое профессиональное сообщество, готовое помогать и направлять.
Минусы
- Необходимость непрерывно заниматься самообразованием. Повышать свою квалификацию нужно практически постоянно, чтобы оставаться востребованным на рынке специалистом и быть в курсе последних отраслевых тенденций.
- Постоянная работа с экранами — к своему зрению придется относиться в два раза внимательнее.
- Высокий уровень конкуренции среди junior-специалистов.
- Необходимость иметь опыт работы над проектами даже перед первым официальным трудоустройством.
Сколько зарабатывают разработчики
По данным Хабр Карьеры за второе полугодие 2022 года, медианная зарплата разработчиков в России — 161 000 рублей. Медианная зарплата в Москве и Санкт-Петербурге варьируется от 180 000 до 200 000 рублей, в то время как в регионах составляет около 140 000 рублей.
В первой половине 2022 года разработчики-стажеры зарабатывали, в среднем, 35 000 рублей, специалисты junior-уровня — 70 000 рублей, middle-уровня — 150 000 рублей, а senior — 240 000 рублей. Для каждого грейда уровень зарплаты растет от полугодия к полугодию со второй половины 2020 года.
Самые популярные специальности разработчиков
Frontend-разработчик
Это специалист, который создает пользовательскую часть сайта, приложения или системы. Фронтенд — это то, что видит и с чем взаимодействует клиент. Frontend-разработчик совмещает навыки инженерные и дизайнерские.
К базовым навыкам специалиста относят знание языка разметки HTML, каскадных таблиц CSS, владение JavaScript и способность работать хотя бы с одним современным фреймворком — React, Angular или Vue.js. В идеале — пользоваться сборщиком проектов, например, gulp.js, быть знакомым с платформой Git и обладать навыком работы с пакетным менеджером NPM для эффективного использования языка JavaScript. Начать путь во frontend-разработке можно с проектов на фрилансе или работы в студии веб-разработки.
Backend-разработчик
Пока frontend-разработчик старается логически расположить элементы на странице, работает над версткой и составляющими ее компонентами, backend-специалист настраивает связи сайта с серверами и базами данных. Backend-разработчик следит, чтобы ресурс не «упал» от перегрузки, организует безопасный процесс передачи данных, настраивает системы резервного копирования и восстановления.
От backend-разработчиков требуют владения как минимум одним востребованным языком программирования: Java, C#, Python или Go. Также пригодятся навыки работы с Linux, базами данных и понимание SQL.
Сейчас backend-разработчики особенно востребованы в проектах, связанных с работой нейросетей и искусственного интеллекта. Работа с серверной структурой и вычислительной логикой сайта, приложения или программного обеспечения требуется во всех сферах: от туризма до медицины.
Я делаю то, что никто не видит глазами, а именно — бэкенд, внутреннюю часть сервиса. API, над которым я сейчас работаю «под капотом», очень асинхронен. REST API-обработчик, принимающий запросы от браузера, шлет задачи в очередь RabbitMQ (брокер сообщений). Обработчики задач достают их из очереди по мере поступления и выполняют. Плюс к этому часть процессов запускается по расписанию. Сейчас пытаюсь отловить баг — статусы объектов неправильно сохраняются в базе данных MySQL. Доступ к одним и тем же объектам в базе данных получают одновременно несколько процессов сразу. И результирующий статус зависит от того, в какой последовательности эти процессы отработали. Это как тот кот, который и жив, и мертв. Непонятно, какое стечение обстоятельств приводит к проблеме, потому что влияет много асинхронных процессов.
Fullstack веб-разработчик
В его зоне ответственности — целый сайт или приложение, включая и внешний вид, и серверную часть. Fullstack веб-разработчик совмещает функции frontend- и backend-специалистов. Ему нужно одинаково хорошо владеть навыками и того, и другого.
Веб-разработчику нужно знать два языка программирования: для frontend-разработки — например, JavaScript; и для backend-разработки — Python или другой подходящий. Кроме этого пригодятся навыки работы с SQL и CSS, системным администрированием и контейнеризацией — в Docker или Git. Fullstack-разработчики часто взаимодействуют с технической документацией, поэтому важно знать английский и проявлять внимание к мелочам.
Проектировать архитектуру сайтов и приложений и заниматься системным администрированием можно в разных отраслях, тем более что fullstack — самая востребованная специальность среди разработчиков. Обычно сначала разработчик фокусируется либо на frontend-, либо на backend-направлении, а после расширяет пул навыков.
Разработчик видеоигр
Это человек, создающий из разрозненных элементов — 3D-моделей, саундтрека, графической анимации, игровых сценариев — полноценный финальный продукт. В крупных компаниях разработчики видеоигр могут отвечать за отдельный сегмент, например, программировать боевую механику или функции главного меню. В небольших студиях бывает так, что разработчик «собирает» игру от начала и до финальной сцены.
Разработчику видеоигр нужно уметь работать на одном из движков — Unity (язык C#) или Unreal Engine (язык C++). Чтобы настроить обмен данных игры с серверами, потребуется знание SQL и MySQL. Для создания игр пригодятся базовые знания о том, как устроен и из каких компонентов состоит компьютер, как работают сети. В интернете есть базы с готовыми ассетами — элементами кода игр, но хороший разработчик должен уметь писать такой код самостоятельно.
Карьера разработчика видеоигр начинается с исправления багов и работы над самыми простыми задачами. В это время полезно собирать собственные простые игры, чтобы иметь в портфолио pet-проекты. На следующем профессиональном уровне геймдевелопер программирует интерфейсы или однотипную механику для персонажей. Специалисты уровня senior способны полностью собирать игру из уже имеющихся элементов.
Мобильный разработчик
Это разработчик, который фокусируется на работе с ПО для мобильных устройств: помимо смартфонов это фитнес-трекеры, умные часы, планшеты, электронные книги и другие устройства. В профессии два основных направления: Android и iOS. Специалисты работают как с интерфейсом, так и с внутренней логикой системы приложений.
Чтобы работать с iOS, мобильному разработчику нужно знать языки Swift и Objective-C; с Android — Kotlin и Java. В зависимости от операционной системы меняется и среда разработки: XCode или Android Studio. Уметь работать с приложениями для создания прототипов графического интерфейса типа Figma — плюс в копилку прикладных навыков мобильного разработчика.
Мобильные приложения существуют практически во всех сегментах: в финтехе, ритейле, e-commerce, образовании, индустрии развлечений. Они обеспечивают близость и лояльность потребителя к бренду или компании, а значит, их разработка остается актуальной для обеих операционных систем.
Дата-инженер
Его часто путают с дата-сайентистом, но это разные профессии. Дата-инженер разрабатывает, тестирует и поддерживает системы баз данных. В числе его задач — выстроить пайплайны, алгоритмы и схемы работы с данными. Дата-сайентист вступает в игру позже, когда данные уже готовы к использованию и нужно систематизировать информацию и построить предсказательные или описательные модели с помощью машинного обучения.
В задачи дата-инженера входят: обеспечение пригодности системы данных для бизнеса, поиск новых возможностей для получения данных, создание наборов данных и формулировка рекомендаций по их хранению. Работа дата-инженера помогает компаниям лучше узнать своих пользователей, а дата-сайентистам — делать более точные прогнозы.
Большинство алгоритмов для обработки данных пишут на Python. В идеале также нужно знать Java и Scala. Пригодится умение взаимодействовать с экосистемами работы с Big Data, например, Hadoop или Kafka. Классические базы данных не получится категоризировать без знания SQL.
Я работаю в команде CVM (Customer Value Management), которая занимается лояльностью в «Пятерочке». Мы настраиваем коммуникацию с клиентом. Например, на чеках, которые вы получаете на кассе, есть информация о том, что вам дадут скидку, если вы придете в магазин на следующей неделе и купите товаров на определенную сумму. Иногда может прилететь SMS: «Сегодня скидка на сметану, приходи к нам».
Чеки — это сырые источники, из которых можно сформировать признаки, описывающие покупательский паттерн человека. Они описывают поведение человека в магазине: например, сколько он потратил в той или иной категории, когда последний раз был в магазине, сколько раз был в магазине за последнюю неделю. На основе этих признаков строятся модели, которые предсказывают поведение людей с картой лояльности. Чтобы модели работали не просто в исследовательских целях, нужно проскорить (оценить) миллионы людей, которые ходили к нам в течение года.
Я строю хранилище этих признаков: занимаюсь процессами предобработки и очистки данных, обновляю и пересчитываю их, чтобы пользователи инструмента или данных — аналитики или дата-сайентисты — могли работать с ними без проблем. В дальнейшем накопленные признаки пригодятся для новых моделей и бизнес-идей, а ребятам не придется работать с сырыми данными.
DevOps-разработчик
Этот специалист работает на стыке системного администрирования и разработки. Он подбирает инструменты для команды и создает среду разработки, которая была бы удобна для разработчиков и стабильна. На его ответственности — чтобы программисты быстро выкатывали новые решения, а внутренние данные компании были надежно защищены как от атак, так и от несчастных случаев (например, отключение электричества в офисе).
DevOps-инженеру не обойтись без знаний Linux, навыков разработки на одном или нескольких языках. Важно уметь работать с API и Git, владеть английским языком и набором soft skills: способностью выстраивать коммуникацию, эффективно планировать время и распределять задачи, умением урегулировать конфликт.
До того как начинать работу в DevOps-разработке, обычно осваивают одну или несколько других специальностей. Часто в DevOps приходят из тестирования, системного администрирования или fullstack-разработки. DevOps-инженеры нужны компаниям, разрабатывающим программное обеспечение для себя или на заказ.