Чем занимается ведущий разработчик программ для беспилотных автомобилей в Luxoft?

zolotyh_cover1-1
Андрей Золотых рассказывает, почему работать программистом — это интересно и как заставить машину ездить с помощью С++.

У Андрея Золотых нет романтической истории о том, как он бросил все и стал разработчиком на C++. Наоборот, он шел к этому осознанно и сразу после школы получил профильное образование в Санкт-Петербургском государственном техническом университете. Андрей успел поработать во многих сферах, а сейчас занимается разработкой программ для беспилотных автомобилей. На его примере рассказываем, почему C++ популярен и широко распространен и какие качества нужны, чтобы устроиться на работу в международную компанию.

Что такое C++?

Начнем с того, что C++ — универсальный язык программирования, который входит в тройку самых известных, наряду с Java и Python. Основное его преимущество — скорость: он работает в среднем в два раза быстрее, чем Java, и в 30 раз быстрее, чем Python.

Поэтому в тех областях, где мгновенная реакция — необходимость, альтернативы C++ нет. В автомобильной сфере большинство программного обеспечения написано на C++. На нем же созданы все операционные системы, поисковые движки Яндекса и Google, многие мессенджеры (например Telegram), которые работают с большим объемом информации. Сюда же можно добавить все умные электронные устройства и бытовую технику.

Язык C++ сложный для изучения и применения. Есть одно точное выражение создателя этого языка, которым можно охарактеризовать программирование на C++: «C позволяет легко выстрелить себе в ногу; с C++ это сделать сложнее, но, когда вы это делаете, вы отстреливаете себе ногу целиком». Можно допустить одну небольшую ошибку, и программа упадет.

В Викисловаре есть специальная трактовка этой фразы для программистов, которая звучит следующим образом: «Выстрелить себе в ногу — это повредить содержимое памяти компьютера через прямой доступ». Допустить такую ошибку в Java гораздо сложнее, а на Python — почти невозможно.

Язык программирования C — это часть языка C++. Поэтому если вы изучите C++, то автоматически выучите и C. Этот язык программирования по-прежнему очень популярен, и есть много хороших вакансий для интересных проектов, использующих чистый С.

Где используется C++?

  • Разработка операционных систем: Windows, Linux, Mac OS и iOS, Android и др.
  • Программирование встроенных систем (embedded systems): микроконтроллеры, беспилотные автомобили, умные часы, сенсоры и устройства, использующие технологию интернета вещей.
  • Военно-промышленный комплекс.
  • Сетевые устройства: маршрутизаторы, коммутаторы и др.
  • Backend высоконагруженных систем (софт для серверов).
  • Разработка игр.
  • Разработка десктопных и кросс-платформенных приложений.

Этот язык стоит выбирать тем, кому нравится «железо» и интересно разбираться в том, как устроены компьютеры и электронные устройства. Свой первый компьютер — он назывался Sinclair — я спаял и собрал, еще когда был студентом в университете, и эта любовь к технике у меня сохранилась до сих пор. Я знаю и другие языки программирования, но C++ для меня самый любимый и удобный.

Еще подробнее про применение C++ мы писали в этой статье

Инструментов, которыми пользуется C++-разработчик, очень много: для Windows основной — это Microsoft Visual Studio, для macOS — Xcode IDE. Большой выбор инструментов для разработки на C++ есть в Linux. Например, Qt Creator, который стал очень популярным в последние годы. Вообще инструментов десятки, и выбирать можно любой для своего удобства.

Мотивирующий мем о ценности каждого дня в году

Чем я занимаюсь и как устроена работа программистов?

Мой рабочий стаж уже более 25 лет, и первая моя работа была связана с программированием контроллеров для электроэнергетики. Начинал я с должности обычного программиста, а впоследствии стал руководителем отдела разработки. Проведя в этой компании почти 15 лет, я сменил сферу деятельности и на 7 лет ушел в менеджмент. 

Вернуться все же захотелось, и выбор пал на компанию «Облачная медицина», которая специализируется на разработке современных медицинских информационных систем. Через год я перешел в компанию МТС ИТ, где мы с коллегами писали код на C++ для серверов, через которые абоненты МТС совершают звонки и используют интернет.

Сейчас я работаю в Luxoft. У компании множество офисов по всему миру, она разрабатывает программы для таких разных индустрий, например автомобилестроение, финансовые услуги, биотехнологии, медиа и телекоммуникации.

Я занимаюсь разработкой программ для беспилотных автомобилей. Написанные на C++ программы управляют работой всех систем автомобиля: поворачивают руль, меняют передачи, газуют и тормозят. Чтобы автомобиль мог собирать информацию об окружающей среде и принимать правильные решения, устанавливаются различные сенсоры (датчики). Все это помогает ему ездить самостоятельно, без водителя, и при этом быть безопасным для окружающих.

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

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

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

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

Как выглядит типичный рабочий день C++-программиста?

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

Пример рабочего экрана разработчика C++

При планировании своей работы мы оцениваем, сколько времени уйдет на ту или иную фичу. Допустим, ставим срок в две недели для того, чтобы изучить все вводные и начать работу. За это время нужно понять, как работает программа сейчас, как можно ее улучшить или добавить новые возможности — и ничего не сломать.

После этого уже начинается сама разработка, которая может занимать месяцы. Обычно мы работаем в командах по 3–4 человека, чтобы соблюдать Bus factor: если один человек выпадает из работы по каким-либо обстоятельствам, то оставшиеся без проблем закончат ее в нужный срок.

С командой мы находимся в постоянном контакте: созваниваемся и помогаем друг другу решать рабочие задачи. В этой сфере нет ничего страшного в том, чтобы обратиться за помощью или подсказкой.

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

Какие навыки важны и куда можно вырасти?

Для хорошей работы и продвижения по карьерной лестнице программист должен обладать как hard, так и soft skills. Почти единственный требуемый hard для разработчика — хорошее знание языка программирования. При этом если человек приходит в компанию на позицию junior-программиста, то ему нужно знать лишь базовые конструкции языка — многого требовать не будут, так как понимают, что в течение полугода или года он значительно улучшит свои hard-скиллы, главное, чтобы было желание.

При выборе среди кандидатов обязательно смотрят на soft skills: как умеет общаться, ведет ли себя адекватно, сможет ли работать в команде. Также немалое значение имеет развитый и широкий технический кругозор соискателя. Почти всегда выберут того, кто более приятен и интересен в общении, нежели того, кто более грамотен в языке программирования, но при этом производит не лучшее впечатление.

Андрей уверен, что всегда есть чему учиться

Перспектив развития в IT-сфере для разработчика достаточно много. Ведь если у человека есть опыт в программировании, то он со временем может перейти на другие позиции:

  • project manager контролирует работу команды, общается с заказчиком, следит за сроками и отвечает за конечный результат;
  • архитектор занимается построением ИТ-систем для решения бизнес-адач. Объясняет, как сделать программы правильнее и какие технологии использовать;
  • product owner знает все о потребностях клиента и возможностях команды и знает, как это объединить;
  • технический писатель занимается пользовательской документацией (FAQ, помощь), документацией внешних API и описанием внутренних систем проекта;
  • тестировщик ищет ошибки и возможные сбои в программе, моделирует ситуации, которые могут возникнуть во время использования программ;
  • DevOps-инженер умеет все и сразу: совмещает функции разработчика и сисадмина. Знает, какую архитектуру будет иметь приложение, и настроит сервера для его работы.

Я работаю в компании Luxoft всего лишь три месяца, и моя цель сейчас — получить опыт работы в международной компании на крупных и ответственных проектах. Это увлекательно!

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

Освойте новую профессию

(рейтинг: 5, голосов: 3)
Добавить комментарий