Files
CppDeveloperRoadmap/Grades/PreJunior.md
2021-05-21 22:14:45 +03:00

14 KiB
Raw Blame History

Pre-Junior C++

Кто это?

Это человек, который освоил базовый синтаксис языка и способен написать несложную программу, только при помощи базового синтаксиса языка C++ и стандартной библиотеки STL. Программа способна выполнять различные несложные действия, например:

  • выполняет арифметические вычисления;
  • работа с файлом: чтение и запись;
  • ввод данных с клавиатуры;
  • вывод данных в консольное окно;
  • и т.д.

Какие навыки ожидаются?

  • Может создать рабочий проект на C++;
  • Способен Арифметические операции;
  • Логические операторы и операторы цикла;
  • Стандартные потоки вводы/вывода;
  • Работа с файлами;
  • Работа с указателями и ссылками;
  • ООП в рамках C++: Наследование, полиформизм, инкапсуляция;
  • Понимает процесса компиляции и сборки программы на C++.

Что ожидается по умению написания кода?

  • Способность создать и собрать небольшой проект при помощи одной из популярных IDE, например Visual Studio или Qt Creator;
  • Умение пользоваться отладчиком в рамках IDE.

Что ожидается по общим знаниям?

  • Работа с Git;
  • Умение составлять несложные алгоритмы: логические или арифметические;
  • Умение работать с одной из популярных IDE (Integrated Development Environement) или текстовым редактором: MS Visual Studio, Qt Creator, Visual Studio Code.

Что ожидается по коммуникативным навыкам?

  • Желание учиться
  • Умение составить запрос на русском языке, чтобы найти ответ на проблему в поисковике
  • Умение составлять и задавать вопросы коллегам, если не получается найти решение самостоятельно
  • Желание работать в команде

С чего же мне начать?

  • Прежде чем изучать язык C++, рекомендуется начать свое погружение со следующей книги: Чарльз Петцольд - Код. Тайный язык информатики (https://www.ozon.ru/context/detail/id/125884/)

    Данная книга расскажет вам об устройстве компьютера на простом языке. Здесь отсутствуют какие-либо сложные технические или академические детали. Книга актуальна и по сей день, т.к. содержит в себе основы основ, которые вряд ли потеряют свою актуальность в ближайшие десятилетия. Она познакомит вас с миром компьютеров, а также объяснит их устройство, что поможет вам лучше понять фундаментальные идеи языка C++.

  • Если вы начинаете изучать язык самостоятельно, то порекомендую вам выполнять разработку своих первых программ или упражнений в ОС Windows в IDE Microsoft Visual Studio (Community Edition). На сегодняшний день, это наиболее дружелюбная IDE для новичков, как в установке, так и при ее использовании. Это позволит вам сконцентрироваться непосредственно на изучении языка, а не на борьбе с рабочим окружением. На сайте компании Майкрософт вы найдете небольшой учебник, который вам расскажет, как установить Visual Studio, создать свой первый консольный проект и написать первое полноценное приложение (консольный калькулятор: https://docs.microsoft.com/ru-ru/cpp/build/vscpp-step-0-installation?view=msvc-160

  • Есть большое количество книг, по которым можно начать свое изучение языка C++. К сожалению, многие из них безвозвратно устарели, либо написаны слишком сложно. К счастью, есть наиболее актуальная и дружелюбная книга, с которой стоит начать свой путь изучения C++: Стивен Прата - Язык программирования C++. Лекции и упражнения (шестое издание) (https://www.ozon.ru/product/yazyk-programmirovaniya-c-lektsii-i-uprazhneniya-147417584/?utm_source=google&utm_medium=cpc&utm_campaign=RF_Product_Shopping_Books_super&gclid=CjwKCAjw7diEBhB-EiwAskVi11zEQ2QeqLjT8AEBCYC5IWzgpdgLIErY3c7eLfgnPSFic9M8Eh2pPRoCSHIQAvD_BwE)

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

  • В дополнение к учебнику, стоит порекомендовать следущие видеолекции:

    • Илья Мещерин
    • Тимофей Хирьянов

Рекомендации и советы

  • На сегдняшний день не существует "серебряной пули", которая поможет вам выучить C++ за день/неделю/месяц при помощи курсов, роликов на YouTube т.д. Будьте готовы к самостоятельной работе и изучению материала из всевозможных источников на протяжении нескольких месяцев, прежде чем вы сможете пройти собеседование и получить свой первый оффер на работу.
  • Изучайте язык в своем ритме и темпе, а также в любом возрасте 🙂. Не ведитесь на подобные истории: "я программирую с пеленок", "паяльником владею с яслей", "вывожу из запоя/снимаю порчу при помощи ассемблерного кода", "не служил - не мужик" и т.д. Большинство подобных историй - это систематическая ошибка выжившего, или попытка "потешить свое самолюбие" за ваш счет. У всех вас достаточно способностей, чтобы научиться программированию, в том числе с нуля, в том числе и изучить C++. Также полно молодых ребят, которые сами хотели бы видеть меньше духоты в C++ сообществе. Они повсюду и готовы прийти вам на помощь! 🙂
  • Практика, и только практика даст вам возможность освоить C++! Без регулярного написания кода, большая часть того, что вы прочитаете или услышите - забудется.
  • Не пытайтесь писать идеальный код. Ваша основная задача - написание РАБОЧЕГО кода, который делает ровно то, что от вас требуется. Вы должны научиться "общаться" с компьютером, пусть и неэлегантно. Это сродни изучению иностранных языков. Сначала вы говорите много и небрежно, но со временем, ваш навык оттачивается, т.к. вы лучше чувствуете грамматику, увеличиваете свой словарный запас и т.д.
  • Помните, что многие из опытных разработчиков, тоже испытывали проблемы и застревали в "очевидных" местах. Просто возььмите паузу, позанимайтесь чем-то другим, а через какое-то время возврщайтесь к проблеме.
  • На первых порах не стоит концентрироваться на таких ресурсах, как Leetcode или CodeWars. Цель этих порталов - отработать навыки использования классических алгоритмов и структур данных. Эти площадки спроектированы таким образом, чтобы максимально отгородить вас от нюансов языков программирования. На первых порах, это не принесет вам особой пользы, лучше сконцентрируйтесь на самом языке и его возможностях.
  • Большинство проблем, с которыми вы столкнетесь, скорее всего уже были решены до вас. Если вы не можете найти ответ в интернете, попробуйте переформулировать запрос иным образом. Рано или поздно вы придете к правильному ответу. Если после этого ответа так и нет, то попробуйте переписать свой код более простым путем/пересоздать проект и т.д. Помните, вы должны изучать язык, а не бороться с рабочим окружением на первых пораъ. Борьба с коружением может вас привести к полному разочарованию.
  • Если чувствуете, что не понимаете какую-то из тем, поищите альтернативные источники, которые объясняют эту же тему. Сегодня можно найти полно материала, и в виде статей, и виде роликов на youtube. Выберете и используйте наиболее комфортный формат для вас.
  • Найдите единомышленников, которые также начинают свой путь и объедините усилия в изучении. Так вам будет интереснее погружаться в изучение языка, а также делиться знаниями и опытом друг с другом. Это вам также поможет выработать в себе навык командной работы. Времена "вольных художников" подошли к концу. Практически везде, вам придется работать в режиме командной игры.
  • Большинство проблем проще искать на английском языке, но если ваш текущий уровень владения им не очень высокий - не мучайте себя. Так вы можете слишком быстро потерять веру в себя и разочароваться. Большинство проблем, с которыми вы столкнетесь, спокойно можно отыскать на русском языке.
  • Если чувствуете, что ваш английский слабоват - то лучше начните его изучение с более простых и приятных вещей: сериалы, видеоигры, художественные книги, новостные сайты или статьи на интересующие вас темы. За несколько месяцев можно значительно улучшить навыки восприятия информации на английском языке.