Что нужно знать и уметь, чтобы стать разработчиком на С++
Про разработку на C++ ходит много слухов и мнений: одни говорят, что это очень сложно, другие — что это универсальный язык для всего, а третьи — что это самый лучший язык для начинающих. Мы решили разобраться, правда ли это и что нужно для того, чтобы стать разработчиком на C++.
Что такое C++
C++ — это язык программирования высокого уровня. Это значит, что он работает не напрямую с процессором (хотя такие возможности там есть), а с помощью привычных и понятных программисту команд, похожих на слова в английском языке.
Ещё C++ поддерживает ООП — там есть объекты, классы, свойства, методы и всё остальное. Это значит, что на нём можно реализовать любой современный алгоритм, используя всю мощь объектного программирования.
Сила С++ в том, что он позволяет напрямую работать с процессором, памятью и другим железом. Это позволяет писать на нём супербыстрые программы. Например, большинство популярных алгоритмов сортировок во многих языках написано на С++, потому что он напрямую работает с памятью и быстро работает с данными в ней.
Обратная сторона такой мощи — в сложности С++. Сам по себе язык не очень сложный, с простым синтаксисом, но для серьёзных задач нужно знать архитектуру процессора, устройство памяти, системные функции операционной системы и много других тонкостей.
Вот пример кода на С++:
#include #include using namespace std; const int INFINITE_ROOTS = -1; int solve_linear(double a, double b, double &root) < if (a == 0) return b == 0? INFINITE_ROOTS: 0; root = -b / a; return 1; >int main() < cout > a >> b;) < const int roots = solve_linear(a, b, x); if (roots == 0) cout return EXIT_SUCCESS; >
Что сейчас пишут на С++
За 40 лет существования языка в сфере разработки мало что поменялось: на С++ традиционно пишут критически важный софт:
- драйверы;
- операционные системы;
- приложения для встраиваемых систем (например, охранная сигнализация);
- высокопроизводительные серверы и сервисы;
- компьютерные игры и движки для них;
- языки программирования;
- компиляторы и интерпретаторы.
Один из основных профилей С++ — программы, в которых нужна максимальная скорость и производительность. Например, большинство банковских приложений по обработке транзакций написаны на C++, так же как и популярные базы данных — MongoDB и Redis.
Чем отличается C++-разработчик от всех остальных
Главное отличие С++-разработчика — в его кругозоре и глубоком знании внутренней работы процессора, памяти и компьютера в целом. В большинстве остальных языков такое погружение не требуется — программист просто подключает нужные библиотеки, а они делают за него всю работу. Это удобно, но сделать максимально быструю программу так не получится.
Программист на С++ тоже пользуется библиотеками, но большинство из них работает тоже на низком уровне, и ему всё равно нужно вручную предусматривать много ситуаций. Это сложнее, требует высокой квалификации, но по скорости готовых программ им часто нет равных.
Что нужно знать кроме С++
Чтобы хорошо программировать на C++, недостаточно знать только синтаксис и основные конструкции языка. Если разработчик хочет профессионально расти и развиваться, кроме этого нужно знать много разного.
Алгоритмы и структуры данных. Они помогут эффективно решать задачи и оптимизировать свой код. Важно иметь представление о различных типах данных, списках, стеках, очередях, деревьях, хеш-таблицах и других структурах данных, а также о популярных алгоритмах сортировки, поиска и обхода графов. К другим языкам это тоже относится, но для C++ это база.
Операционные системы. Если программист будет понимать, как в ОС управлять процессами, потоками, памятью и файлами, это позволит ему написать более быстрый и эффективный код.
Сетевая архитектура. Пригодится, если программе нужно будет работать с сетью и получать оттуда данные (или отправлять их). Для разных задач — разные сетевые протоколы.
Инструменты разработки. Тоже нужно всем, не только разработчикам С++. Сюда относятся отладчики, системы контроля версий (например, Git), среды разработки и средства автоматической сборки кода (например, CMake или Make).
Стоит ли выбирать С++ как первый язык
С одной стороны — да, это хороший язык для обучения: в нём хороший и понятный синтаксис, много документации, примеров и можно начать с несложных программ.
С другой — кроме самого языка нужно периодически разбираться с устройством памяти, указателями, ссылками, адресацией и прочими сложными терминами. Это требует больше времени, и некоторые понятия могут показаться сложными.
Наше мнение такое: если вам нужен первый язык программирования, после которого все остальные языки будет выучить гораздо проще, — начните с С++. Или если вы хотите сразу погрузиться в системное программирование — С++ будет отличным стартом.
Сколько платят
По данным Хабр Карьеры, средняя зарплата разработчика на C++ составляет 184 тысячи рублей. При этом новички получают в среднем 88 тысяч, а мидлы — в два раза больше, 172 тысячи:
Как стать c разработчиком

Для начала разберём преимущества и недостатки этого популярного языка программирования.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, переменные, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Преимущества:
- Глубокая связь с Windows. Разрабатывая приложение на C#, можно не заботиться о проблемах с поддержкой – с высокой вероятностью оно заработает везде, где установлены требуемые версии компонентов .NET.
- Если на какой-то платформе есть проблемы с поддержкой, благодаря .NET их легко устранить.
- C# – компилируемый язык. Не имея доступа к исходным текстам, программу на нем сложнее взломать или модифицировать.
- C# легко учить: времени на освоение синтаксиса языка тратится намного меньше, чем, например, на С++. К тому же у C# большое комьюнити, в котором охотно помогают новичкам.

- C# – компилируемый язык. Это значит, что после любого изменения в коде придётся заново компилировать всю программу. Лучше заранее распланировать все связанные с разработкой действия.
- Язык является частью инфраструктуры .NET, поэтому для работы требуется установленная платформа и Windows. Можно писать и приложения для Linux, но все-таки чаще C# используют для создания кроссплатформенных продуктов и программ для операционных систем Microsoft.
- Из-за прекращения поддержки старых версий .NET нужно своевременно обновлять фреймворк до актуальных версий или придётся решать многочисленные проблемы совместимости.
.NET Framework и .NET Core
.NET Framework – созданная в Microsoft платформа, основанная на среде CLR (Common Language Runtime). CLR транслирует байт-код на CIL (Common Intermediate Language или высокоуровневый ассемблер) в машинный код во время исполнения. Все NET-совместимые языки высокого уровня и среды разработки должны (с некоторыми оговорками) уметь компилировать программы в промежуточный язык CIL. Его реализация от Microsoft называется MCIL, а виртуальная машина CLR также обеспечивает приложениям доступ к библиотеке классов .NET Framework.
Открытая модульная платформа .NET Core (теперь ее называют просто .NET) основана на .NET Framework и предназначена для разработки ПО под различные операционные системы. Ее можно использовать и для создания приложений с графическим интерфейсом, но, справедливости ради, для кроссплатформенного GUI есть гораздо более удобные инструменты. .NET Core больше подходит для веб-приложений, притом к ее преимуществам можно отнести уже упомянутую модульность, возможность работы в облаке, а также разделение библиотеки CoreFX и среды выполнения CoreCLR. Компоненты .NET Core обновляются отдельно, в то время как у .NET Framework обновление накатывается сразу на весь пакет.
.NET Framework:
- Работает с множеством готовых библиотек и инструментов – нужно лишь освоиться и ознакомиться с ними.
- Можно напрямую пользоваться различными функциями Windows.
- Из-за тесной интеграции с Windows отсутствует кроссплатформенность.
- Открытая платформа.
- Кроссплатформенность и модульность дают разработчику массу преимуществ. Например, создавая приложение для Windows, можно включить и необходимые модули для Linux.
- Код .NET переписан с нуля, что повышает быстродействие.
Существует также отдельная спецификация под названием .NET Standard, поддерживаемая всеми реализациями платформы .NET. По ней разрабатываются, например, совместимые с .NET Framework и .NET Core библиотеки.
Выбор инструмента сводится к решению конкретной задачи и долгосрочному планированию профессионального развития. Перед началом обучения стоит создать индивидуальную дорожную карту освоения специальности (roadmap).

