Компьютеры и мобильные гаджеты, которыми мы пользуемся каждый день, ничего не стоят без качественного программного обеспечения. Чтобы они работали, кто-то должен писать новые драйверы, плагины, системные утилиты и массу других полезных программ. И занимаются этой сложной работой системные программисты.
Designed by freepik
Системный программист (System Software Developer) — это специалист, который занимается разработкой системного ПО и общевычислительных приложений. Системное ПО не решает каких-либо практических задач, оно обеспечивает функционирование других программ. Это оболочка и своего рода посредник между «железом» (аппаратной частью) и различными приложениями, которые пользуются мощностями этого «железа». Типичный пример такого ПО: Microsoft Windows, или ОС Android на вашем мобильном телефоне.
Разработчик операционных систем работает в коллективе и может решать различные задачи в зависимости от уровня компетентности:
Продумывает архитектуру ПО, пишет программную оболочку и разворачивает систему;
Занимается установкой ПО и следит за её исправностью;
Тестирует и проверяет компоненты системы на работоспособность и производительность;
Настраивает и модифицирует мейнфреймы (отказоустойчивые серверы);
Пишет и накатывает обновления ПО и различных системных утилит;
Проводит отладку системы, исправляет ошибки и критические баги.
В работе системный программист чаще всего использует стороннее программное ядро с открытой архитектурой, например, Linux. Однако бывает, что специализированную операционную систему нужно писать с нуля, что особенно актуально сейчас, когда взят курс на импортозамещение в IT.
Собственно говоря, программист-системщик не обязательно будет заниматься разработкой операционный систем. Он может, например, писать системное ПО для бытовых устройств и приборов, где есть электронное управление. Это несколько иное направление, именуемое embedded-разработкой, но требует примерно похожих навыков.
Ключевые языки, которые необходимо изучить системному программисту, это C/C++, а также язык ассемблера. Многое пишется также на JavaScript, а конкретнее на программной платформе Node.js. В последние годы всё более популярным становятся Rust, Go и Python.
Системный программист должен хорошо разбираться в Linux и подобных ему системах, а также в ядре Linux, поскольку именно на его основе сейчас разрабатывается большинство независимых ПО, включая и многие российские. Важный hard skill — это владение языком разметки XML.
Неплохо также системщику иметь навыки системного администрирования и разбираться в системах управления базами данных, такими как MySQL, PostgreSQL.
Прочие навыки системного программиста:
Аналитическое системное мышление;
Навыки тестирования и диагностики;
Code Review;
Управление задачами и планирование;
Английский язык на уровне Intermediate и навыки чтения технической литературы на иностранном языке;
Коммуникабельность и умение работать в команде.
Designed by freepik
Поскольку специалисту нужно крепко разбираться во множестве дисциплин, то предпочтительный способ обучения — это высшее техническое образование. Направления обучения по программе бакалавриата:
«Системное программирование и компьютерные технологии»;
«Системное и интернет-программирование»;
«Фундаментальная информатика и компьютерные технологии»;
«Прикладная информатика»;
«Программная инженерия».
В процессе студенты изучают множество прикладных дисциплин, таких как технологии разработки баз данных, программная архитектура, методы системного анализа и моделирования и многое другое, в том числе и умение пользоваться ассемблером и писать код на Linux.
Отметим, что системные программисты далеко не всегда разрабатывают операционные системы общего пользования. Их навыки нужны, например, при создании ПО для компьютерной безопасности, промышленности, средств логистики и доставки, медицины и т.д.
Поэтому вакансий для системного программиста в настоящее время предостаточно. Правда, не везде их обозначают именно этим термином. Нередко в вакансиях значатся: «Инженер-программист», «Разработчик ПО», «Специалист по внедрению ПО» и другие.
Что касается зарплаты системного программиста, то, как и повсюду в IT, она напрямую зависит от опыта и навыков соискателя:
Junior |
Middle |
Senior |
35—50 тысяч рублей |
до 100 тысяч рублей |
от 180 тысяч рублей и выше |
Плюсы:
Универсальность при наличии опыта и стажа;
Востребованность;
Высокая зарплата.
Минусы:
Мало работы по специальности (именно по разработке ПО);
Ответственность;
Трудность в освоении;
Высокие требования к навыкам;
Много рутинной и однообразной работы.