---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " /> ---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов. " />

Портал издательского дома "ПОЛОЖЕВЕЦ и ПАРТНЕРЫ"
---------------------------------------------------------------------------------
Выбираю•IT помогает в выборе будущей профессии абитуриентам
и студентам, в развитии профессиональных навыков молодым специалистам,
в выборе дополнительных программ обучения и специальных курсов.

О портале Каталог профессий

Разработчик ядра Linux

Открытые вакансии для разработчиков ядра Linux предусматривают определенный типовой набор требований к профессиональным навыкам и опыту соискателя.

Итак, перечень вопросов, которые мы задаем представителям ведущих компаний:

1. Какими знаниями и навыками должен обладать разработчик ядра Linux?

2. Каков инструментарий разработчика?

3. Каковы требования компании к уровню образования потенциальных сотрудников?

4. Какие требования предъявляются к опыту работы?

5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?


Денис Якубович, заместитель генерального директора компании Zecurion

1. Необходимые знания и навыки для данной позиции в нашей компании:

  • Твердые знания языка С.
  • Понимание архитектуры ядра, его подсистем, способов взаимодействия (Linux kernel 2.6.*, 3.*.*).
  • Понимание принципов работы с системой контроля версий GIT.
  • Опыт работы с компилятором gcc (+Linux LD, Linker scripts). Владение make/automake/autotools.
  • Базовые знания схемотехники (умение пользоваться осциллографом).
  • Знания аппаратных архитектур (x86, ARM).
  • Владение средствами отладки (jtag, gdb, objdump).
  • Большой плюс – наличие коммитов в mainline (умение формировать, описывать патчи).

2. Основной инструментарий разработчика, необходимый для выполнения работ:

  • Рабочая ОС – Ubuntu (по умолчанию, но возможен и другой дистрибутив).
  • IDE – eclipse, emacs, vim.
  • Сборка – toolchain целевых архитектур, различные билд-системы.
  • Отладка – jtag, gdb, objdump.
  • Документирование – wiki, OpenOffice.

3. Высшее образование в области компьютерных наук, знание английского языка (intermediate).

4. В зависимости от целевого уровня (junior-expert). Минимально – опыт работы в коммерческих проектах под Linux
от года (как плюс – наличие своего Open Source-проекта).

5. Для нашей компании нужны соискатели, имеющие опыт работы с различными процессорными архитектурами (ARM, MIPS, PowerPC, SH4, AVR32, Blackfin), платформами (TI Sitara/Davinci/OMAP, Marvell Kirkwood, Atmel, STMicroelectronics, Realtek, Freescale iMX/QorIQ), а также с широким набором интерфейсов: I2C, SPI, CAN, RS-232/UART, RS-485, NAND, USB, EMIF, etc. и типов памяти: NOR/NAND flash, CF/MMC/SD, FRAM/NVRAM, DDR/DDR2/DDR3.


Дмитрий Филиппов, менеджер по маркетингу продуктов JetBrains

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

  • Отличное владение языком С.
  • Понимание основ операционных систем.
  • Знание хотя бы элементарных алгоритмов, применяемых в программировании.
  • Терпение, вдумчивость, лаконичность.

2. Инструментарий разработчика ядра настолько же прост и лаконичен, как и код, который он должен писать. Перечислю базовый:

  • Удобный редактор кода. Например, vim или emacs.
  • Нужен сам код ядра и средства для синхронизации и работы с исходным кодом. Подразумевается системы контроля версий VCS. Обычно разработчики ядра Linux используют git. Но в некоторых компаниях может быть своя система контроля версий, с которой тоже нужно уметь работать. Например, subversion или mercurial.
  • Специфичный для ядра набор инструментов начинается с компилятора языка С – GCC. Это стандартный и единственный компилятор, работающий с ядром Linux.
  • Утилиты binutils тоже являются составной частью инструментария разработчика ядра. Без них компилировать ядро невозможно, так как многие утилиты из этого пакета используются в make скриптах.
  • Утилиты make, diff, patch тоже входят в набор инструментария разработчика. Их знание обязательно.
  • Для эффективной работы с кодом нам нужна навигация в нем. Для этого используются ctags и etags. Лично для меня удобными оказались проекты Linux Cross Reference (LXR), когда онлайн можно быстро и хорошо снавигироваться в нужные участки кода, а также быстро подсмотреть эти участки кода в других версиях ядра.
  • Для экспериментов с ядром потребуется sandbox. Для этих целей хорошо подходят виртуальные машины.

3. Абсолютно неважно, неполное среднее у тебя или ты кандидат наук плюс второе высшее. Критерий один – может человек выполнять возложенные на него обязанности или нет. Я встречал много программистов-самоучек очень высокого уровня, получающих очень неплохие зарплаты. Так что теоретически для того, чтобы начинать работать, не нужно никакое специальное образование.

4. От компании к компании, от проекта к проекту требования к опыту работы разные. На российском рынке труда имеется реальный дефицит квалифицированных программистов не только ядра Linux, но и программистов на С в принципе. В такой ситуации любому кандидату хотя бы с минимальным, но с хорошим и честным опытом работы с ядром с радостью предложат работу в любой адекватной компании. Далее степень опытности влияет лишь на грейд. Если у человека хороший опыт, скажем, написания драйверов, например, от четырех лет, то ему, вероятно, предложат уже senior-позицию. А если у вас хорошее владение С, базовый опыт программирования и знание основ ядра, то, вероятно, этого будет достаточно, чтобы начать работать на junior-позиции разработчика ядра Linux.

5. Когда мы говорим о разработке ядра Linux, мы имеем в виду любую работу с кодом ядра. Это может быть написание кода в какой-либо из подсистем ядра или написание или модификация драйвера, или верификация, или анализ, или тестирование кода. Ядро настолько большое и настолько разносторонне применимое, что разные компании специализируются на абсолютно разных задачах и работают с разными частями кода. Из этого вытекают специфические требования. Но есть одно важное требование, предъявляемое почти всеми компаниями ко всем кандидатам, – знание английского языка.


Павел Емельянов, архитектор департамента серверной виртуализации в Parallels

1. Знание хотя бы одной аппаратной платформы, опыт системного программирования.

2. Не имеет значения. Главное чтобы он был, и человек им владел свободно.

3. Этот пункт в резюме не имеет особого значения, опыт работы – гораздо важнее всего остального.

4. Сначала мы пытались требовать от соискателей опыт работы именно в ядре, но потом поняли, что в Москве таких людей почти нет (а те, кто есть, ограничивались драйверами). Так что из ядерно-специфичных требований осталось только одно – знание архитектуры x86.

5. Я бы выделил три неядерных пункта, на которые мы обращаем особое внимание:

  • умение придумать и доходчиво объяснить алгоритм решения какой-либо задачи;
  • работа с основными структурами данных (списки, деревья) не должна вызывать трудностей;
  • человек должен знать, что такое «сложность алгоритма» и уметь пользоваться этим знанием.

Большой плюс кандидата – это опыт, связанный с виртуализацией железа, например, использование или патчи к Linux's KVM или хотя бы чтение мануалов. Ну и использование Linux как домашней ОС в своем десктопе.


HR-взгляд: Чернецова Валерия, руководитель отдела аналитики рекрутингового портала Superjob.ru

Открытые вакансии для разработчиков ядра Linux предусматривают следующий типовой набор требований к профессиональным навыкам и опыту: отличное знание языка С; понимание принципов работы операционных систем, опыт системного программирования; знание TCP/IP и архитектуры Linux, умение ориентироваться в исходных текстах ядра; знание скриптовых языков (perl, bash, python), знание файловых систем и моделей разграничения прав в Linux, владение английским языком на уровне чтения технической документации.

Требования к образованию практически не встречаются в описаниях вакансий, поскольку основным требованием к таким работникам является наличие профильного опыта работы, а именно, опыта программирования на уровне ядра Linux.

В зависимости от компании/ вакансии/проекта, требуются или приветствуются определенные навыки и знания.


Подготовил Игорь Штомпель

 
Проект Издательского дома "Положевец и Партнеры"

По вопросам партнерства обращайтесь по электронной почте chooseit@samag.ru

Телефон: +7 499 277-12-45