Первые шаги
Если вам еще не приходилось заниматься разработкой, начинать придётся с азов: принципов объектно-ориентированного программирования, синтаксиса C#, оформления кода и работы с базами данных. На этом этапе стоит подумать о специализации: веб-приложения (серверное ПО), игры или программы с графическим интерфейсом. Также потребуется изучить приёмы работы со средой Visual Studio (на C# программируют преимущественно в ней): это, например, горячие клавиши, хитрости для быстрой генерации кода и прочее, прочее, прочее.
Продвинутое изучение
Освоив простые вещи, можно перейти к асинхронному и многопоточному программированию на C#, особым форматам файлов, библиотеке классов .NET Framework, тонкостям архитектуры Windows и к другим необходимым профессионалу вещам. Их список зависит от вашей специализации.
Специализация разработчика игр
Этот путь стоит рассмотреть отдельно и после первых шагов сразу идти по нему. Дальнейшее углублённое изучение будет не столь эффективно: лучше приступить к освоению игрового движка, например, Unity.
Прочие специализации
Если заложен прочный фундамент, самое время поточнее определиться со специализацией. Выбранная ранее технология веб-приложений или программ для десктопа начнёт оказывать прямое влияние на изучение C#.
Веб-разработка
Для работы в этом направлении потребуются дополнительные подготовительные курсы. Придётся разобраться с основными CSS, HTML и JavaScript хотя бы на базовом уровне, чтобы понимать их устройство и при необходимости уметь написать простенький код.
Потом опять придется выбирать между .NET Framework и .NET Core:
- ASP.NET – развитие Microsoft ASP. Предназначенная для создания веб-приложений платформа входит в состав .NET Framework и включает веб-сервисы, программную инфраструктуру, а также модель программирования.
- ASP.NET Core – свободно-распространяемый кросс-платформенный фреймворк для создания веб-приложений. Разрабатывается Microsoft совместно с сообществом и отличается более высокой производительностью по сравнению с ASP.NET.
Взаимодействие с базами данных в .NET Core осуществляется с использованием технологии Entity Framework Core (EFC, EF Core). EF Core работает на высоком уровне абстракции, предполагающем манипуляцию данными без привязки к их типу.
- ASP.NET MVC Framework – инструментарий для создания веб-приложений, реализующий шаблон Model-view-controller. Сейчас разрабатывается как часть ASP.NET Core, а вместо EF Core здесь используют EF 6.
Разработка настольных приложений
Здесь особого выбора нет, поскольку пытаться писать кроссплатформенные NET-приложения с графическим интерфейсом – экзотическое развлечение. Придется использовать .NET Framework и две основные платформы: WPF (Windows Presentation Foundation) или UWP (Universal Windows Platform). Последняя – более современная. Она позволяет создавать универсальные приложения для Windows в т.ч. на C#.

Где изучать язык?
Определившись со специализацией, можно перейти к получению знаний. Есть два варианта: самостоятельное изучение и/или курсы. Процесс может проходить в онлайне, но придется запастись терпением и, при необходимости, деньгами.
Онлайн-университеты:
- Coursera – американский провайдер онлайн-курсов. На сайте можно найти платные уроки, а также бесплатные. Coursera сотрудничает с различными учебными заведениями по всему миру и выдаёт сертификаты.
- GeekBrains – российская образовательная онлайн-платформа с уклоном в IT, но там хватает курсов и по смежным отраслям. Успешно завершившим обучение студентам выдают диплом о профессиональной переподготовке и помогают с трудоустройством. Занятия ведутся на русском языке.
- ITVDN – еще один российский портал, предлагающий видеокурсы по программированию и выдающий дипломы.
Самообразование:
Самостоятельное изучение – основа основ, особенно в программировании. Для этого потребуется время и источник информации. Вам обязательно понадобится официальная документация с сайта Microsoft. Лучше читать в английском варианте, поскольку перевод на русский может быть неточным.
Не стоит забывать и об актуальности знаний – в этом вам помогут блоги и различные каналы для программистов:
- Официальный блог .NET от Microsoft . Здесь можно найти описания обновлений, обсуждения нововведений и напоминания обновить платформу, если истекает срок поддержки.
- С# Helper . Конкретные примеры кода, объяснения новинок.
- Eric Lippert`s Blog . Блог одного из разработчиков программного кода для Facebook и создателя C#.
- Уголок “С-шарперов” . О громное количество материалов от людей, занимающихся в .NET или программированием на C#.
- BestDotNetTraining . Сайт и одноимённый канал на Youtube о программировании от индийских разработчиков. На сайте есть платные обучающие курсы, а также бесплатный контент.
- #SimpleCode . Русскоязычный Youtube-канал о практическом применении возможностей C#.
- CodeBlog . Ещё один русскоязычный Youtube-канал о C#. Здесь можно найти обзоры книг и способы решения практических задач.
- Habr . Это один из основных IT-порталов в русскоязычном сегменте. Публикации, обсуждения, обзоры и многое другое – на Хабре можно сидеть часами, при этом всё время пойдёт на самообразование. Если, конечно, выбирать обучающие публикации.
- GitHub . Открытая библиотека программного кода со всего мира. Здесь собираются команды разработчиков, и хранится код в открытом доступе.
Книги тоже считаются серьёзным источником знаний для программистов:
- Герберт Шилдт. C# . Полное руководство, но актуальны только версии, начиная с 4.0. Каждая книга подробно расписывает возможности языка и их практическое применение. Можно сказать, что это авторская переработка документации кода. Она отлично подойдёт не знакомым с синтаксисом языка.
- Джефри Рихтер. CLR via C#. Это издание углублённо рассказывает о C#, так что без уверенного знания синтаксиса языка информация в нем покажется вам слишком сложной.
- Албахари. C# . Карманный справочник по языку, среде CLR и сборкам .NET. Обычный справочник слишком объемный, но этот вариант удобно держать под руками.
- Джон Скит. C# для профессионалов. Один из основных учебников для программистов на C#.
- Эндрю Троелсен и Филипп Джепикс. Язык программирования C# 7 и платформы .NET и .NET Core. Отличная книга, разбирающая всё ещё актуальные возможности C#, платформу .NET и их прикладное применение. Объём велик – 1300 страниц.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
- изучите сленг, на котором говорят все разработчики независимо от языка программирования: язык алгоритмов и структур данных;
- научитесь применять алгоритмы и структуры данных при разработке программ;
- подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.
Как стать разработчиком с нуля
Рассказываем, что нужно знать айтишнику и как стать программистом с нуля ✔️ Отучиться на программиста самостоятельно и войти в IT реально!
Как стать программистом и с чего начать, если нет практического опыта, а представление о программировании весьма размытое? Подробно рассказываем, как стать востребованным программистом с нуля и на что обращать внимание в ходе обучения.
- Кто такой программист
- Почему вы хотите начать программировать
- Что нужно знать, чтобы стать программистом
- Какое направление в программировании выбрать в 2023 году
- Десктопная разработка
- Data Science
- Как стать разработчиком на Андроид
- План развития iOS разработчика
- Как стать разработчиком игр
- Как стать Python разработчиком
- План развития Java-программиста
- Бэкенд разработка — с чего начать?
- Как стать фронтенд разработчиком
- Full Stack разработка
- Какой язык программирования выбрать в 2023 году
- Где выучиться на программиста
- Классификация разработчиков
- Как стать Junior-разработчиком
- Где работают программисты
- Как найти первую работу в IT
- Что спрашивают у Джунов на собеседовании
- Что делать, если вам не хватает знаний до вакансии Джуниор-программиста
- Заключение
1. Кто такой программист
Программист — это специалист по разработке компьютерных программ. Под разработкой понимается продумывание архитектуры программы, её реализация, оптимизация и тестирование. Далее мы разберёмся, как стать настоящим айтишником и что для этого нужно знать.
1.1 Чем занимается программист
Это зависит от специфики выбранной отрасли, но в целом всё сводится к написанию и тестированию кода. Важно понимать свои обязанности и не скатываться в звание тыжпрограммиста, которому поручают всё — от установки Windows до починки техники.
1.2 Можно ли стать айтишником с нуля
Разумеется. Для этого существуют материалы, ориентированные на новичков: туда входят статьи, подборки книг, обучающие приложения, задачки, видеоуроки и туториалы.
А вот как стать крутым программистом с нуля и с чего начать — другой вопрос. К примеру, Senior разработчика от джуна отличают годы практики и колоссальный опыт, так что только терпение и труд.
2. Почему вы хотите начать программировать
IT — перспективная отрасль, которая сулит хорошим специалистам немаленькие зарплаты. Но если деньги — единственная причина, подумайте трижды. Вам предстоит работать в офисе, дома, забывать о выходных и возможности расслабиться: все мысли в тасках и багах. А всё, что обязательно нужно знать начинающему программисту, курсы не дадут: будьте готовы доучиваться.
Если же вы питаете неподдельный интерес к процессу, смело ступайте на стезю разработки.
3. Что нужно знать, чтобы стать программистом
Чтобы стать успешным и востребованным программистом, нужно обзавестись рядом hard skills и soft skills. Первые отвечают за технические умения и знания, вторые — за качества, которые помогают эффективно работать и находить общий язык с командой.
3.1 Hard skills
У каждой профессии свой набор хард скиллов. У программиста это общие технические знания (математика, информатика, алгоритмизация) и набор навыков, свойственный конкретному стеку.
3.1.1 Основы информатики
В такой сложнотехнической профессии понадобятся даже самые азы, а именно:
- какие типы данных бывают и чем они отличаются друг от друга;
- понимание систем счисления — двоичной и шестнадцатеричной;
- булева алгебра;
- понимание принципов выполнения операций ЭВМ.
3.1.2 Математика
А как же стать настоящим программистом, если плохо с математикой, и насколько важна математика в разработке? Требования разнятся в зависимости от сферы: для работы с графикой нужно знать геометрию, а для машинного обучения — теорию вероятностей и статистику. Но базовые знания математики никогда не будут лишними, особенно если вы осваиваете программирование с нуля.
3.1.3 Алгоритмы
Это то, что нужно обязательно знать, чтобы стать программистом. Алгоритмами называют последовательность действий, которая преобразовывает входные данные в некий результат. Наверняка вы слышали об алгоритмах поиска и сортировки — это они и есть. Разобравшись, как устроены алгоритмы, вы сможете создавать свои решения сложных задач и даже комбинировать их.
3.1.4 Принципы ООП
Объекто-ориентированное программирование — это подход в разработке, при котором за основу берутся абстрактные объекты, а не функции или процедуры. Данный подход используется в большинстве современных языков программирования, поэтому крайне важно понимать основные принципы ООП:
- абстракция;
- наследование;
- инкапсуляция;
- полиморфизм.
3.2 Soft skills
Софт скилы, они же гибкие или мягкие навыки, — это совокупность нетехнических неспециализированных навыков, которые тем не менее важны для производительности и профессионального развития. Это то, что также нужно знать программисту для эффективной работы.
3.2.1 Знание английского
Необходимость английского языка в программировании зависит от ваших конечных целей. Если вы видите программирование своим хобби, то можно обойтись базовыми знаниями английского и помощью онлайн-переводчика. Но если вы серьёзно настроены на карьеру разработчика, английский язык необходим.
3.2.2 Умение работать в команде
Программирование — это почти всегда командная работа. Как минимум, чтобы стать программистом, нужно уметь взаимодействовать с PM, тимлидом и просто камрадом по проекту.
Речь идёт не о социопатии и необходимости быть душой компании. Чтобы стать разработчиком, нужно слушать и слышать, задавать вопросы, признавать ошибки и исправлять их плечом к плечу, а не сваливать вину на сослуживцев при первой же возможности.
Для эффективной командной работы следует понимать и использовать гибкие методологии разработки. Почитайте об Agile, Scrum и Kanban — пригодится.
3.2.3 Стрессоустойчивость
Ответственность программиста сравнима с бухгалтерской. Так, запущенный на продакшене код с ошибкой может удалить часть или все данные, потревожить клиентов заказчика и вообще сделать последнему убытки.
Кроме того, вам нужно спокойно принимать пожелания и вносить правки, если требуется, не срываясь на проджект-менеджера и тем более заказчика. Хорошим подспорьем станут книги «Как разговаривать с кем угодно, когда угодно и где угодно» и «HBR Guide. Эмоциональный интеллект».
3.2.4 Постоянное саморазвитие
Не думайте, что программирование можно раз освоить и забыть. Отрасль богата переменами, нововведениями — уходом старого и появлением нового. Это и языки, и фреймворки, и сопутствующие технологии, которые всё время меняются и совершенствуются для более эффективной разработки.
Настраивайтесь на постоянные митапы, вебинары и курсы повышения квалификации. А ещё не забывайте о сертификатах, которые нужно получать и подтверждать с разной периодичностью.
3.2.5 Тайм-менеджмент
Контроль времени на решение поставленных задач существенно экономит и само время, и ресурсы, а также увеличивает продуктивность. Тайм-менеджмент для разработчика базируется на тех же концепциях, что и для любой другой профессии.
При планировании рабочего дня учитывайте дедлайны, используйте тайм-трекер и таблицу Эйзенхауэра:
4. Какое направление в программировании выбрать в 2023 году
Прежде чем думать, как стать айтишником с нуля самостоятельно, стоит определиться с направлением. По данным Stack Overflow Developer Survey 2020, популярность IT-специальностей такова:
В опросе приняло участие 65 000 разработчиков из разных стран.
Но что насчёт России? Согласно данным «Университета 20.35» за 2020 год, в топ-10 востребованных удалённых ИТ-профессий России вошли:
- Java-разработчик
- Аналитик данных
- Разработчик на языке C#
- PHP-разработчик
- Специалист службы поддержки
- Продуктовый аналитик
- Разработчик 1С
- Kotlin-разработчик
- Системный администратор
- Системный аналитик
А вот зарплаты айтишников по специализациям за второе полугодие 2020:
Проценты на диаграмме отражают разницу с предыдущим периодом, а прочерк означает, что данных для сравнения недостаточно.
5. Десктопная разработка
Десктопными называют приложения, которые устанавливаются на компьютер и работают под управлением ОС. Как известно, чтобы стать айтишником с нуля, сперва в любом случае нужно практиковаться на консоли и десктопе.
Хотите заниматься этим на серьёзном уровне? Здесь всё просто: если планируете разрабатывать под Windows — учите язык C#, под Linux — C++ или C, под macOS — Swift.
5.1 Программы для Windows
Стоит отметить, что для создания десктопных приложений можно использовать почти любой язык: Java, Python и даже Delphi. Мы же затронем самые оптимальные и популярные языки.
5.1.1 C# / C++
Для серьёзного высокопроизводительного приложения подойдут «плюсы». Но если жёстких требований к производительности нет, лучше обратиться к GUI-платформе Windows Presentation Foundation в составе .NET Framework. Писать на C# проще, и развивается это язык динамичнее того же C++.
Также есть вариант объединить мощность C++ и удобство .NET. Например, пользовательский интерфейс на C#, а подключение «плюсовых» библиотек через C++/CLI.
Чуть больше вы сможете узнать из нашего гайда по программированию на C++ с нуля.
5.2 Для Linux
5.2.1 C
Linux — это семейство Unix-подобных операционных систем, и так сложилось, что ядро Linux написано на языке C. Да, Си считается устаревшим, поэтому многие программисты предпочитают ему Python, Java, Perl, иногда Ruby. Но драйверы, модули ядра и большая часть системного ПО всё же написаны на языке программирования Си, и для Linux-программ он приоритетен.
Если вас интересует, как стать разработчиком на языке C, загляните в материалы по изучению Си.
5.2.2 C++
По сути, это усовершенствованный С. Браузеры, графические окружения, утилиты GNU и прочее программное обеспечение под Linux написаны на C++. А ещё на «плюсах» написан Qt — графический фреймворк, который используется во многих кроссплатформенных программах и является бесплатным для разработки свободного ПО.
5.3 Для macOS
5.3.1 Swift
Swift — родной язык для Apple-приложений, так что он оптимален для разработки под macOS. Выбрать можно и Objective-C, но последний проигрывает в скорости работы.
- прост в изучении;
- легко читается;
- поддерживает современные синтаксические конструкции;
- есть опционалы, которые «спасают» от null.
6. Data Science
Языки программирования Python и R — общепринятый стандарт для Data Science, так как они оба отлично подходят для работы со статистикой.
6.1 Python
Как стать Python программистом с нуля самостоятельно? На самом деле, не так уж сложно: у языка Пайтон простой синтаксис, много библиотек, развёрнутая и понятная документация. Но есть и минусы, такие как отсутствие удобных средств ORM и не самая высокая скорость работы.
Для Data Scientist у Python есть немало библиотек и фреймворков:
6.2 R
R в свою очередь характеризуется богатой ML-экосистемой, поддержкой векторных вычислений и синтаксисом, заточенным под нужды статиста. Из минусов — меньшее комьюнити и не самый простой синтаксис.
Но у языка R есть свои инструменты для Data Science:
- Esquisse и Ggplot2 — библиотеки для создания графиков.
- Dplyr — аналог Pandas для R.
- Shiny — пакет для интерактивных веб-приложений с визуализацией исследований.
И это не говоря о randomForest, Caret и других библиотеках с методами машинного обучения.
7. Как стать разработчиком на Андроид
В 2019 году компания Google объявила Kotlin предпочтительным языком программирования для создания Android-приложений. Это спровоцировало новую волну споров по выбору языка.
Ответ таков: чтобы стать Android-разработчиком, нужны оба языка, но при этом ознакомиться с их отличительными характеристиками не помешает.
7.1 Java
- много библиотек и готовых решений;
- большое комьюнити;
- разные сферы применения, если вдруг надоест Android-разработка;
- документация Kotlin предполагает, что вы знаете Java.
7.2 Kotlin
- лаконичный синтаксис;
- актуальная IDE, тесно связанная с языком разработки (Android Studio и Kotlin созданы JetBrains);
- предсказуемое развитие;
- перспективы.
8. План развития iOS разработчика
А как же тогда стать разработчиком iOS? Здесь всё гораздо проще, так как основной язык всего один.
8.1 Swift
Этот язык программирования разработан Apple и многое заимствовал из Objective-C, а также C++.
- компактный язык программирования;
- производительность приближена к C++;
- тестирование кода в реальном времени со Swift Playgrounds;
- постепенно распространяется на другие платформы.
9. Как стать разработчиком игр
Что нужно знать программисту, чтобы войти в геймдев? Сперва необходимо определиться, как устроены игры. Хороший вариант для начинающих — готовые движки, такие как Unity и Unreal Engine (но последний сложнее и серьёзнее).
Далее стоит определиться с платформой, под которую вы хотите разрабатывать игры. Поэтому на вопрос, что нужно знать разработчику игр, ответить не так просто.
9.1 Игры на iOS или macOS
Поговорим о программировании игр на Swift. Для начала необходимо установить «яблочную» IDE Xcode: в ней поддерживается разработка как на iOS, так и на macOS. Среда бесплатная и функциональная. В ней создайте новый проект с шаблоном Single View Application или Game. Тут уж к чему душа лежит:
- Single View Application предназначен для приложения с одним экраном. Шаблон включает в себя компонент View Controller для настройки вида с конструктором Interface Builder.
- Это специальный игровой шаблон. В нём предусмотрены фреймворки для двумерной визуализации, 3D-графики без OpenGL и низкоуровневый API, с которым можно писать действительно высокопроизводительные игры.
9.2 Браузерные игры
Вообще, создать браузерную игру можно и на HTML/CSS/JavaScript, но мы затронем PHP.
9.2.1 PHP
PHP актуален для разработки браузерных игр, хоть и не заточен под них специально. Такие компании, как Funzio, Gameforge, Goodgame Studios и другие продолжают использовать этот язык в своих играх.
Есть исчерпывающий видеокурс по созданию браузерной игры на PHP — от настройки окружения до регистрации и авторизации:
9.2.2 JavaScript
После ухода тяжеловесной технологии Flash из браузеров у JavaScript-разработчиков появилось много возможностей. Сейчас есть сильная альтернатива — элемент Canvas в HTML5 для создания двухмерных изображений через JavaScript-команды.
Чтобы понимать принцип создания игр на JS, проанализируйте код рандомайзера с угадыванием чисел.
Как только освоите азы, попробуйте написать что-то сложнее. В этом видеоуроке как раз используются чистый JavaScript и HTML5 Canvas:
9.3 Игры на Unity
Это популярная платформа для разработки игр. Очень дружелюбна к новичкам: можно бесплатно загрузить и обучаться с помощью курсов, словарей и других материалов, которые предоставляет компания и участники сообщества. Платформа поддерживает создание 2D- и 3D-игр.
Игры на Unity пишут с использованием языков C# и JavaScript. Почитайте, как создать простую 2D-игру на Unity.
9.4 Современные большие и требовательные игры
Речь о тяжеловесных многопользовательских играх с сильной нагрузкой на сервер. Такая задача под силу языкам C и C++.
9.4.1 C++
Что нужно знать начинающему программисту о C++? Это самый популярный язык программирования для геймдева: быстрый, мощный, с большим набором полезных инструментов. C++ — практически неограниченные возможности в среде масштабных проектов, в том числе в создании 3D-игр со сложной графикой и анимацией.
Не даром ведущие разработчики многопользовательских игр, такие как Blizzard Entertainment, работают с C++. На нём написаны World of Warcraft, Diablo, StarCraft, Counter-Strike и другие популярные игры. В основе Xbox и PlayStation также лежит C++.
9.4.2 С
Да, язык не такой популярный, как «плюсы», но по-прежнему хорошо справляется с большими нагрузками — альтернатив на низком уровне нет. Когда дело доходит до компиляции, сложно представить, какой бы язык мог конкурировать с Си.
10. Как стать Python разработчиком
Чтобы стать питонистом, нужно начинать с азов, таких как принципы ООП и синтаксис языка. А понимание того, как стать программистом Python, придёт с определением сферы деятельности. Основных направления для Пайтон-разработчиков два:
- Data Science
- Веб-разработка
Поскольку первое направление мы уже разобрали, сосредоточимся на веб-разработке. Что же что нужно знать Python веб-разработчику? Обратите внимание на фреймворки Django и Flask. Для эффективной работы с бэкендом достаточно одного из них, но в идеале следует понимать оба.
Python можно использовать для создания десктопных приложений, геймдева и мобильной разработки, но наилучших показателей с этим языком можно достичь в перечисленных направлениях.
11. План развития Java-программиста
А как можно стать Java разработчиком, если никогда не был программистом? Базис для всех языков плюс-минус одинаков: синтаксис, переменные, условия, циклы, ООП. Для решения специфических задач нужно освоить инструмент сборки и управления проектом Maven. Будет полезен и набор open source сервисов Netflix Stack.
Дальше всё зависит от выбранного направления в Java:
- веб-разработка;
- Android разработка;
- программирование для десктопов;
- Big Data.
Все материалы по этим направлениям, инструменты и путь развития вы найдёте в дорожной карте Java-программиста.
12. Бэкенд разработка — с чего начать?
Как стать бэкенд разработчиком? Нужно понимать, как устроены операционные системы, уметь работать с терминалом, знать стандарты POSIX и концепции построения сети, управлять вводом и выводом (I/O), процессами, а также памятью.
12.1 Обучение PHP
Как вы могли догадаться, стать бэкенд-разработчиком без знания языка невозможно.
PHP принято считать стандартом бэкенд-разработки, так как на нём написано множество веб-проектов, включая Facebook, Viber, Yahoo, YouTube, Wikipedia и даже движок WordPress, на котором вы сейчас читаете эту статью.
Другие преимущества PHP:
- простая установка и настройка;
- кроссплатформенность;
- выполнение программы до достижения ошибки в коде;
- большое комьюнити.
12.2 Обучение Node.js
Как известно, стать бэкенд веб-разработчиком на JavaScript можно с программной платформой Node.js. Она позволяет запускать JavaScript-код без браузера на бекенде, а в пакетной экосистеме npm есть много готовых решений.
12.3 Обучение Java
Мы уже разобрались, как можно стать Java программистом с нуля — поговорим прицельно о роли языка в бэкенде.
Для новичка Java сложнее, чем условный Python или PHP, да и код выйдет более громоздким. Однако это мощный инструмент в создании больших веб-проектов вроде eBay или LinkedIn, которые как раз и написаны на Java.
12.4 Обучение Django
Задаётесь вопросом, как стать веб разработчиком, зная Python? Используйте для этого Django — полнофункциональный веб-фреймворк, который предоставляет достаточно готовых решений для серверной части.
12.5 Основы SQL
Это язык запросов для работы с базами данных. Вы вряд ли вы найдёте по нему гайд в разделах «Как стать программистом», ведь SQL нужно не учить, а понимать.
Держите материалы, которые позволят разобраться в основах SQL:
- Основные команды SQL, которые должен знать каждый программист
- 27 распространённых вопросов по SQL с собеседований и ответы на них
13. Как стать фронтенд разработчиком
Итак, frontend программирование — с чего начать? Вам нужно освоить HTML, CSS и JavaScript — три кита, на которых стоит фронтенд-разработка.
13.1 Обучение HTML
Разметка — это каркас сайта. Чтобы работать с фронтендом, следует хорошо понимать анатомию HTML-разметки, знать основные атрибуты и теги, обеспечивать доступность и освоить SEO хотя бы на базовом уровне.
Для лучшего понимания рекомендуем ознакомиться с видеокурсом «HTML5 для начинающих».
13.2 Обучение CSS
Далее идут каскадные таблицы стилей. В разрезе CSS вам нужно освоить:
- компоновку;
- центрирование и выравнивание;
- видимость элементов.
Это базис. Следующим этапом можно переходить к медиа-запросам, которые позволят учитывать технические параметры разных устройств. В создании адаптивного отзывчивого дизайна помогут CSS Grid и Flexbox.
13.3 Обучение JavaScript
Ну и как стать эффективным фронтенд разработчиком без знания JavaScript? Именно он отвечает за функциональность сайта и возможность с ним взаимодействовать: заполнение и отправка форм, нажатие кнопок, прослушивание событий и многое другое.
Не спешите осваивать фреймворки — сперва чистый JavaScript. Это язык со слабой типизацией, а значит операция вроде 2 + “2” вместо ошибки выдаст результат 22. Так что есть с чем разбираться и без фреймворков.
Больше полезных материалов и инструментов для фронтенд-разработчика вы найдёте в дорожной карте по фронтенду.
14. Full Stack разработка
Эдакий гибрид frontend- и backend-разработки. Данное направление набирает популярность. Сейчас сложно найти чистых фронтендеров или бэкендеров: для взаимодействия этим специалистам нужно знать, за что отвечают их коллеги по вебу.
Фуллстек-разработчик не будет одинаково хорош в разработке серверной и клиентской части. Но как стать чистым Full Stack разработчиком, и чем вообще занимаются эти специалисты?
Хороший пример — CRM-разработчик. В его обязанности входят:
- Работа с базами данных клиента: создание событий, автоматизация процессов и интеграция приложений посредством API.
- Настройка аналитики в формате репортов/дашбордов.
- Создание простенького, но понятного интерфейса для работы с готовым продуктом.
Здесь также применимы инструменты вроде Bootstrap или Angular, но без фанатизма — важно создание рабочего функционального продукта.
15. Какой язык программирования выбрать в 2023 году
Всё ещё не определились с языком? Для начала взгляните на рейтинг TIOBE:
А теперь давайте пробежимся по самым популярным языкам программирования, затронем их сильные стороны и уточним сферы применения.
15.1 Python
Как уже говорилось ранее, стать Python программистом с нуля самостоятельно несложно, ведь у языка низкий порог вхождения и понятный синтаксис. Пайтон рекомендуется к изучению в вузах в качестве базового языка.
Основные сферы применения Python:
- Data Science
- Веб-разработка
15.2 JavaScript
О сферах применения JS говорить не стоит: язык давно стал лидером в веб-разработке, сперва захватив фронтенд, а теперь и отжимая бэкенд за счёт Node.js. Если хотите разрабатывать веб-приложения, учите JavaScript.
15.3 Java
Java — это кроссплатформенный язык программирования, мощный обработчик и внушительная библиотека. У Java много готовых решений и исчерпывающая документация.
Основные сферы применения Java:
- Веб-разработка
- Android разработка
- Десктопная разработка
- Big Data
15.4 C++
Быстрый, универсальный и полезный в качестве фундамента язык. Да, пусть Python в разы проще, но за сложностью C++ скрываются и преимущества. Освоив «плюсы», будет легче понять Java, C# и JavaScript, в основу которых легли принципы C++.
Главные сферы применения C++:
- Геймдев
- Интернет вещей (IoT)
- Операционные системы
- Ускорение существующих приложений
15.5 С#
C# часто сравнивают с Java, и у них действительно много общего. Код на C# удобочитаемый, а синтаксический сахар обеспечивает высокую скорость разработки.
Основные сферы применения C#:
- Геймдев
- AR/VR
- Десктопная разработка
По этому видеокурсу вы узнаете, как стать C# разработчиком.
15.6 PHP
Это бессмертная классика серверной части веб-приложений. PHP бюджетен, прост в освоении и успел обрасти внушительным комьюнити. Пусть современные сайты и пишутся то на Java, то на Node.js, существует огромная база написанных на PHP веб-приложений, которые всегда будут нуждаться в поддержке.
15.6 Kotlin
Здесь только Андроид. Но, как говорилось ранее, чтобы стать Android разработчиком с нуля, стоит начать с изучения Java, а только после переходить на Kotlin.
15.7 Swift
Если хотите писать десктопные и мобильные приложения для Apple устройств, осваивайте Swift. Это компактный и производительный язык программирования, который постоянно совершенствуется компанией Apple.
15.8 На что обратить внимание при выборе
На отрасль, в которой желаете развиваться. Но чтобы понять, как стать программистом и с какими трудностями придётся столкнуться, рекомендуем начать с C или C++, после которых любой другой язык освоить куда проще.
Если же вы точно определились, с чем именно хотите работать, смело выбирайте язык, который для этого подходит. Опирайтесь на рейтинги популярности, просматривайте вакансии по желаемому направлению в вашем городе, сравнивайте уровень востребованности и зарплаты.
16. Где выучиться на программиста
Чтобы ответить на вопрос, где учиться на программиста, необходимо рассмотреть все доступные варианты.
16.1 Самостоятельная учеба
Обилие книг, видеоуроков и сервисов вроде Scratch позволяет освоить базис, не выходя из дома. Но как выстроить план обучения, чтобы стать программистом с нуля самостоятельно? Обратитесь к стандартным программам обучения или роадмапам. Чаще всего основы включают в себя:
- Знакомство с программированием.
- Разнообразие IT-направлений.
- Основы выбранного языка: синтаксис, объекты и классы, функции, списки и словари, условия, циклы.
- Hello World.
- Модульное тестирование.
- Безопасность.
16.2 ВУЗ
Это более основательный подход, и, вопреки распрсотранённому заблуждению, «корочка» IT-специалиста действительно ценится, особенно в крупных компаниях. Если вы серьёзно настроены на карьеру в IT и думаете, как отучиться на программиста, выбирайте вуз.
16.3 Практические курсы
К курсам можно относиться по-разному, но если у вас нет профильного образования и вы не хотите тратить несколько лет в вузе, курсы — хороший вариант. К тому же, современные курсы покрывают практически все нужды, обеспечивая обучение основам программирования, более продвинутым темам, помогая с составлением резюме и трудоустройством.
16.4 С помощью ментора
Мы уже разобрались, как можно стать айтишником с нуля дома, но не затронули менторство. Всё потому, что оно не всегда подразумевает обучение на дому: это может быть как онлайн-репетитор, так и индивидуальные занятия оффлайн.
Ментор не только объяснит материал, но также обратит ваше внимание на ошибки, которые вы допускаете на практике. Внимание наставника не растекается по группе людей, а сосредоточено именно на вашей работе, что даёт более прицельное обучение программированию.
17. Классификация разработчиков
Когда люди говорят, что программисты много зарабатывают, они чаще всего подразумевают сеньоров. Давайте разберёмся, какие уровни IT-специалистов существуют и чем разнятся.
17.1 Стажёр
Стажёр — это вчерашний студент, который набивает шишки на практике. Обычно это низкооплачиваемые сотрудники, которых компания нанимает специально, чтобы взрастить нужного специалиста.
Стажировка может быть как оплачиваемой, так и неоплачиваемой: всё зависит от договорённости с нанимателем. Продолжительность стажировки оговаривается индивидуально. Чаще к стажёру приставляют ментора от компании.
17.2 Junior разработчик
Как правило, чтобы стать Джуниор программистом, достаточно освоить синтаксис языка, простые задачи решать самостоятельно, а сложные — заручившись помощью более опытного коллеги. Младший разработчик постоянно учится, совершенствует свои навыки. Его код нуждается в постоянном ревью.
17.3 Middle разработчик
У такого программиста уже есть опыт в разработке, он самостоятельно выполняет сложные задачи, но по-прежнему нуждается в ком-то, кто направит. Чаще стек технологий Мидла ограничен необходимым базисом. Нередко он знает, как выполнить поставленный таск, но не до конца понимает, как его решение интегрируется в готовый проект.
17.4 Senior разработчик
Сеньор, или старший разработчик, уже обладает широким кругозором, знает несколько языков программирования и технологий, способен с нуля создать архитектуру проекта с учётом его будущего развития. Senior программисты продолжают совершенствовать навыки, но при этом способны генерировать собственные идеи и делиться ими с командой.
Переход между перечисленными уровнями требует не столько времени, сколько усердия со стороны самого разработчика.
18. Как стать Junior-разработчиком
Здесь опять всё упирается в выбранную отрасль: у каждой специальности свои требования. Давайте разберёмся, что нужно знать младшему программисту на примере веба и мобильной разработки.
18.1 Frontend Junior
Сразу оговоримся, что алгоритмы, Git, тестирование и прочий базис мы затрагивать не будем, так как это актуально для всех направлений.
Итак, что же нужно знать младшему Frontend разработчику в 2023 году?
- HTML5, понимать разметку, освоить базовые теги, атрибуты и вложенные элементы.
- CSS3 — позиционирование, компоновка и выравнивание элементов, их видимость, отзывчивый дизайн и подходы mobile-first.
- Если мы говорим о JavaScript, то сперва следует выучить основы языка, а лишь потом двигаться к фреймворкам.
- Понимание MongoDB.
18.2 Backend Junior
К младшему бэкенд программисту иные требования. Он должен знать:
- Принцип работы интернета и операционной системы.
- Язык серверного программирования: PHP, Java, JavaScript (Node.js), Python (Django) или другой.
- Базы данных — реляционные и NoSQL.
- API — REST, JSON.
Плюсом будет умение установить и настроить хотя бы один из популярных веб-серверов: Nginx, Apache, Caddy или MS IIS.
18.3 Junior iOS
Чтобы влиться в iOS-разработку, нужно:
- Знать язык программирования Swift.
- Иметь практический опыт работы с IDE Xcode.
- Понимать сущность MVC, а также то, как «яблочные» приложения строятся на основе этого паттерна.
- Уметь запускать приложения на устройствах и распространять их.
18.4 Junior Android
Как уже говорилось, начать следует с выбора языка, но за основу лучше взять именно Java, а при необходимости дополнительно изучить Kotlin. Далее:
- Практический опыт работы с Android Studio.
- Понимание Android Architecture: паттерны MVVM, MVI, MVP.
- Изучение жизненного цикла Activity.
- Умение создавать гибкие интерфейсы с использованием фрагментов.
- Запуск приложений на устройствах.
19. Где работают программисты
Сложно ответить на вопрос, где в целом работают программисты, потому что сегодня профессия требуется чуть ли ни в любой сфере.
19.1 Фриланс
Как стать айтишником на фрилансе? Для этого есть немало площадок: Upwork, Weblancer, Kwork, FL и другие. Но будьте готовы нарабатывать портфолио и репутацию, а для этого первое время придётся перебиваться дешёвыми заказами.
Большой плюс — знание английского и умение строить вопросы на получение исчерпывающих ответов: вы сами себе PM, тимлид и разработчик.
19.2 Компании аутсорсеры
Также ласково называемые галерами. А всё потому, что от сотрудников часто требуется многозадачность за зарплату одного специалиста.
Но не всё так плохо. Во-первых, аутсорсинг — это готовые задачи, которые на фрилансе нужно выбивать, доказывая свою профпригодность. Здесь же менеджеры сами договариваются и берут нужный таск. Во-вторых, корпоративная жизнь предполагает бесплатный чай/кофе, абонементы в спортзал, тимбилдинги, корпоративы и вообще комфортную работу. Не всегда, но в крупных компаниях это так.
19.3 Стартапы и небольшие компании
Неплохо для начинающих программистов и опасно для опытных, которые готовы ради этого бросить более крупную «рыбу». В стартапах всегда есть риски:
- итоговая зарплата окажется ниже обещанной;
- выплачиваться будет с задержкой;
- компания в любой момент может закрыться, не выдержав конкуренции.
Но это хороший опыт для стажёров, которые всё ещё думают, как стать программистом, младших разработчиков и тех, кто хочет уйти от фриланса.
19.4 Банки и энтерпрайз
Здесь потребуется разработка, направленная на решение проблем бизнеса, а не конечных пользователей. Именно поэтому в банки и бизнес-отрасли часто набирают только Senior-программистов, так как нужно дописывать и поддерживать готовые проекты, нередко с Legacy-кодом. Зарплаты обычно выше средних на рынке, а от самого разработчика требуется терпение и исполнительность.
19.5 Продуктовые компании
Если аутсорсинг сосредоточен на разноплановости, ограниченных сроках и бюджете, то продуктовая компания — на эффективном управлении своими решениями. Во втором случае никто не будет требовать от вас проект на вчера и ведение сложных переписок с кучей недопониманий. К тому же, вы явно будете видеть свой вклад в развитие одного большого проекта.
Как стать разработчиком продуктовой компании? Точно так же, как и аутсорсинговой, но будьте готовы, что требования могут быть выше, ведь компания ищет программиста непосредственно для себя, а не для левого дяди.
Где ещё можно работать программистом? Это фриланс, open source и собственные проекты.
20. Как найти первую работу в IT
Всё чаще поднимается вопрос поиска и найма недооценённых специалистов — без диплома или соответствующего опыта работы. Исходя из этого, что же всё-таки нужно знать начинающему программисту?
Для начала вы должны показать, что нанять вас выгодно. В этом помогут теоретическая база, опыт в других сферах, знание английского и мотивация. Можно изобразить это так:
20.1 Где брать проекты для портфолио
Если в поисках ответа на вопрос, где можно выучиться на программиста, вы выбрали курсы, практический опыт гарантирован: курсы для разработчиков не обходятся без написания проектов. То же касается и вузов, где присутствует обязательная практика.
Сложнее будет, если вы самоучка. Но и здесь можно что-то придумать:
- писать небольшие программы по туториалам;
- искать задания на фрилансе и выполнять их самостоятельно;
- принимать участие в разработке open source проектов.
20.2 Как составить резюме, если нет опыта
- Нормально назовите резюме. В названии должны быть желаемая должность и ФИО кандидата, как здесь: «Junior Java — Пупкин Иван Иванович».
- Резюме может быть в формате Doc, PDF или сайта-визитки, если вы веб-разработчик.
- Добавьте адекватное фото и контакты.
- Укажите места, где учились и повышали квалификацию.
- Не копирайте бездумно инфу из разделов, что нужно знать, чтобы стать крутым программистом: вы должны доказать эти знания на собеседовании.
- Если нет опыта работы, указывайте, сколько времени практикуетесь в том или ином языке/технологии.
Последний пункт в резюме программиста может выглядеть примерно так:
- Java — 1 year;
- PHP — 0,5 years;
- JavaScript — 0,5 years.
20.3 Где искать вакансии и работу
О фриланс-сервисах мы уже говорили, потому затронем платформы по поиску работы в офисе или в ремоут-режиме. Для России и стран СНГ лучшие сайты с вакансиями для программистов это:
20.4 Как общаться с рекрутерами
Как вы понимаете, стать хорошим программистом в обход общения с HR невозможно. На собеседовании не стесняйтесь озвучивать свои желания и вопросы. Если на всё кивать головой, как автомобильная собачка, после трудоустройства можно обнаружить себя в крайне некомфортных условиях работы. Мы подготовили 13 вопросов работодателю, которые стоит задать на собеседовании.
Несмотря на это, нужно вести себя в меру сдержанно, демонстрировать серьёзность и говорить о своей мотивации.
21. Что спрашивают у Джунов на собеседовании
Огромный пласт вопросов приходится на теорию, чуть меньше занимает практика. Перед собеседованием изучите информацию о компании — обязательно спросят, почему именно она вас заинтересовала. Также подготовьтесь к каверзным вопросам рекрутера.
Будут и логические задачи. При этом ответ не обязательно должен быть верным — важно озвучивать ход мыслей, показывать, как именно вы пришли к тому или иному решению.
Из задач встречаются алгоритмы поиска и сортировки, расчёты, работа со строками и списками, оптимизация готовых решений. Держите несколько сложных задач с собеседований с разбором и кодом.
Другие вопросы, которые могут прозвучать на собеседовании:
- Принципы ООП и их понимание.
- Команды Git — как сделать пуш, коммит и т. д.
- Основные SQL-запросы.
Всё остальное будет касаться выбранного языка.
22. Что делать, если вам не хватает знаний до вакансии Джуниор-программиста
Трудоустроиться после первого же интервью почти нереально. Не расстраивайтесь из-за отказов, а используйте их с пользой. Как же стать востребованным айтишником с нуля? Будьте готовы набивать шишки на собеседованиях, запоминать или записывать вопросы, которые ранее не встречались, включать их в программу подготовки к собеседованию.
23. Заключение
Надеемся, этот гайд ответил на вопрос, как стать программистом, дал полезные советы и материалы, а также мотивировал на покорение новых вершин.
Остались вопросы? Задайте их в комментариях.
Кто такой разработчик на C++: чем он занимается и как им стать

C++ — один из самых популярных и известных языков программирования. В рейтинге TIOBE 2023 года он занимает третье место вместе с Python и C. Рассказываем, что особенного в C++ и что нужно знать, чтобы найти работу.
Что такое C++
Основное преимущество C++ — скорость: он работает в среднем в два раза быстрее, чем Java, и в 30 раз быстрее, чем Python. Поэтому в тех областях, где мгновенная реакция — необходимость, альтернативы C++ нет. В автомобильной сфере большинство программного обеспечения написано на C++. На нем же созданы все операционные системы, поисковые движки Яндекса и Google, многие мессенджеры (например Telegram), которые работают с большим объемом информации. Сюда же можно добавить все умные электронные устройства и бытовую технику. Разработчик на C++ — непростая профессия. Язык считается трудным для изучения, а чтобы на нем писать, важно уметь работать с алгоритмами. C++ стоит выбирать тем, кому нравится «железо» и интересно разбираться в том, как устроены компьютеры и электронные устройства. Есть одно точное выражение создателя этого языка, которым можно охарактеризовать программирование на C++: «C позволяет легко выстрелить себе в ногу; с C++ это сделать сложнее, но, когда вы это делаете, вы отстреливаете себе ногу целиком». Можно допустить одну небольшую ошибку, и программа упадет.

«IT-специалист с нуля» наш лучший курс для старта в IT
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам
4 116 ₽/мес 7 483 ₽/мес

Где используется C++
- ввысоконагруженной разработке — C++ используют для систем, на которые приходится большая нагрузка, а также есть требования к скорости;
- программировании встроенных систем (embedded systems) —микроконтроллеров, беспилотных автомобилей, умных часов, сенсоров и устройств, использующих технологию интернета вещей;
- геймдеве — игровой движок Unreal Engine работает на C++, язык используют и для проектов на других технологиях;
- создании операционных систем — C++ используют как системный язык, например чтобы писать прошивки для разной техники и дорабатывать существующие ОС: Windows, Linux, Mac OS и iOS, Android и др.;
- разработкеприкладногоПО— в браузерах, антивирусах, других сложных программах, где важно хорошее быстродействие и способность выдерживать нагрузку;
- созданииспециализированного ПО — например, в программах для различного оборудования, от софта для серверов до космических систем.
Причина, по которой C++ востребован именно в этих областях, — высокая эффективность. Если нужно написать код, который будет хорошо работать на слабом или узкоспециализированном железе, C++ незаменим. Язык кросс-платформенный, мощный и очень гибкий.
Читайте также Язык программирования C++: разбираемся и пишем простую программу
Особенности разработки на языке C++
При всех достоинствах C++ — сложный язык с высоким порогом входа.
- У C++ более низкий уровень, чем у большинства современных языков. Он все еще считается высокоуровневым, то есть отдаленным от «железа» и близким к человеку, но все же сохраняет возможность, например, напрямую работать с памятью. C++ не настолько уходит в человекопонятную абстракцию, как тот же JavaScript. Он может на довольно глубоком уровне работать с аппаратной частью компьютера. Поэтому важно понимать особенности работы «железа».
- В C++ нет автоматизации сборки мусора и других процессов. Многие вещи, которые в современных языках программирования за разработчика выполняют автоматические процессы, в C++ делаются вручную. Например, та же работа с памятью: в C++ разработчик выделяет память и управляет ей сам, а если ошибется, могут начаться утечки.
- В C++ много специфичных понятий и абстракций. Например, один из самых знаменитых типов данных языка C, перешедший и в C++, — указатель. Переменные этого типа буквально указывают на какое-то значение в памяти компьютера, и работать с ними нужно несколько иначе, чем с привычными переменными.
C++ совмещает преимущества низко- и высокоуровневых языков программирования.
Почему разработчик на C++ — особенный специалист
В большинстве других языков программирования разработчику не нужно знать, как работает техническая «начинка»: для сложных процессов есть библиотеки и уже готовые функции. В C++ программист должен понимать, как все устроено. Именно так он может писать эффективный и быстрый код.
В теории можно работать с C++ как с другими языками и не углубляться в детали, но на практике это бесполезно. Так теряется главный плюс C++ — возможность писать код, оптимизированный под «железо» и потому очень быстрый.
Хороший разработчик на C++ — человек, который, кроме самого языка программирования, разбирается в устройстве компьютера, алгоритмах и структурах данных, а еще умеет их применять. Для работы с языком важны познания в Computer Science: без них эффективные программы писать не получится.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Чем занимается C++-разработчик
Программисты на C++ создают от корпоративных систем до прошивок для космических спутников.
Это могут быть следующие программы:
- высокотехнологичные, с инновационными функциями, как, например, мощные нейросети;
- специализированные, то есть предназначенные, например, для микроконтроллера или системы на чипе;
- нагруженные, которые работают с большими объемами данных или занимаются интенсивными вычислениями — видеоигры, блокчейн-платформы и пр.
Это не исчерпывающий список. На C++, например, можно написать код для серверов известных сервисов. Музыкальная платформа Spotify использует для серверной части C++: сервис используют миллионы людей по всему миру, а музыка при этом должна проигрываться быстро и без задержек.
Что нужно знать разработчику на C++
Обычно для начала работы достаточно изучить синтаксис языка и работу с основными библиотеками, иметь общее представление об алгоритмах и структурах данных. C++ требует большего погружения и дополнительных знаний:
- алгоритмов. Как эффективнее реализовать то или иное действие, сократить количество вычислений и нагрузку на железо, заставить программу быстро работать — вопросы, с которыми C++-разработчик может сталкиваться часто. Без хорошего понимания алгоритмов не обойтись;
- информатики. Информатика, Computer Science, — это наука о компьютерах и о том, как они устроены. Разработчик на C++ взаимодействует с аппаратурой на более низком уровне, чем программисты на большинстве современных языков. Поэтому ему нужно разбираться в архитектуре компьютера и понимать, как адаптировать код к особенностям разного «железа»;
- математики. Без нее сложно реализовать алгоритмы, особенно в сферах, где многое связано с вычислениями: например в блокчейне или машинном обучении. Иногда разработчику могут пригодиться знания математики на уровне вуза.
Остальное зависит от сферы. Например, если разработчик решит развиваться в области встраиваемых систем, ему надо изучить низкоуровневые технологии: архитектуру систем, язык ассемблера, схемотехнику. Если захочет пойти в машинное обучение или анализ данных — теорию вероятности и математическую статистику.
В каждой сфере есть свои инструменты: в геймдеве это игровые движки, а в разработке десктопных приложений — фреймворки вроде Qt.
Сколько получают программисты на C++
Начинающему разработчику на C++ могут платить меньше, чем программистам на других языках. Но по мере набора опыта доход растет в десятки раз. Средняя зарплата разработчика на C++ в 2023 году — 162 000 рублей в месяц, а медианная — 131 000. Это данные по российским компаниям: в зарубежных оплата выше.
- Новичку готовы платить 40 000–80 000 рублей. Это немного для IT, но в целом соответствует средней зарплате джуна.
- Уже на уровне джуниор+ зарплата вырастает: от 80 000–100 000 рублей в месяц.
- Программисты среднего уровня получают от 100 000 до 200 000 рублей в месяц.
- Ведущие и узкоспециализированные разработчики могут получать от 300 000 рублей.
C++ нужно дольше учиться, и новичку не готовы платить больше, чем другим, — ему надо много узнать. Специалисты с опытом очень ценятся и могут зарабатывать большие деньги, особенно в сферах вроде телекоммуникаций или блокчейна.
Как стать C++-программистом и что для этого изучить
C++ не советуют изучать с нуля как первый язык программирования. Для многих он становится вторым или третьим после более простых языков вроде Python или JavaScript. Человек уже знает больше, лучше разбирается в IT, поэтому ему легче освоить сложную технологию. Но если вы готовы к вызовам, можно изучить C++ и первым языком.
Компьютерные науки. Их желательно освоить еще до знакомства с языком, потому что многое в C++будет сложно понять. Информатика рассказывает, как устроены компьютеры и данные, по какому принципу строится программное обеспечение, знакомит с алгоритмами и основными структурами. Например, тот же тип указателя проще понять, если человек уже знает, как данные хранятся в памяти компьютера.
Синтаксис языка. Синтаксис — это основные команды, типы, особенности работы с языком программирования. Базовые вещи можно освоить и без глубоких знаний в информатике, но чтобы понять больше, нужны дополнительные знания. Поэтому синтаксис C++ стоит изучать одновременно с компьютерными науками и подкреплять изученное на практике.
ООП и функциональное программирование. C++ отличается от C в первую очередь поддержкой объектно-ориентированного программирования. Многие программы пишутся на нем в парадигме ООП, поэтому даже начинающий разработчик должен быть с ней знаком и уметь реализовать принципы на C++. Cтоит побольше узнать про функциональное программирование. С++ нельзя назвать функциональным языком, но уклон в эту парадигму у него есть, и умение с ней работать может оказаться полезным.
Операционные системы и ПО для айтишников. C++ используют для системного программирования или создания программ, оптимизированных под конкретную архитектуру. Поэтому инструментов, которыми пользуется C++-разработчик, очень много: для Windows основной — это Microsoft Visual Studio, для macOS — Xcode IDE. Большой выбор инструментов для разработки на C++ есть в Linux. Например, Qt Creator, который стал очень популярным в последние годы. Вообще инструментов десятки, и выбирать можно любой для своего удобства.
Специализированные навыки. Все уже зависит от выбранной сферы. Например:
- в телекоме нужно разбираться в устройстве коммуникационных сетей, их архитектуре и инфраструктуре, знать, как эффективнее настраивать передачу данных;
- в машинном обучении понадобятся теория вероятности и статистика, умение работать с графиками и понимание теоретической базы ML. Пригодится знание специализированных фреймворков;
- в отрасли встраиваемых систем и низкоуровневого программирования понадобятся ассемблер, хорошее понимание «железа» и желательно навыки схемотехники;
- в разработке ОС нужно хорошо понимать, как устроены конкретная система и ее ядро, как в ней проходят процессы и хранятся данные;
- в геймдеве необходимо уметь работать хотя бы с одним игровым движком, понимать специфические особенности: как отрисовывается графика, рассчитывается физика предметов и так далее. Здесь не помешает знание пространственной геометрии и линейной алгебры.
Отталкивайтесь от навыков, которые перечислены в вакансиях по интересующему направлению. Например, если хотите писать на C++ игры, посмотрите, какие скилы требуют работодатели от новичков в геймдеве.
Если человек приходит в компанию на позицию джуна, то ему нужно знать лишь базовые конструкции языка — многого требовать не будут, так как понимают, что в течение полугода или года он значительно улучшит свои hard-скилы, главное, чтобы было желание.
Софт-скилы разработчика на C++
Для работы с C++ важны софт-скилы:
- аналитическое мышление — чтобы вдумчиво разбираться в сложных конструкциях;
- стремление постоянно учиться — в случае с C++ учиться и правда придется много;
- умение мыслить абстрактно — помогает решать нестандартные задачи;
- усидчивость — в C++ много ручной работы, нужно долго сидеть над задачей и концентрироваться на чем-то одном;
- хорошая память — вы ведь помните, что для работы с C++ нужно много дополнительных знаний?
Софт-скилы можно развить в процессе обучения и работы. Если на старте их не хватает, вы сможете усилить нужные навыки в будущем.
Стоит ли учить C++, если вы новичок
Обычно C++ рекомендуют изучать вторым или третьим языком. Иначе будет сложно погрузиться в структуры данных и устройство памяти компьютера. Но нет ничего невозможного. По C++ много документации, у него обширное сообщество, а основной синтаксис довольно простой; сложность — в необходимых дополнительных знаниях. Освоить C++ с нуля возможно, но понадобится много учиться.
Куда можно вырасти
Перспектив развития в IT-сфере для разработчика достаточно много. Если у человека есть опыт в программировании, то он со временем может перейти на другие позиции:
- project manager контролирует работу команды, общается с заказчиком, следит за сроками и отвечает за конечный результат;
- архитектор занимается построением IT-систем для решения бизнес-задач. Объясняет, как сделать программы правильнее и какие технологии использовать;
- product owner знает все о потребностях клиента и возможностях команды, о том, как их объединить;
- технический писатель занимается пользовательской документацией (FAQ, помощь), документацией внешних API и описанием внутренних систем проекта;
- тестировщик ищет ошибки и возможные сбои в программе, моделирует ситуации, которые могут возникнуть во время использования программ;
- DevOps-инженер умеет все и сразу: совмещает функции разработчика и сисадмина. Знает, какую архитектуру будет иметь приложение, и настроит сервера для его работы.
После C++ изучать другие языки программирования будет намного проще.