Системный программист

Системный программист (System Programmer) разрабатывает, тестирует и поддерживает операционные, сетевые или мобильные системы, создает интерфейсы распределенных баз данных. Профессия подходит людям с математическим складом ума и системным мышлением. Кстати, в 2021 году центр профориентации ПрофГид разработал точный тест на профориентацию. Он сам расскажет вам, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте.

Особенности профессии
Любой компьютер – будь он ПК или мозг робота – это комплекс аппаратов и программ, взаимодействующих друг с другом благодаря единой программной системе. Ее создает системный программист. Он почти не занимается прикладными программами, облегчающими жизнь пользователю (это задача программиста-прикладника). Системщик выстраивает многоуровневую структуру, которая объединяет отдельные компоненты (работу процессора, сетевого оборудования, оперативную память, выполнение прикладных программ и пр.) в модули, а модули – в единый организм компьютера или компьютерную сеть.
Например, текстовые редакторы, позволяющие нам набирать тексты на компьютере, разрабатывают прикладники. А программа дефрагментации жесткого диска – это уже задача программиста-системщика, т. к. подобная программа обеспечивает взаимодействие программ и так называемого железа.
Это не значит, что системный программист не может разработать прикладную программу. Но он мыслит комплексно. Системное программирование (программирование систем) – это, по существу, инженерная деятельность, хотя она и не связана с материальным миром в такой степени, как это бывает в традиционном инженерном деле.
Кроме разработки программных модулей и их интеграции, программист-системщик занимается адаптацией и модификацией программных продуктов под конкретную систему, исходя из ее логики и задач. Он же может заниматься разработкой баз данных и их администрированием.
Обязанности системного программиста
Конкретные обязанности системных программистов различаются в зависимости от места работы, точного характера должности и используемой системы. Тем не менее есть несколько основных задач, решение которых возлагается на программистов-системщиков.
- Разработка и установка операционных систем.
Каждая операционная система (ОС) начинается с программиста – он ее проектирует, разрабатывает и развертывает. Системные программисты несут ответственность за разработку и установку операционных систем и их программного обеспечения, за установку модификаций и улучшений существующих ОС. Установки различаются по объему и могут включать что угодно – от развертывания всей операционной системы до простого обновления программы.
- Обслуживание системы.
Чтобы система продолжала работать на оптимальном уровне, ее компоненты необходимо тщательно тестировать и обслуживать. Системные программисты регулярно оценивают производительность аппаратного и программного обеспечения, чтобы отслеживать его функциональность и обеспечивать бесперебойную работу без ошибок.
- Настройка аппаратного и программного обеспечения.
Программы, работающие в системе, часто требуют специальных модификаций мейнфрейма и ОС для обеспечения производительности. Работа системного программиста заключается в настройке как аппаратного, так и программного обеспечения в соответствии с этими требованиями без ущерба для производительности других программ или системы в целом.
- Обновление системы.
Периодически аппаратное и программное обеспечение существующих систем, в том числе промежуточное ПО и прикладные программы, работающие в системе, требуют обновлений. Системный программист выполняет эти обновления, обеспечивая их правильное развертывание и правильное функционирование.
- Устранение ошибок и отладка.
Ни одна система не работает идеально все время, и когда возникает ошибка, системный программист должен определить проблему и устранить ее. Он должен найти источник проблемы, проанализировать всю необходимую информацию, а затем разработать и внедрить решение для своевременного устранения ошибки.
Профессия: программист. Не всё однозначно
Мы писали о фронтендерах и бэкендерах, о мобильной разработке и о тестировании, но это были частные случаи. Когда человек подходит к первой или очередной профессии, он редко говорит, что станет разработчиком под iOS или проктологом, как правило это звучит «программистом» и «врачом». Специализация приходит позже, с опытом. Но чтобы твёрдо заявить, что ты хочешь стать программистом, врачом, архитектором, геологом и т.д., нужно избавиться от романтизации профессии и подойти к ней здраво и осмысленно. Даже если вы вдруг решили стать программистом, чтобы «войти в айти после 35-ти». Если говорить о программистах с позиций романтики, то это люди, которые превращают наши замыслы в код и делают жизнь лучше, проще, удобнее. Если говорить прямо, то работа программиста — напряжённый, зачастую рутинный труд с множеством плюсов и минусов. Об этом и поговорим.

Художник — Надежда Коткина, позировал — cyber_roach
Кто это?
За термином «программист» могут скрываться узкопрофильные программисты, разработчики программного обеспечения, инженеры, системные аналитики и т.д. Тем не менее, всех программистов объединяет одно — умение облечь человеческие требования в машинный код, чтобы сделать труд или развлечение автоматизированным, удобным, простым. Программист создаёт инструкции для компьютера, в результате выполнения этих инструкций получается какой-то целевой результат.
Вам стоит задуматься, не будущий ли программист вы, если…
… ваша мотивация исходит изнутри, вам нравится процесс управления компьютером, вы хотите не просто использовать программу (игру, приложение), но и знать, как она работает, модифицировать её.
… вы не ожидаете бешеных доходов и не думаете о том, что программирование — новый рок-н-ролл, первично именно желание творить магию: превращать идеи в код.
… вы знаете, как сделать лучше любую программу, любой сайт, любое мобильное приложение. Вы точно знаете, что можно хотеть от программы и мечтаете научиться делать совершенный код.
Где нужен?
Сегодня программисты нужны везде и я не думаю, что этот тренд изменится в ближайшие 10-15 лет. Программисты нужны в промышленности, науке, космосе, бизнесе, медицине, транспорте и даже не в ИТ-компаниях (шутки шутками, а вы знаете, как трудно найти отличного программиста 1С или разработчика для интернет-магазина на 1С-Битрикс?!). В общем, даже в институте церкви и благотворительности есть спрос на программистов. И это здорово, потому что вы можете не просто выбрать профессию программиста, но и соотнести её со своим увлечением: химией, биологией, механикой, связью и даже историей и лингвистикой. Более того, если вы будете сочетать в себе навыки разработки ПО и основы профильной деятельности, ваша цена на рынке здорово вырастет, а конкуренция изменится.
Поэтому вам нужно понять не столько, где работать, сколько что именно из разработки вам ближе.
- Мобильная разработка — создание приложений для мобильных устройств (смартфоны, планшеты, носимая электроника, научное оборудование, датчики IoT и т.д.). Отличается непрерывным развитием и постоянным интенсивным самообучением.
- Веб-разработка (фронтенд и бэкенд или фуллстек) — создание всевозможных веб-приложений для любых целей и задач, разработка сайтов, интернет-магазинов и проч. Весь мир сейчас в WEB, поэтому вы можете найти абсолютно любую задачу.
- Системное программирование — разработка низкоуровневого ПО, взаимодействие с железом. Требует исключительной логики, инженерного склада мышления, внимания и досконального подхода к мелочам.
- Научная работа — широкая сфера для развития, когда на первый план выходит базовая специальность, на второй — программирование (телемедицина, медицинская кибернетика, аналитические системы для химиков и биологов и т.д.). Крайне перспективное направление с большим заделом возможности работы в лучших международных компаниях и командах.
- Анализ данных, статистика и математика — для тех, кто любит покопаться в больших данных и найти большие идеи. Для тех, кто усидчив, умеет видеть взаимосвязи и закономерности. В общем, если вы пытались построить свой прогноз по COVID-19, вам сюда 🙂
- Нейронные сети и компьютерное зрение (распознавание образов и элементов) — растущее направление, которое требует исключительного понимания математики. Нейронные сети скоро будут едва ли не на каждом утюге, спрос на специалистов будет только расти.
- DevOps/DevSecOps — для тех, кому скучно в рутинном программировании и кто тяготеет к системному администрированию и управлению разработкой. На данный момент на рынке труда ситуация «девопсов много, ни одного не найти», потому что к настоящему DevOps путь не так прост, как его видят любители Докера.
- Прикладная разработка и бизнес ПО — отдельный мир разработки, где можно писать десктоп на Delphi и зарабатывать миллионы, знать COBOL и быть самым сманиваемым специалистом на рынке, прошариться в Java и быть на главных ролях в коммьюнити и т.д. Это рисковый путь развития, в основном, для опытных разработчиков, но если вам случилось влюбиться в С/С++/Java или какой-то из «латыней от программирования» — почему нет?
Важно понимать ещё одно разделение.
- Программисты в ИТ-компании решают сложные технические задачи, связанные с адаптацией к разным платформам, работой под нагрузкой, рефакторингом и оптимизацией, удобством UI/UX и т.д. Это сложные профессиональные задачи, без решения которых невозможен ни один релиз на продакшене (кому я вру?:-))
- Программисты в не-ИТ-компании решают все задачи сразу, но основные сводятся к автоматизации процессов и работы с чужим прикладным ПО: работа с корпоративным порталом, доработка CRM, ERP, биллинга, формирование отчётов по запросу, настройка и поддержка сайта, интернет-магазина, 1С и т.д. И, кстати, иногда программист-многостаночник из неайтишной компании может развить больше скиллов за счёт того, что он работает в комплексе, с системами целиком.
Базовые требования к профессионалу
Само по себе написание кода — это не самая сложная задача, гораздо сложнее понять требования, интерпретировать их и перевести в понятный машине язык. Работать с заказчиком кода (здесь мы имеем в виду и клиента, и коллег, и работодателей и т.д.) это всегда нервы и приключения, потому что они сами не знают, что хотят, мыслят упрощённо и считают технологии всемогущими. Но если вы претендуете на то, чтобы быть профессиональным программистом, вам необходимо не только хмуро бить по клавишам, но и активно работать с людьми, с техническими заданиями, требованиями и т.д. Это отличает программиста от простого кодера.
- Критическое мышление — умение выделять главное в требованиях, подходить к своему и чужому коду с точки зрения постоянной оптимизации и улучшения; навыки поиска лучших путей решения задач.
- Ориентированность на работу с деталями — в программировании не бывает мелочей. Даже если вы не написали ни строчки кода, вы наверняка слышали шутки про то, как отступ или потерянная точка с запятой отнимают часы в поисках бага и причин ошибок при компиляции. Невнимательный программист — нонсенс.


Необходимость знания иностранных языков
Можно ли обойтись в разработке без знания иностранного (в частности английского) языка? Можно. Достаточно выучить синтаксис и слова языка программирования, мыслить и общаться вы можете исключительно на русском языке. Незнание языка не будет помехой в карьерном росте, развитии, коммуникациях в очень многих компаниях.
Однако — что даёт знание иностранного языка?
- Возможность удалённой работы в международных командах и зарубежных проектах. Кроме престижа и интересных задач, это ещё и заработная плата в долларах или евро (при нашем курсе неплохая история).
- Возможность работы в международных заказных проектах.
- Доступность всех материалов по разработке, записей лекций, конференций, курсов и т.д. Фактически у вас исчезают ограничения в самообразовании, все ключевые материалы мира программирования становятся доступны.
- Возможность эмиграции при наличии такого желания.
- Возможность стажировок в крупнейших ИТ-компаниях.
- Дополнительный фактор карьерного роста.
Где учиться
В современных российских вузах есть масса программистских специальностей, есть бакалавриат и магистратура, есть форматы дополнительного образования. Если вы ещё только выбираете свой вуз, то, конечно, стоит идти на специальный факультет, либо на физику, математику и другие технические специальности.
Если программирование вам нужно как вспомогательный инструмент для основной специальности, то либо поищите смежный вариант (типа медицинской кибернетики и информатики), либо обучайтесь параллельно главной специализации.
Если у вас уже есть образование, то для вас есть самообразование, различные курсы, онлайн-школы, корпоративные университеты и т.д. Вы можете изучать программирование с помощью этих средств обучения либо полностью самостоятельно или даже с ментором. О дополнительном образовании можно почитать здесь.

Обращаю ваше особое внимание: высшее образование по-прежнему важно, поскольку оно имеет значение для работодателя, нужно при переезде в другую страну, а также даёт базу, основу, которая позволит быстро развиваться в любом новом направлении.
Более того, не столько важно, какой язык программирования вы освоите, сколько важно, что вы знаете о математике, алгоритмах, вычислениях, сетевом и серверном администрировании, принципах организации сетей, стеках и проч. А эту основу как раз неплохо дают в вузах.
Лучшие книги и средства обучения
Для каждой специальности есть свой набор книг и ресурсов для обучения, но есть вещи, которые стоит прочитать всем.
- «Искусство программирования», Дональд Кнут
- «Жемчужины программирования», Джон Бентли
- «Путь программиста», Джон Сонмез
- «Чистый код. Создание, анализ и рефакторинг», Роберт К. Мартин
- «Алгоритмы. Построение и анализ», Томас Х. Кормен
- «Сам себе программист. Как научиться программировать и устроиться в Ebay?», Кори Альтхофф
- «Карьера программиста», Г. Лакман Макдауэлл
- «Идеальный программист. Как стать профессионалом разработки ПО», Роберт Мартин
- «Рефакторинг. Улучшение существующего кода», Мартин Фаулер и другие
- «Совершенный код», Стив Макконнелл
- «Кодеры за работой. Размышления о ремесле программиста», Питер Сейбел
- «Мифический человеко-месяц», Фредерик Брукс
- «Программист-прагматик. Путь от подмастерья к мастеру», Дейв Томас, Энди Хант
Из любимых ресурсов:
-
— универсальная интерактивная платформа для обучения языкам программирования. Лычки, ачивки, геймификация — сплошная мотивация. — англоязычный ресурс для обучения программированию. — огромный сборник тестовых задач для тренировки навыков по любому языку программирования. — без комментариев, просто лучшая лекционная «солянка». — море курсов от Массачусетского технологического института.
Ещё одна огромная и свежая подборка полезного онлайна для программистов.
Совет: даже если вам иногда лень заниматься, слушайте лекции хотя бы фоном, так вы погрузитесь в терминологию, обратите внимание на какие-то незаметные при напряжённом изучении моменты.

Мифы профессии
Про программистов ходит очень много мифов и слухов: про характер, грубость, неумение строить личную жизнь и т.д. Но это частные случаи, которые можно найти в профессии. Например, я был одно время близок к сфере медицины и могу сказать, что там тоже немало замужних за работой и женатых на работе, немало суровых интровертов и грубых, но профессиональных ребят (скорее, задолбанных). Да и вообще сложно представить «анклав» счастья в какой-то определённой сфере.

А если программист ещё и геймер… Всегда можно найти пару 😉
Поэтому я разберу четыре самых популярных мифа.
- Программисты гребут деньги лопатой. Нет. С одной стороны, заработные платы в ИТ-сфере действительно выше других отраслей и, как показала эта чумачечая весна, ИТ ещё и более защищена, приспособлена к активной удалённой работе. Однако чтобы пройти путь до зарплаты выше рынка, нужно получить более низкую зарплату, а иногда так даже пройти бесплатную стажировку — не ради денег, а ради знаний, навыков и связей. На высоких позициях заработные платы действительно могут достигать 500 тыс. рублей в месяц, и к этому нужно стремиться. Но если вы на первом своём собеседовании на должность программиста пренебрежительно закидываете ногу за ногу и просите «сотню на руки» в столице или «сороковник» в регионах, вы проиграли. Лучше устроиться, показать результат и попросить повышение: эффективным программистам редко отказывают.
- Программисты часто болеют. Увы, отчасти это правда. Сидячая работа, руки на мышке и клавиатуре, ненормированные режимы сна и питания зачастую играют злую шутку и вместе с опытом и карьерным ростом приходят лишний вес, одышка, сахарный диабет, гипертония, заболевания ЖКТ, заболевания опорно-двигательной системы, туннельный синдром и даже психические расстройства. Но это случается только с теми, кто полностью погружается в работу и забывает о себе. Регулярный спорт, правильное и регулярное питание, перерывы (не перекуры и не перекусы!), грамотно организованное рабочее место, подобранные добавки и витамины, активное общение с коллегами, сообществом, друзьями и семьёй, чтение — полезные привычки, которые сохранят ваше здоровье и, что немаловажно, обеспечат отличное функционирование мозга.
- Программист имеет низкий потолок в карьере. Нет, любой программист имеет возможности горизонтального и вертикального роста. Программист может расти как внутри программирования, так и в управлении разработкой до тимлида, CTO, CIO и т.д. При наличии хорошей идеи талантливый программист и хороший управленец может открыть своё дело и расширить горизонт навыков на максимальную величину.
- Программистов заменят роботы. Буду краток. А кто роботов будет программировать? 😉
Главный совет
Если вы учитесь быть программистом, однажды вам обязательно захочется бросить это всё, потому что путь покажется слишком длинным. Вы устанете от однообразных тренировочных задач, каждая неудачная компиляция будет вызывать тупое, болезненное отчаяние, вам будут сниться указатели, рекурсии и принципы ООП (ну или неудачные вызовы функций). Вся эта возня покажется безумного далёкой не только от вашего первого самостоятельного проекта, но и от первого корпоративного мержа…
Желание бросить — первый признак того, что вы идёте верным путём, что вы действительно напрягаетесь, а не мастрячите какой-то код методом копипаста из Google (даже не с GitHub!). Только когда вы настолько натренируетесь на простых задачах, что они вам станут противно скучными, вы сможете уверенно перейти на новый этап с отличной базой знаний.
Совет простой: не бросайте. Отвлекитесь, переспите с этими мыслями, забросьте обучение на неделю и вернитесь. Вы сами не заметите, как в голове что-то «щёлкнет» и всё встанет на свои места и вот он, первый мерж, первое код ревью, первый коммит в open source, первое выступление на митапе, свой пет-проект, первые задачи на должности миддла. Не останавливайтесь — всё будет!
Системный программист: характеристика, навыки и обязанности

Появлению профессии системного программиста (ИТ-администратора, сисадмина) мир обязан Чарльзу Бэббиджу и Аде Лавлейс – создателям аналитической машины. Именем Ады назван язык программирования. В середине XX века Конрад Цузе собрал первый компьютер и написал подходящие для него программы. Давайте разберемся, какими навыками должен обладать современный системный программист, а также каковы его непосредственные обязанности и профессиональные стандарты.
![]()
Особенности профессии
Системный программист занимается разработкой разных компонентов компьютерной системы. Он выстраивает многоуровневую структуру, объединяющую отдельные элементы – работу процессора, сетевого оборудования, оперативную память в единое целое. Это по факту инженерная деятельность, но с творческим уклоном. Разработка прикладных программ не входит в компетенцию системного программиста, он создает основу для их бесперебойной работы.
Неоспоримыми плюсами этой профессии являются:
- высокая востребованность на рынке труда;
- широкие возможности;
- возможность получить знания по прикладной информатике.
Минусов практически нет, за исключением того, что это сидячая и рутинная работа. Раз профессия ценится работодателями, значит, приносит хороший доход. Это подтверждается данными о зарплате на ноябрь 2019 года. По России оклад составляет от 50 000 до 190 000 рублей в месяц, а в Москве стоимость услуг хорошего специалиста варьируется от 45 000 до 200 000 рублей.
![]()
Навыки и знания
Обязательно нужно знать и уметь применять принципы построения разных типов системного ПО, адаптировать готовые программы к определенной системе. Нужно быстро работать с Open Source программным обеспечением. Будут полезны знания по физике, математике, английскому языку, также Ассемблер и С++.
Кроме того понадобятся такие знания.
- Теории алгоритмов и способов написания формальных языков.
- Азы машинной графики, особенности архитектурного построения современных компьютеров, отражающие управление работой.
- Умение писать языки запросов и манипулирования данными.
- Способы описания языков программирования, синтаксис, семантика.
- Принципы работы операционных систем.
- Закон об авторских и смежных правах.
- Законы, нормативно-правовые акты в сфере обращения, производства и применения информационных технологий.
- Трудовое право.
- Правила охраны труда и техника безопасности.
Желающим обучиться этой специальности желательно обладать способностью логически мыслить, делать выводы, усидчивостью, высокой концентрацией внимания и способностью организовывать работу.
![]()
Обязанности
Программист сталкивается с рядом общих задач.
- Разработка новых программ.
- Тестирование созданной программы.
- Если во время первого запуска обнаружились недочеты, специалист проводит работу над ошибками.
- Презентация выполненной работы директору.
- Внедрение ПО в деятельность организации.
- Корректировка исходных данных.
- Создание инструкции пользователя.
- Оформление всех необходимых документов – патент на собственность и авторские права.
- Наблюдение за нормальной работой программы, устранение сбоев.
- Создание электронного варианта баз.
- Обеспечение безопасности информации – установка антивирусов, паролей.
- Помощь сотрудникам, решение возникающих вопросов.
- Оптимизация работы внутренней и глобальной сети.
- Ограничение возможностей входа персонала фирмы на развлекательные сайты в рабочее время.
![]()
Руководство системного программиста относится к эксплуатационно-технической документации, в которой описаны:
- сведения для проверки;
- обеспечение функционирования и конфигурирования программы.
Полный перечень работ изложен в «Руководстве системного программиста», разработанном и оформленном по ГОСТу 19.503-79 и сопутствующими ГОСТ 19. 101-77 («Виды программных документов») и ГОСТ 19. 105-78 («Общие требования к программным документам»).