Открываем факультет разработки на С++

Открываем факультет разработки на С++

Самый «железный» из высокоуровневых языков программирования
8 минут1951

С++ считается одним из самых сложных языков программирования. Тем не менее освоить его можно и «с нуля» в качестве первого языка разработки. Как, например, наш преподаватель и декан нового факультета разработки на С++, ведущий специалист в АО «Российские Космические Системы» Иван Овчинников. У него-то мы сегодня и узнаем, так ли страшен С++, и почему, несмотря на свою сложность, он по-прежнему востребован.

Особенности и сферы применения языка программирования C++

— Иван, привет! Расскажи, в чём особенности С++ как языка программирования? Чем он сложнее других языков? 

Можно сказать, что С++ — один из самых влиятельных инструментов разработки и прародитель многих других языков программирования. Большая часть современных языков программирования (Python, JavaScript, Java) в итоге исполняется или компилируется в С++. Но быстрее всего будет работать та программа, которую не автоматически сгенерировали, а вручную создали разработчики. Поэтому языки С/С++ отличает огромная скорость исполнения и возможность полного контроля над происходящим. 

С++ — это универсальный инструмент, который позволяет подобраться к «железу» ближе, чем любой другой высокоуровневый язык программирования. Конечно, С/С++ устроены нетривиально и многое в них не так просто понять и выучить. К тому же С++ довольно сложно выражает идеи объектно-ориентированного программирования — но это с лихвой окупается контролем над происходящим в программе.

— Поясни, что такое объектно-ориентированное программирование (ООП)?

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

В ООП больше внимания уделяется архитектуре приложения и разделению ответственности участков кода, а также лучше поддерживается принцип DRY («Don’t Repeat Yourself» — «Не повторяй себя»).

— На какие языки похож С++? С каких языков проще всего переучиться на C++?

Языки, на которые похож С++, уже давно не используются, так что не буду их перечислять. Зато, наоборот, очень многие современные языки похожи на С/С++, потому что либо испытывали его влияние, либо вовсе являются его прямыми наследниками. Так что переучиваться на С++ будет проще, имея в качестве базы Java и Python, а ещё, возможно, Swift — но тут я не могу точно сказать, не так хорошо его знаю.

— В каких отраслях и для каких задач чаще всего используется С++? Каким компаниям нужны специалисты по С++?

С++ нужен в любой отрасли или компании, связанной с созданием аппаратного обеспечения:

  • системное программирование;
  • робототехника, в том числе медицинская;
  • космическая отрасль;
  • тяжёлая техника (у меня один знакомый вообще бульдозеры программирует).

А также современные автомобили, станки, кассовые аппараты, терминалы оплаты — всё это напичкано электроникой, которую нужно программировать, причём в большинстве случаев как раз на С/С++.

Где ещё применяется С++? Интернет вещей? Да. Компьютерное зрение? Большие данные? Информационная безопасность? Антивирусы? Игры? Серверные пакеты? Операционные системы? Да, да, еще раз да. Так что, как видите, без работы хороший разработчик С++ в ближайшее время точно не останется.

О карьерных перспективах разработчика С++

— Из чего обычно состоит рабочий день разработчика С++? Каковы его обязанности?

— Как и любой другой программист, разработчик С++ должен решать задачи бизнеса: составлять алгоритмы, детализировать требования заказчика, описывать поведение программ и компонентов, работать с трекерами задач и документировать свой код. Иногда пить чай и общаться с коллегами :)

 — Чем отличаются обязанности начинающего и уже опытного специалиста по С++?

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

— Какие скилы нужны для работы с С++?

— Поскольку язык считается довольно архаичным, такое понятие как soft skills многие работодатели игнорируют. Это не значит, что они не нужны —  в конце концов, умение работать в команде и использовать системы контроля версий ещё никому не мешало. Особенно учитывая, что команды, в которых работают разработчики С++, часто бывают весьма специфичными, и в них много тех самых «суровых» технарей.

Но, поскольку у С++ довольно высокий порог входа в профессию, в подготовке к первым собеседования больший упор нужно сделать всё-таки на прокачку  хард скилов: понимания ООП, многопоточности, STL, Boost.

— Насколько эксперты в С++ востребованы в России? Достаточно ли на рынке хороших специалистов?

— Специалисты по С++ стремительно «стареют»: первая волна популярности С++ была ещё в 1980-х, а вторая — набирает силу только в последние пару лет. Поэтому отрасль остро нуждается в свежей крови: людях, которые смогут и будут пропагандировать современные подходы к разработке и использование гибких методологий.

— Часто ли специалистов по С++ нанимают по фрилансу?

— Пока что в России это не так распространено — хотя пандемия, безусловно, привела к положительным сдвигам. Но отмечу, что на иностранных фриланс-биржах довольно много заданий на работу с С++. Так что тем, кто хочет работать не в штате (или не только в штате), стоит обратить на них внимание — в этом плане за рубежом технологии шагнули немного дальше, чем в России.

— Каков профессиональный путь выпускника вашего факультета? Сколько времени занимает рост от junior до senior?

— На мой взгляд, если уделять обучению достаточно внимания, то выпускник нашего факультета будет иметь уровень middle-ready. Конечно, без практического опыта коммерческой разработки стать middle-разработчиком после любого, пусть самого лучшего в мире обучения, невозможно. Но по уровню теоретических знаний мы выпускаем middle-ready специалистов, готовых после испытательного срока стремительно стать мидлами. А путь до сеньора всегда разный, тут всё зависит как от организации, так и от личных амбиций каждого конкретного студента.

— Сколько в среднем получают специалисты junior, middle и senior уровня?

— Если смотреть статистику, то в среднем junior-специалисты получают около 60 000 - 80 000 рублей в месяц, middle-специалисты —100 000 — 130 000 рублей, старшие специалисты — около 160 000 - 180 000 рублей. Но на деле разброс довольно большой, потому что много вакансий создаётся государственными организациями — а там зарплаты традиционно невысокие. Но при этом есть и отнюдь не единичны позиции, на которых разработчикам С++ спокойно предлагают 400 000 рублей в месяц, да ещё и с возможностью роста.

 

О факультете разработки на С++ в GeekUniversity, о программе обучения и о портфолио выпускника

— Скажи, в чём особенность данной программы обучения по сравнению с другими курсами, на которых учат разработке на С++?

Я сам стал программистом довольно поздно — в 29 лет, и до этого никак не был связан с IT-сферой. Поэтому я пристально слежу за тем, чтобы все темы сопровождались обильными и понятными объяснениями, которые помогли мне самому в своё время «с нуля» освоить С++ в качестве первого языка разработки.

Я рассказываю студентам о языке так, как рассказал бы себе начинающему — и требую того же от всех специалистов, которых привлекаю к преподаванию на курсе. Есть такой канал на Reddit — ELIF (Explain like I’m five — «Объясни, как пятилетнему») — вот по такому же принципу мы стараемся доносить до людей сложную информацию, в том числе и про «этот страшный Си».

Также я убеждён, что в процессе изучении языка (а он у хорошего специалиста никогда не заканчивается) важно постоянно практиковаться — поэтому у нас на факультете просто беспрецедентное количество практических проектов. Я считаю, что это гораздо лучше, чем писать один-два проекта в течение года — а после обучения всё равно их никогда не открывать снова.

— Почему в базовую часть обучения входит изучение рабочей станции Linux?

Я считаю, что Linux — краеугольный камень в изучении программирования. Без знания этой ОС вы не сможете создавать кроссплатформенные приложения, потому что не будете понимать, в каком окружении им предстоит работать. 96% устройств в интернете — это UNIX-подобные устройства. Куда без них? 

UNIX, который стал родителем Linux и MacOS X, был написан на С. Собственно, С для того и создавали, чтобы написать на нём UNIX. Отсюда и свойства языка — его близость к аппаратному обеспечению. Можно сказать, что история развития современных ОС пересекается с историей языка C. И на примере Linux это хорошо видно. 

Даже если вы твёрдо решили программировать исключительно для Windows, знание Linux расширит ваши горизонты — и позволит посмотреть на «дивный новый мир», от которого вы, возможно, напрасно отказываетесь.

— Расскажи, пожалуйста, чуть подробнее о блоках, посвящённых мобильной разработке на С++/QtQUICK и Unreal Engine.

Мы долго думали, что выбрать: компьютерное зрение или мобильную разработку, простенький OpenGL или UnrealEngine. Это было сложное решение, ведь хочется рассказать обо всём и сразу — и всё может оказаться потенциально полезным, интересным. 

Мобильная разработка в итоге была выбрана, чтобы показать, что С/С++ не ограничивается только системным программированием, но может использоваться и для такой молодой отрасли, как программирование мобильных устройств. 

А UE4 — это не просто «введение в игры», а демонстрация технологии, с помощью которой можно создавать виртуальную и дополненную реальность. Возможно, вы видели в фильмах про западную медицину, как люди тренируются делать операции на виртуальном сердце? Это же невероятно интересное направление — и нам очень хотелось дать нашим студентам возможность попробовать себя в нём.

— В описании программы указано, что она регулярно обновляется и модернизируется. Какие последние изменения в неё вносили?

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

— Как часто будут проходить занятия? Сколько времени они будут занимать? Предусмотрено ли программой выполнение домашних заданий?

Схема достаточно стандартная для курсов GeekBrains: двухчасовые вебинары два раза в неделю плюс практические задания после каждого занятия. Предполагаем, что выполнение каждого практического задания будет занимать у студента 3-4 часа, но тут всё, конечно, индивидуально.

— В описании курса указано, что на выходе студент получит «9 проектов в портфолио». Какого рода это будут проекты?

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

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

программированиеcpp-developer
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup