Вакансия: программист под ОС Linux::Журнал СА 5.2015
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

Разбор полетов  

Ошибок опыт трудный

Как часто мы легко повторяем, что не надо бояться совершать ошибки, мол,

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6143
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6856
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4139
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 2978
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3781
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3789
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6283
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3134
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3433
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7246
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10616
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12336
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13968
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9099
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7052
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5361
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4593
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3400
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3127
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3378
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 2999
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Вакансия: программист под ОС Linux

Архив номеров / 2015 / Выпуск №5 (150) / Вакансия: программист под ОС Linux

Рубрика: Карьера/Образование /  Рынок труда

Вакансия: программист под ОС Linux

Операционная система Linux становится все популярнее среди компаний, которые занимаются разработкой ПО в России. Но вот подготовка таких специалистов для рынка информационных технологий пока оставляет желать лучшего. Чтобы выяснить, какие знания и навыки программистов под ОС Linux востребованы, мы обратились к представителям компаний.

  1. Какими знаниями и навыками должен обладать программист под ОС Linux?
  2. Каков инструментарий программиста под ОС Linux?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Станислав Фомин, директор по технологиям компании «НТЦ ИТ РОСА»

1. Сразу отмечу, что понятие «Linux-разработчик» очень расплывчато. С одной стороны, как нередко считается, Linux – это в первую очередь ядро – крупный, ключевой, но далеко не единственный компонент в любом Linux-дистрибутиве, и формально Linux-разработчик – это kernel developer. Но обычно под Linux-разработчиком все-таки подразумевается прикладной программист, разрабатывающий хоть что-то, программу ли с графическим интерфейсом или прикладной сервис для работы под каким-либо Linux-дистрибутивом или библиотеку, обеспечивающую работу этих решений. Часто туда попадает и классическая веб-разработка, если она некоторым образом связана с системной частью, например, написание веб-интерфейсов конфигурирования.

В любом случае, даже разработка прикладных решений требует «классической профессиональной грамотности» настоящего программиста, и от него требуется

бегло владеть современными системами управления версиями, скорее распределенными, такими как Git и Mercurial. Ибо классические централизованные системы, такие как Subversion и TFS, которые еще часто применяются в корпоративной разработке информационных систем, уже практически вымерли в Linux-мире. Кроме того, Linux-разработка характерна максимальным использованием Open Source-библиотек и фреймворков, которые в подавляющем большинстве живут в Git-репозиториях.

При разработке многих Linux-систем используются языки программирования C и C++, так что нужно, кроме этих языков, знать классический стек компилирования и сборки – опции компилятора и линковщика, различные средства сборки: make, autotools/cmake/scons и т.п.

Представлять базовый процесс разработки хотя бы на уровне Code&Fix и основные средства коммуникации и документирования – трекер задач и ошибок, вики-системы – таких систем полно, но принципы работы у них схожие.

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

Наверное, стоит упомянуть и об обычной грамотности продвинутого пользователя (запуск приложений, манипуляции файлами, браузер-почта-чаты, текстовые процессоры и таблицы), и все это не c «общеизвестным Windows-интерфейсом», а на каком-либо графическом рабочем столе для Linux. А вот дальше возможны варианты, перечислим их в порядке повышения «условного уровня» программирования, причем чем выше уровень, тем меньше «хардкорности», проще разрабатывать и отлаживать, требуется меньше специфических знаний.

Если речь идет о программировании ядра, то тут нужно хорошо знать низкоуровневое программирование на С, а желательно и на ассемблере для соответствующих архитектур процессора. Важно уметь разбираться во множестве интерфейсов ядра: системных структурах данных, протоколах общения с зоопарком устройств, механизмах управления памятью ипроцессами, работе с прерываниями и т.д. Нужно уметь работать и со средствами низкоуровнего параллелизма: блокировками, отложенным выполнением задач, «атомарными операциями» и многими другими. Большая часть изобретений, облегчающих жизнь программисту, – IDE со встроенной отладкой тут, увы, не поможет. Практически любая ошибка приводит ккритическому падению, причем причины в ряде ситуаций (вероятностные «гейзенбаги», гонки в параллельных процессах, глюки устройств) найти весьма непросто – в основном приходится полагаться на post-mortem анализ отладочных логов. Могут помочь и специальные сборки с инструментами дополнительных проверок в реальном времени, таких как Lockdep, KAsan, Kmemleak и др.

Очень близко к «kernel»-разработке находится программирование встроенных Linux-систем – как правило, это тоже экономия каждого байта, С/C++-программирование, возможно с ассемблерной оптимизацией, тонкости работы с ненадежными устройствами. Хотя с ростом мощности программируемых устройств уровень программирования часто повышается, встречается и Java-программирование, и даже программирование на медленных скриптовых языках, таких как Python.

Выше лежит уровень эффективных прикладных сервисов и системных библиотек – это, как правило, С/C++-программирование с общением через файловую систему, разделяемую память и сетевые сокеты, – тут и системы управления базами данных, и высокоэффективные очереди, т.е. системы, либо обеспечивающие платформу для более высокоуровневых информационных систем, либо сами являющиеся высокоэффективной прикладной системой (скоростные биржевые торги и т.п.). Тут уже есть вполне эффективные С/C++ IDE, помогающие эффективной разработке, – например, Qt Creator или Eclipse-CDT, и полезно «прокачивать костный мозг», изучая все их возможности – клавиaтурные сочетания, intellisense… чтобы повысить личную и командную эффективность. Но и тут могут потребоваться низкоуровневые знания – понимание устройства файловых систем и работы сетевого стека протоколов.

Еще выше начинается прикладная разработка приложений с графическим интерфейсом, специфичным для линукс-систем. В Linux-мире есть два основных конкурирующих фреймворка для написания максимально нативных десктопных приложений с GUI – это GTK и Qt. Соответственно в этом случае программисту нужно знать развесистые иерархии классов виджетов этих фреймворков, тонкости дизайна. В любом случае, даже прикладные приложения могут содержать хитрую системную часть, требующую низкоуровневой работы с устройствами или файловой системой.

Еще легче разработка с использованием мультиплатформенных Java- или Python-стеков, даже если приложение специально заточено под конкретный Linux-дистрибутив. Опять-таки, несмотря на кажущуюся легкость Python-программирования, на самом деле основная сложность может быть связана с выполняемой системной задачей. Так, например, инсталляторы к Linux-дистрибутивам пишут на Python или Perl, но нельзя просто взять и пустить туда простого питон-программиста – там сложность будет в многоуровневом процессе загрузки (UEFI/Secureboot/…), задачах разбиения диска со всеми тысячами возможных опций (LVM-контейнеры – шифрование и т.п.).

Где-то тут я бы расположил задачи классического системного администрирования – написание небольших скриптов на bash, Perl или Python, конфигурационных файлов, что требует совсем небольших познаний в программировании, но часто глубокого понимания взаимодействия различных компонентов операционной системы. Да, из-за этого часто удивляются, что «системный Windows-программист пишет драйверы устройств на ассемблере, а системный Linux-программист пишет shell-скрипты».

Ну и современный тренд для приложений, требующих простого интерфейса, – использовать веб-интерфейс, что приводит к классическим навыкам обычной веб-разработки (HTML/CSS/JavaScript/Java/Python/Ruby/Perl/Node.js/…), безграничный мир которой выходит за рамки этого краткого опроса.

2. В нашей компании общие инструменты программистов – это:

  • система управления версиями GIT;
  • наша собственная система сборки и совместной работы ABF (Automatic Build Farm, abf.io);
  • доработанная MediaWiki из проекта MediaWiki4Intranet для документирования и базы знаний;
  • Bugzilla как трекер багов;
  • Redmine для внутренней системы задач;
  • Etherpad/Ethercalc/Etherdraw – сервис онлайн-блокнотов, таблиц и рисунков, для коллаборативных постановок при удаленных совещаниях.

Дальше, как я уже объяснял, все зависит от «уровня» и технологического стека.

Для команды разработчиков ядра достаточно классического GNU-стека сборки, GIT и простейшего редактора. Но, чтобы добиться беспроблемной работы ядра на всем зоопарке аппаратных конфигураций, нужно серьезное тестирование, на оборудовании и без. Наши «ядерщики» разрабатывают и используют специализированный фреймворк KEDR и другие инструменты для тестирования компонентов ядра. Также используются и инструменты, входящие в состав ядра: Lockdep, Kmemleak, средства на основе Kprobes и пр. И, разумеется, тестирование и исследование поведения «реального железа» – десятков ноутбуков с различной внутренней начинкой, стендов для тестирования различных плат – Wi-Fi, видео… (главный ядерщик даже унес один такой стенд себе домой), и тестирование, включая нагрузочные тесты Phoronix и ряд наших автоматических тестов, идут круглосуточно.

Есть программисты-«мейнтейнеры», обеспечивающие сборку десятков тысяч пакетов на нашей ABF. По минимуму им хватает веб-интерфейса ABF, где можно мониторить сборку и вносить изменения в спецификации компиляции и код, пользуясь только браузером. Конечно, для большей эффективности у нас есть специальный command-line клиент к ABF. Но, если возникает проблема, приходится прибегать к классической отладке с использованием соответствующих IDE или просто ориентируясь на логи.

Команда разработки новых продуктов. Для десктопных приложений сейчас в основном используется Qt-фреймворк, соответственно используется Qt Creator для С++-приложений, а для Python-Qt-приложений IDE все выбирают по вкусу – например, что-то на основе Eclipse+pydev (Aptana) или Komodo IDE. Впрочем, при доработках GNOME Shell приходится вместо продвинутого Qt-стека мучиться с GTK, а расширения под GNOME Shell вовсе пишутся на JavaScript.

Для серверных приложений с веб-интерфейсом требуется и знание соответствующих веб-технологий (в случае ROSA Directory Server – PHP, в случае ABF – Ruby on Rails), и собственно системного уровня (например, тонкости конфигурирования LDAP, DNS, DHCP и т.п.).

3, 4. Только совсем странные люди указывают при рекрутинге какие-то страшные и непроверяемые цифры стажа или загадочные уровни «middle/senior». Все зависит от вакансии и кандидата – можно взять и недоучившигося студента: на удивление, неленивый студент из нестыдного технического вуза скорее всего уже самостоятельно обучился базовым инструментам. Кстати, у нас есть программа летней стажировки студентов ВШЭ, и этот опыт позитивен.

К тому же Linux-разработка, будь то программирование ядра или программирование «рабочих столов», оконных менеджеров, настроек системных сервисов, практически не оставляет шансов найти специалиста со стажем, ведь в России, да даже и в мире, этим занимаются не так много людей. В любом случае, придется много изучать, но ведь это и интересно!

5. Наша специфика – разработка полноценных Linux-дистрибутивов – подразумевает, что приходится брать ответственность за необъятное – и за надежную работу системы с огромным зоопарком железа, и за работоспособность десятков тысяч собранных нами Open Source-приложений и библиотек. Так что в случае низкоуровнего программирования приходится буквально «расследовать» очень подлые ошибки взаимодействия с оборудованием, и мы в компании держим несколько десятков ноутбуков, специальный стенд для тестирования различного оборудования – несколько десятков видеокарт, сотни Wi-Fi-карт, коллекции подключаемых гаджетов. Соответственно тут придется растить свою компетенцию в hardware.

Есть задачи по поддержке десятков тысяч пакетов – собранных из открытого кода приложений и библиотек. Тут требуются и глубокие знания межпакетных зависимостей и процессов сборки, а также умение разбираться в чужом многошерстном коде, чтобы быстро внести правку, необходимую хотя бы для корректной сборки и запуска. Но иногда требуется иглубокая доработка, с добавлением в приложение или библиотеку нового функционала. По сути, это работа с чудовищно огромной чужой кодовой базой, исправление чужих ошибок, внесение нужных функций со слабыми возможностями глобального изменения общей архитектуры. Приходится чинить устаревший legacy-код, а это то, что обычно разработчики нелюбят, – классические продуктовые и заказные команды, которые работают только над своим кодом обозримых размеров, почти всегда могут «взять и все переписать».

Еще особенность, хотя уже не очень удивительная на нашем рынке, – это распределенность команды. У нас есть «обычный» центральный офис и распределенная команда разработчиков. Удаленная работа имеет и множество плюсов, но также требует дисциплины и самостоятельности, навыков использования средств коммуникации и некоторой психологической устойчивости.

Андрей Вагин, Linux-разработчик в Parallels

1. Мой любимый вопрос на собеседовании – назвать наиболее сложные задачи, которые приходилось решать. Причем для меня не важно, относятся они к Linux или нет. Тут можно даже не быть в курсе деталей. Этот вопрос просто дает возможность кандидату раскрыться.

Таким же образом проверяем базовые знания. Если человек говорит, что программировал в ядре Linux, то он просто обязан знать, чем отличается мьютекс от спинлока. А если он там писал не только драйверы, то наверняка и о RCU должен был что-то слышать.

Остальные требования к знаниям и навыкам можно посмотреть в нашей текущей вакансии Linux Developer – глубокое знание хотя бы одной подсистемы ядра и С, Assembler, умение пользоваться make, patch, rpmbuild, понимание архитектуры x86 и взаимодействия процессов, опыт системного программирования. Знание TCP/IP и сетевой архитектуры Linux, файловых систем, безопасности в Linux, некоторых языков программирования (bash, Python, Perl). Наконец, будет необходим технический английский (письменный).

2. Основным инструментом программиста под ОC Linux был и остается текстовый редактор. Большая часть разработчиков Parallels пользуется одним из двух редакторов – Vim или Emacs. Используем также системы контроля версий (GIT, CVS, SVN), а также трекеры Bugzilla и Jira.

3. Требований жестких нет, хотя в описании вакансий присутствует «высшее образование». Скорее образование может перекрыть отсутствие опыта. Кстати, основная часть людей в нашей команде серверной виртуализации (которая как раз и занимается Linux-разработками) из МФТИ. Они пришли в компанию еще студентами и выросли здесь как профессионалы.

К слову, у компании Parallels есть базовая кафедра при МФТИ, где студенты могут выбрать себе тему и работать над ней в свободное время за стипендию. Это своего рода кузница кадров. Проделанная на кафедре работа может лечь в основу диплома или кандидатской диссертации.

4. Опять-таки жестких требований нет. Наличие патчей в открытых продуктах будет большим плюсом. Когда человек приходит с резюме, в котором написано, что у него есть опыт программирования в ядре Linux N лет, а патчей в мейнстриме нет, то это выглядит очень странно.

5. Кандидат должен показать (и доказать), что он достоин должности, на которую претендует. Дело в том, что сейчас на рынке спрос на Linux-программистов превышает предложение, это можно точно сказать. Но компания Parallels – пожалуй, одно из самых привлекательных мест в России для таких разработчиков. Здесь много интересных задач в различных подсистемах и высокий средний уровень команды. Мы действительно часть сообщества (в том числе компания несколько раз попадала в Топ-20 ведущих контрибуторов ядра – то есть тех, кто внес наибольший вклад в его развитие). Кроме того, сама компания понимает важность работы над основной открытой веткой ядра Linux.

Кирилл Коротаев, вице-президент Acronis по разработке

1. Хороший программист под Linux должен уметь писать код на языке С и/или С++ и свободно пользоваться стандартным C library API и syscalls.

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

2. Это вполне обычный набор инструментов: GCC, Makefiles, Git/SVN, GDB, Valgrind. Сюда же входят разнообразные утилиты для измерения перформанса и отладки – Perf, strace, ltrace, iostat, blktrace.

3. В идеале мы, конечно, возьмем кого-нибудь из MIT! Если серьезно, в России много хороших технических вузов, но самое важное – это не корочка, а то, что человек умеет. Вы можете быть самоучкой, главное, чтобы вы владели своим предметом. На собеседовании мы задаем достаточно вопросов и задачек кандидату, чтобы это понять.

4. Все сильно зависит от проекта и человека. Обычно это два-три года. Мы с удовольствием примем опытных специалистов, однако у нас есть стажировки для студентов, у которых, как правило, опыта нет совсем. Если человек быстро соображает и действительно хочет работать в конкретном направлении, это зачастую важнее, чем длинный послужной список.

5. Поскольку облачные технологии – одно из флагманских направлений в работе Acronis, большим плюсом для кандидата будет понимание принципов работы распределенных систем, особенно систем хранения данных. Хорошего специалиста со знанием Linux или Windows kernel мы оторвем с руками и ногами.

Сергей Козлов, заместитель начальника отдела разработки компании NetUP

1. Уверенное знание языка, на котором в компании ведется разработка. Знание классических алгоритмов и структур данных. Представление о механизмах межпроцессного и сетевого взаимодействия, принятых в POSIX-системах. Знание основных утилит командной строки и оболочки UNIX. Умение совершать базовую настройку системы (конфигурация сети, сервисы). Опыт использования систем контроля версий (Subversion, Git). Технический английский.

2. Компиллятор: gcc/g++/clang. Отладка и профилирование: GDB, Valgrind, gprof. СУБД MySQL, PostgreSQL.

3. Диплом не должен иметь решающего значения при подборе кадров, однако наличие профильного высшего образования даст соискателю преимущество. Основным критерием являются фактические навыки и опыт претендента.

4. Программист-стажер может быть принят в компанию без опыта. Как показывает практика, для уверенной работы в компании на должности программиста соискатель должен иметь опыт работы на должности со схожей спецификой не менее двух лет.

5. При рассмотрении резюме плюсами являются опыт работы с рядом специфичных библиотек (OpenSSL, ffmpeg), опыт разработки многопоточных приложений, знание сетевых протоколов, применяемых в сфере IPTV.

Метлицкий Юрий Викторович, директор центра разработки ОПО, ОАО «ВНИИНС»

1. Cистемным мышлением; знанием технических спецификаций и архитектуры современных вычислительных систем; владением низкоуровневыми языками программирования asm, C, C++ и наиболее распространенными языками написания сценариев sh, Python, Perl; знанием архитектуры ОС Linux и ее системного программного обеспечения.

2. Cреда аutomake/autoconf с произвольными средствами подготовки исходных тексов; интерфейсы ядра ОС Linux и стандарты POSIX/LSB; средства визуальной разработки с использованием фреймворков QT и KDE; интерфейсы наиболее распространенных системных библиотек, применяемых при создании системных и пользовательских приложений и служб.

3. Высшее инженерское образование в области разработки программно-аппаратных систем, с уклоном в область разработки программного обеспечения.

4. Опыт работы приветствуется, однако более важными являются: гибкость ума; обучаемость; возможность переключения между разнотипными задачами.

5. К специфическим знаниям можно отнести: современные тенденции, архитектура и реализация программных и аппаратных средств защиты информации; разработка изделий строго в соответствии с ЕСПД и ЕСКД.

Александр Горный, директор по информационным технологиям Mail.Ru Group

1. Он должен знать сам Linux: функции ядра, организацию процессов и потоков, сетевой стек. Помнить наизусть все параметры каждого системного вызова, разумеется, необязательно – для этого есть документация. Но знать, что можно, а что нельзя, совершенно необходимо.

2. Язык C или, возможно, C++. Средства отладки – GDB и Valgrind. Но главные инструменты, конечно, – собственная голова и руки.

3. Мы не предъявляем каких-то формальных требований к дипломам кандидатов. Для нас гораздо важнее реальные навыки, так что в первую очередь мы смотрим на проекты, в которых они участвовали. Опыт показывает, что хороший разработчик может прийти из непрофильного вуза или вообще не иметь законченного высшего образования. У Mail.Ru Group естьдва крупных образовательных проекта: Технопарк на базе МГТУ имени Баумана и Техносфера на базе ВМК МГУ, цель которых – дать студентам актуальные практические навыки в области веб-разработки.

4. Не так уж много компаний в России (да и в мире) активно разрабатывают что-либо под Linux на системном уровне. И далеко не каждому удается поработать в большой компании, например, Mail.Ru Group, где есть много Linux-проектов, или в компании, специально заточенной под Linux-продукты, например, Nginx. Но зато существует множество Open Source-проектов, где тоже можно получить необходимый опыт. Такие проекты могут стать очень важной частью резюме программиста под ОС Linux.

5. Главное требование – Надежность (именно так: с большой буквы). Ведь cервисы, написанные под Linux, – основа нашей технической архитектуры.

Стас Рудаков, веб-разработчик
Наталья Жук, рекрутер в СООО «Гейм Стрим» в минском центре разработки Wargaming

1. «Программист под ОС Linux» – широкое понятие. Сюда можно включить специалистов по embedded, разработчиков ядра и всевозможных системных сервисов, GUI, WEB... Тяжело провести общую черту, когда инструмент применяется везде – от кофеварок до суперкомпьютеров.

Тем не менее если выделять один главный навык, то это умение постоянно учиться. Ведь часто информацию приходится буквально по крупицам выискивать в списках рассылок, каналах IRC, багтрекерах. Помимо этого, важно уметь читать чужой код. Linux-разработчикам постоянно приходится иметь дело с Open Source.

2. ОС Linux в наследство от UNIX получила принцип «ОС как IDE». Мы часто используем GCC, GDB, Strace, Netstat, tcpdump, Vi и top. Многие из них доступны как на машине разработчика, так и на production-серверах.

Если говорить об IDE в узком смысле, то в этом вопросе нет единства. У нас в компании используются Emacs, PyCharm, Sublime, Vim.

3. Разработке под Linux мало где учат. Мы опираемся прежде всего на опыт, а не на диплом. Хотя базовые знания тоже важны. Каждый программист, вне зависимости от целевой ОС, должен уметь проектировать сложные системы, писать и оптимизировать алгоритмы.

4. Cтаж работы и профильное образование тут будут скорее плюсами, чем определяющими критериями отбора. Для нас важны достижения и опыт предыдущих проектов, примеры реализованных задач, умение объяснить, в чем сложность и как ее преодолеть. Также мы предпочитаем нанимать специалистов, ранее решавших задачи, схожие с теми, скоторыми предстоит столкнуться у нас.

5. Пользовательская база в Wargaming огромна, наши сервисы испытывают серьезные нагрузки. Поэтому очень важно иметь навыки построения высокодоступных и масштабируемых систем.

 


 

Исследовательский центр портала SuperJob.ru специально для журнала «Системный администратор» изучил предложения работодателей. Сейчас в связи с санкциями вырос интерес к свободному ПО и стали более востребованы специалисты, им владеющие.

Системный администратор Linux/UNIX

З/п
диапазон

Город

ИТ Телекоммуникации

Промышленность

Производство

Строительство

Управление недвижимостью

Финансы

Продажи В2В

Продажи В2C

I

Москва

40 000 – 50 000

40 000 – 50 000

35 000 – 45 000

35 000 – 50 000

35 000 – 50 000

40 000 – 50 000

Санкт-Петербург

30 000 – 40 000

30 000 – 40 000

25 000 – 35 000

25 000 – 40 000

25 000 – 40 000

30 000 – 40 000

Екатеринбург

25 000 – 30 000

25 000 – 30 000

20 000 – 30 000

20 000 – 30 000

20 000 – 30 000

25 000 – 30 000

Нижний Новгород

20 000 – 30 000

20 000 – 30 000

20 000 – 25 000

20 000 – 30 000

20 000 – 30 000

20 000 – 30 000

II

Москва

50 000 – 60 000

50 000 – 60 000

45 000 – 55 000

50 000 – 60 000

50 000 – 65 000

50 000 – 70 000

Санкт-Петербург

40 000 – 50 000

40 000 – 45 000

35 000 – 45 000

40 000 – 50 000

40 000 – 50 000

40 000 – 55 000

Екатеринбург

30 000 – 40 000

30 000 – 40 000

30 000 – 35 000

30 000 – 40 000

30 000 – 40 000

30 000 – 45 000

Нижний Новгород

30 000 – 35 000

30 000 – 35 000

25 000 – 30 000

30 000 – 35 000

30 000 – 35 000

30 000 – 40 000

III

Москва

60 000 – 100 000

60 000 – 95 000

55 000 – 90 000

60 000 – 100000

65 000 – 100000

70 000 – 95 000

Санкт-Петербург

50 000 – 80 000

45 000 – 75 000

45 000 – 70 000

50 000 – 80 000

50 000 – 80 000

55 000 – 75 000

Екатеринбург

40 000 – 65 000

40 000 – 60 000

35 000 – 60 000

40 000 – 65 000

40 000 – 65 000

45 000 – 60 000

Нижний Новгород

35 000 – 55 000

35 000 – 55 000

30 000 – 50 000

35 000 – 55 000

35 000 – 55 000

40 000 – 50 000

IV

Москва

100 000 – 160 000

95 000 – 160 000

90 000 – 140000

100 000 – 150000

100 000 – 150000

95 000 – 140000

СПб

80 000 – 130 000

75 000 – 130 000

70 000 – 110000

80 000 – 120000

80 000 – 120000

75 000 – 110000

Екатеринбург

65 000 – 110 000

60 000 – 110 000

60 000 – 90 000

65 000 – 100000

65 000 – 100000

60 000 – 90 000

Нижний Новгород

55 000 – 90 000

55 000 – 90 000

50 000 – 80 000

55 000 – 85 000

55 000 – 85 000

50 000 – 80 000

Среднее (медиана)

Москва

83 000

77 000

75 000

75 000

82 000

75 000

Санкт-Петербург

65 000

62 000

60 000

60 000

65 000

60 000

Екатеринбург

53 000

50 000

48 000

48 000

52 000

48 000

Нижний Новгород

45 000

42 000

42 000

42 000

45 000

42 000

Подготовила Валерия Чернецова, руководитель отдела аналитики SuperJob


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru