Программист C++ создаёт программный продукт или улучшает какую-то программу. Язык C++ предназначен в первую очередь для больших и сложных проектов, в которых важна производительность и надёжность. Например, декодер для просмотра видео на YouTube написан на языке C++. Он обрабатывает миллионы пикселей, совершая миллиарды действий в секунду. Язык учитывает современные тенденции в программировании и отлично подходит для написания большого и сложного кода, но при этом позволяет контролировать действия компьютера.
Опытные C++-программисты пишут код для искусственного интеллекта, микроконтроллеров, беспилотных автомобилей, операционных систем, браузеров, серверов и видеоигр.
Разберём несколько основных задач, которые выполняют разработчики C++:
● Создают десктопные приложения. Например, пишут, программы для анализа видео и работы со звуком. С помощью программ, написанных на C++, создаются спецэффекты, которые зрители привыкли видеть в блокбастерах. На языке C++ и его предшественнике C написаны браузеры Opera и Google Chrome, программа для обработки фото Adobe Photoshop и редактор для создания векторной графики Illustrator, операционные системы Windows и Linux.
● Вместе с программой пишут тесты. Подход TDD (от англ. Test-Driven Development, разработка на основе тестов) разработчики используют для проверки работы отдельных модулей самих по себе.
● Объединяются с коллегами из смежных отделов — другими программистами и тестировщиками. Обычно проблемы возникают на стыке разных программ, если кто-то с кем-то не договорился и коммуникация сломалась. Разработчики с хорошими гибкими навыками могут разобраться самостоятельно, но обычно в командах есть менеджер проекта, готовый помочь в обсуждении. Некоторые команды привлекают тимлидов или технических руководителей, которые управляют командой разработчиков и отвечают за качество технической работы на проекте.
C++ — достаточно сложный язык, поэтому, чтобы работать с ним, нужно освоить:
● Базовый синтаксис языка. Синтаксис описывает чистый язык, и он не определяет, что делает программа, а подсказывает, можно ли соединить те или иные части кода. Синтаксически правильные программы можно скомпилировать и потом запустить. Только разобравшись в основных операторах языка, разработчик может правильно структурировать программу, а значит, и написать корректный код.
● Основные структуры данных. Это способ организации памяти для хранения и управления данными. Структуры бывают линейными и нелинейными. В линейных структурах элементы располагаются последовательно, например массивы и связанные списки. В нелинейных элементы хранятся разрозненно, например в виде деревьев и графов. Вид структуры данных, которую разработчик будет использовать в работе, зависит от задачи, поэтому нужно базово разбираться во всех основных структурах.
● Стандартная библиотека ― набор функций и классов, которые строго описаны и всегда доступны для языка. Например, функции чтения и записи файлов на диске. Стандартную библиотеку языка нужно знать хорошо, чтобы оценивать, какие решения доступны «из коробки», а какие придётся искать в сторонних библиотеках или разрабатывать самостоятельно.
● Устройство компьютера. Будет полезно знать, что такое оперативная память, как работает процессор и устроена операционная система компьютера.
Получить знания о C++ можно самостоятельно, например, из учебников или видеоуроков на YouTube. А можно освоить профессию с нуля на курсе «Разработчик C++», где наставники и ревьюеры помогают студентам разобраться с базовыми алгоритмами и структурами данных и писать чистый, работающий код.
● Чётко следовать инструкциям. Держать в голове структуру каждого приложения и каждого элемента, писать только то, что соответствует правилам. Сравнить такое мышление можно с формулой, которая строго определена. Формулы, в отличие от естественного языка и обычной речи, — это чётко структурированные вещи. Компьютер работает по строго сформулированному алгоритму, а значит, чтобы написать код, который он поймёт, нужно мыслить формально.
● Мыслить абстрактно или вкладывать в понятия новые смыслы, которых раньше там не было. Так мыслит ребёнок, играя с кубиками: он фантазирует и строит свой город. Работая с ООП, разработчик представляет, как элементы работают сами по себе, хоть и являются частью системы. Научиться мыслить абстрактно сложнее, чем следовать формулам, поэтому ценится тот специалист, который освоил оба подхода.
Из личных качеств разработчику пригодятся:
● Хорошая память. Поскольку часто приходится работать в режиме многозадачности, важно держать в голове много деталей.
● Терпение и усидчивость. Способность долгое время концентрироваться на работе, проводить время наедине с экраном компьютера, тщательно проверять код на ошибки.
● Ответственность. Особенно ценятся пунктуальные программисты, которые умеют грамотно оценить свои силы и распределить задачи по степени важности. Многие работодатели готовы пойти навстречу, если есть какие-то пробелы в технических знаниях, но точно нет, если разработчик регулярно срывает сроки и на него нельзя положиться.
● Навык коммуникации. Важно уметь общаться с коллегами, договариваться и воспринимать конструктивную критику.
● Готовность постоянно учиться. Программирование — сфера, где обучение не прекращается с окончанием университета или курсов. Поэтому стремление постоянно повышать квалификацию и изучать новые технологии — основа профессии.
По данным RealHR, минимальная зарплата начинающего программиста C++ составляет 100 тыс. рублей.
Разработчик С++ даже на стартовой позиции может зарабатывать больше, чем специалисты с опытом работы из смежных профессий. Источник: RealHR
В крупных городах и зарубежных компаниях джунам могут предложить зарплаты выше 100 тыс. рублей. В регионах даже опытные разработчики могут получать около 60 тыс. рублей. Источник: hh.ru
От разработчиков уровня сеньор работодатели требуют понимания принципов построения распределённых систем, опыта многопоточного программирования и разработки под Linux. Источник: hh.ru
Несколько рекомендаций, как освоить профессию:
1. Выбрать учебники.
Новичкам будет полезно прочесть книги:
● «Программирование. Принципы и практика с использованием C++» Бьёрна Страуструпа;
● «Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14» Скотта Мейерса;
● «Гибкая разработка программ на Java и C++. Принципы, паттерны и методики» Роберта С.Мартина.
2. Писать на C++.
Любые книги бесполезны, если не применять полученные знания на практике. Поэтому даже с минимальными знаниями нужно пробовать создавать собственные проекты.
3. Найти ментора.
Это может быть знакомый программист, готовый поделиться знаниями и направить обучение в правильное русло. Можно делиться результатами на GitHub и просить коллег об обратной связи.
4. Изучать теорию языка на сайте cppreference.com.
По сути, это подробный справочник с описанием языка и стандартной библиотеки. C++-программисты часто обращаются к этому сайту как к основному инструменту, многие страницы переведены на русский.
5. Следить за сайтом комитета ISO C++.
На сайте собраны новости, статусы и черновики стандартов для всех компиляторов и платформ.
6. Читать руководства.
Преимущество С++ в том, что у него активное сообщество программистов, которые создают собственные платформы и делятся знаниями.
7. Научиться работать в операционной системе Linux.
Это поможет сразу настроить её для своих задач, прежде чем начать программировать.
8. Подписаться на блоги и подкасты.
Начать можно с ознакомительного видеокурса на YouTube от опытного разработчика ПО и преподавателя Дэниэля Гаквайи. Или послушать подкаст CppCast. Всё это нельзя назвать активной частью обучения, скорее способом окружить себя информацией о C++ и сделать этот язык привычной частью жизни.
9. Изучать, как написан чужой код.
Можно присоединиться к проектам с открытым исходным кодом на GitHub, чтобы быть в курсе, как выглядит код опытных программистов.
10. Записаться на курс.
Преподаватели помогут освоить профессию с нуля и сразу применить знания на практике. В самостоятельном обучении придётся оставаться один на один с трудностями, высок риск «забуксовать» на одном месте, а на курсе студент получает структурированную учебную программу и не тратит время на организацию обучения.
Георгий Осипов
Не надо гнаться за большими зарплатами, главное — получать удовольствие от программирования и понимать, что созданная разработчиком программа, которая живёт своей жизнью, — это гораздо более ценно, чем зарплата, которой славится отрасль.
Читать также: