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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Принципы проектирования  

Dependency Inversion Principle. Принцип инверсии зависимостей в разработке

Мы подошли к последнему принципу проектирования приложений из серии SOLID – Dependency

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

Рынок труда  

Вакансия: Администратор 1С

Администратор 1С – это специалист, который необходим любой организации, где установлены программы

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

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

Книги для профессионалов, студентов и пользователей

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

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

Принципы проектирования  

Interface Segregation Principle. Принцип разделения интерфейсов в проектировании приложений

Эта статья из серии «SOLID» посвящена четвертому принципу проектирования приложений – Interface

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

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

Секрет успешных людей

Книги издательства «БХВ» по ИТ рассчитаны на разные категории читателей: от новичков

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

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

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

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

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

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 11274
Комментарии: 0
Потоковая обработка данных

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

19.03.2018г.
Просмотров: 9530
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

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

19.03.2018г.
Просмотров: 9578
Комментарии: 0
Конкурентное программирование на SCALA

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Друзья сайта  

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

Архив номеров / 2019 / Выпуск №05 (198) / Вакансия: программист встроенного ПО под Linux

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

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

Огромное количество устройств управляется встроенным программным обеспечением. Это касается интернета вещей, автомобильных операционных систем, сетевого оборудования и прочей различной электроники. Большую популярность в отрасли имеет операционная система Linux. Мы обратились к представителям компаний, чтобы выяснить, каких кандидатов они видят на позиции программиста встроенного программного обеспечения под Linux

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

Роман СтороженкоРоман Стороженко, Embedded Developer, ранее в SK Hynix, сейчас – стартап в области Embedded

1-2. Я отвечу эти на два вопроса сразу.

Во-первых, необходимы знания, которые нужны каждому Linux-разработчику в не зависимости от специализации:

  • понимание хотя бы в общих чертах архитектуры ядра;
  • умение собирать ядро и понимать систему его сборки;
  • знание C, Make;
  • знание userpspace-программирования. Не обязательно отлично знать POSIX, но нужно понимать что это. Понимать Linux API и вызов его напрямую или через libc. Также нужно знать shell-скрипты;
  • для отладки необходимо уметь пользоваться виртуальными машинами. Тут на выбор: Мirtual Иox, VMware, qemu. Последний не так прост для запуска, так как запускается через командную строку и обладает широчайшим набором опций. Можно также использовать его же через virsh;
  • Git. Без знания этой cvs невозможна эффективная работа с разными версиями ядра.

Есть знания, необходимые для embedded-специализации:

  • знание различных аппаратных архитектур. Чаще всего в настоящее время это ARM;
  • умение пользоваться приемами отладки для embedded. Здесь помогут всякие специализированные аппаратные отладчики, анализаторы шин, протоколов и т.д. Ну и, конечно, в самом простом случае порт uart и программа minicom для вывода отладочной информации;
  • Yocto project;
  • Build root;
  • Das U-Boot.

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

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

3. Как правило, компании требуют высшее техническое образование, хотя бывают и исключения. Очень важно знание английского. Хотя бы на уровне intermediate. И это совершенно оправданно. Сейчас большинство компаний работают с зарубежными заказчиками или сами являются зарубежными корпорациями. Поэтому английский надо учить добросовестно, и чем раньше начнете, тем лучше.

4. Основное требование, которое предъявляют компании, помимо, конечно, хороших навыков программирования в embedded, это несколько лет работы в этой области.

Самый минимум, который я встречал, – это 3 года. Часто стандартно требуют 5 лет. Но встречал я требования и в 8 лет, и даже в 10.

И это объясняется тем, что достаточно серьезный опыт действительно необходим. И он не приобретается так, как он может быть приобретен в более «попсовых» областях, вроде веба, – выучил очередной «самый модный и современный фреймворк», сделал один-другой тестовый проектик – и добро пожаловать. Нет, к сожалению, так не получится. Здесь нужна долгая и кропотливая работа и приобретение многих смежных знаний.

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

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

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

Студентам. Если хотите работать в этой области, то начинайте еще с университета. Затем можно год-другой поработать в каком-нибудь НИИ для набора опыта. Также многие именитые компании с удовольствием возьмут студентов сразу после института или аспирантов. Не упустите такую возможность, тогда можно обойтись и без НИИ. Не стоит сооблазняться высокими зарплатами, которые предлагают некоторые аутсорсинговые веб-компании. Да, они, конечно, будут очень выгодно отличаться от того же НИИ – тут кроме зарплат будет и красивый офис, и самокаты, и смузи, и, возможно, даже зарубежные командировки. И, конечно, можно этим сооблазниться. Мой совет – не делайте этого. Надо работать на перспективу. Отдав 2–3 года работе на перспективу, вы будете достойно оценены ведущими корпорациями или молодыми амбициозными стартапами – и будете там заниматься действительно интересными вещами и развиваться как специалист. А те, кто сооблазнились высокими зарплатами здесь и сейчас на вебе, так и останутся noname-аутсорсерами, изучающими очередной «самый лучший фреймворк». Имейте терпение и обязательно будете вознаграждены.

Состоявшимся специалистам в другой области. Итак – есть потенциальный барьер минимум в 3 года работы, а время есть только по вечерам. Что же делать? На мой взгляд, тут есть два варианта: во-первых, делать патчи в ядро. Добиться принятия хотя бы некоторых. Это резко повысит ваши шансы. Ну и второй путь, более сложный – сделать какой-нибудь проект самостоятельно. Сейчас для этого есть все шансы – железо с Linux на борту (например, Raspberry PI) дешево и почти любой проект доступен любителям. Идеально, если совместить эти два подхода. И, конечно же, вам понадобится очень серьезное терпение, будет много отказов и неудач, но если не опустите руки, то своего добьетесь. У меня, например, на переход в embedded из веба ушло более 2 лет...

5. Как правило, это зависит от того, какой проект делает компания. Условно говоря, если вы делаете storage девайс, будет подразумеваться хорошее знание IO стэка Linux, а если, к примеру, роутер – то тут, конечно, основной упор будет сделан на сетевой стек. Ну и так далее. Как правило, это явно указывается в описании вакансии.


Вячеслав БариновВячеслав Баринов, эксперт-инженер Московского исследовательского центра Samsung

1. Разработчику встроенного ПО невозможно не уметь программировать на языке C, не менее важны понимание принципов работы аппаратной части и особый навык – умение отлаживать код методом «пристального взгляда», так как не везде можно добраться с отладчиком. Причем важно уметь и не бояться разбираться в том, что внутри кода, разбираться и в чужом коде, без этого сейчас не представить работу в команде в проекте.

2. Современный разработчик не пишет код «голыми руками», мы пользуемся возможностями, которые предоставляют компилятор, отладчик, скриптовые языки (bash/Python), стандартные утилиты командной строки (grep/find/sed/awk).

3. Как правило, для работы в Исследовательском центре Samsung в Москве требуется высшее образование. При приеме на позицию разработчика кроме собеседования кандидаты должны решить достаточно сложные задачи по программированию.

4. Прежде всего – это наличие опыта разработки на C. Безусловный плюс для кандидата – это наличие собственных исправлений и дополнений в код Open Source-проектов, принятых сообществом.

5. Samsung – большая компания, и умение работать в команде, взаимодействовать с разными подразделениями, а также знание внутренних процедур являются важными навыками.


Александр ШлапаковАлександр Шлапаков, разработчик ПО встраиваемых систем в Нейролаб

1. Программист встроенного ПО под Linux должен обладать следующими знаниями и навыками:

  • Отличные знания языка Си.
  • С++.
  • Структуры данных и алгоритмы.
  • Знание и понимание архитектуры ВС в целом.
  • Архитектура ARM, x86.
  • Знание архитектуры операционных систем.
  • Знание и понимания экосистемы Linux.
  • Владение компиляторами (gcc) и отладкой.
  • Хотя бы общие знания в электронике и навыки работы с «железом».
  • Понимание работы периферии.

2. Инструментарий программиста встроенного ПО под Linux выглядит так:

  • Дистрибутив linux (как рабочая ОС).
  • GCC, GDB, binutils, cmake, make.
  • Buildroot, Yocto.
  • git.
  • Редактор кода по выбору.
  • Командная строка.

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

4. Зависит от компании и требуемого уровня для конкретной должности. В некоторых случаях умение пользоваться Arduino хватает, чтобы найти работу. Специалистов в этой области дефицит, а порог вхождения достаточно высокий.

5. Умение работать со всем, что касается низкого уровня. Не только работа с Linux, но и с микроконтроллерами (bare metal), SoC, периферией (uart, spi, i2c и т.п.), стек tcp/ip.


Павел МельниковПавел Мельников, Senior Embedded Systems Developer, компания Visteon Electronics

1. Твердые знания языка С (в случае Automotive индустрии – знание MISRA C Coding Standards);

Базовые знания схемотехники (умение пользоваться осциллографом для отладки шин данных (SPI, I2C, etc);

Написание и поддержка Device Tree для целевого микропроцессора, написание драйверов для периферии, знание принципов работы ОС (синхронизация, критические секции, сигналы, потоки), межпроцессное взаимодействие (сокеты, общая память, очередь сообщений);

Владение средствами отладки (jtag, gdb, objdump). Умение профилировать код с valgrind.

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

  • рабочая ОС – Linux или Windows (наличие инструментов для кросс-компиляции под целевую платформу);
  • IDE – vim или графический редактор для написания исходников, компиляция – с помощью gcc или специфических проприетарных компиляторов;
  • сборка – toolchain целевых архитектур, различные билд-системы (Make, autotools).

3.  Знание английского языка на уровне intermediate, высшее образование в области Computer Science, Electronics Engineering.

4. В зависимости от целевого уровня (junior-middle – senior – architect). Опыт работы с системами на кристалле (SoC) на Embedded Linux, портирование подсистем с одного SoC на другой.

Оптимизация по времени выполнения критических функций ПО.

5. В Automotive индустрии всегда накладывается требование на время выполнения кода, а также повышенные требования к безопасности. Зачастую запрещено динамическое выделение памяти в Safety Critical проектах (например, системы подушек безопасности в автомобилях).

Для нашей компании нужны соискатели, имеющие опыт работы с различными процессорными архитектурами – ARM (cortex-M, cortex-A): Опыт работы с ОСРВ QNX или ОС Linux.


Роман ШишкоРоман Шишко, Software Engineer, компания DSR Corporation

1. В любом случае потребуется знание языка С, реже С++.

Основные знания и навыки программиста встроенного ПО под Linux можно разделить на три группы.

  • Первая группа, общие для любого программиста навыки:
    • умение читать код;
    • умение писать код, который смогут читать другие программисты (и у них не возникнет желания сделать с вами чего-то плохого);
    • умение отлаживать код;
    • способность взаимодействовать с другими членами команды;
    • умение работать с системами контроля версий.
  • Вторая группа, знания и умения, специфичные для разработки под Linux:
    • свободно работать в командной строке;
    • ориентироваться в исходниках ядра Linux;
    • bash, gcc.
  • Третья группа, знания и умения, специфичные для разработки встроенного ПО:
    • понимание, как программа размещается в памяти, как работают аппаратные прерывания;
    • работа с осциллографом, логическим анализатором, мультитестером, паяльником;
    • умение разбираться в документации на микрочипы;
    • умение читать электрические схемы.

2. ПО: gcc-тулчейны, специфичные для целевых платформ, Emacs, Wireshark, командная строка.

«Железо»: J-Link, мультитестер, паяльник, осцилограф.

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

4. Опыт работы в годах далеко не всегда отражает профессиональный уровень. Если исходить из условия, что человек действительно большую часть рабочего времени занимается разработкой, то программист уровня «middle» это, как правило, 3–5 лет, «senior» 5+ лет профессиональной разработки.

5. Специфических требований в нашей компании нет.


Без фотоИгорь Демченко, Embedded Linux C developer

1. Работая с встроенным ПО (работающим поверх Linux), программисту в теории будет достаточно знания языка C. Однако на практике эффективность разработчика зависит от его гибкости – с какими устройствами и каким образом он работал в прошлом, какие задачи решал и т.д. Мир встроенного ПО ограничен лишь фантазией человека, который придумает, какой же модуль подключить к целевому устройству. ГИБКОСТЬ – это ключевой навык. Возможно, еще помогут знания системного администратора Linux, но это опционально.

2. Обычно текстового редактора и системы контроля версий достаточно. В зависимости от проекта или компании, людям в офисе предлагают использовать разные IDE или надстройки над редакторами, их можно как использовать, так и нет.

3. Требования к потенциальным сотрудникам могут отличаться в зависимости от компании. Некоторым в первую очередь важен прошлый опыт работы и как мыслит человек, решая ту или иную задачу. И потому об отсутствии профильного высшего образования (или вообще его наличия) могут даже не спросить.

Некоторые компании обращают внимание на наличие технического (иногда явно профильного) образования. Это либо компании, которые живут пережитками прошлого, либо те, у которых сложность всего их комплекса ПО действительно предполагает очень высокий уровень кандидата.

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

5. Этот вопрос обычно закрыт NDA..


Без фотоДенис Полторак, Embedded C++ tech lead в NDM Systems Inc.

1. Чаще всего нужно знать ядро Linux (классика – книга Linux Device Drivers, 3rd Edition) и сети. Бывают проекты без ядра, в пользовательском пространстве. Для таких достаточно многопоточности (pthread) и общего понимания работы в командной строке.

2. В зависимости от того, насколько удобно построен проект. В идеале – отладка ПО идет на десктопе, и на железе остается разобраться с 1% багов, обычно при помощи логов. То есть Eclipse. Если не повезет, но железка поддерживает дебаггер – gdb. Если совсем не повезло – логи, бубен и календарь фаз луны. Могут быть полезны strace, valgrind, cppcheck. Это для пространства пользователя. В ядре свой набор инструментов.

3. Никаких, лишь бы кандидат умел кодить.

4. Зависит от позиции. Человек должен понимать, что он делает.

5. Всему можно научиться, при желании.


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


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

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

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

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

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