Files
CppDeveloperRoadmap/Russian/Grades/PreJunior.md
2021-10-19 21:09:37 +03:00

52 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pre-Junior C++
## Кто это?
Это человек, который освоил синтаксис языка и способен написать несложную программу без использования сторонних библиотек. Программа способна выполнять различные действия, например:
- выполняет арифметические вычисления
- взаимодействует с файлами: чтение и запись
- ожидает ввод данных с клавиатуры
- выводит результаты работы и иные данные данные в консольное окно
- и т.д.
## Что ожидается по умению написания кода?
- Способность создать и собрать небольшой рабочий проект на C++ при помощи одной из IDE: Visual Studio, Qt Creator и т.д.
- Умение пользоваться отладчиком при помощи IDE
- Понимание процесса компиляции и сборки программы на C++
- Способность написать приложение, содержащее арифметические или логические операции и алгоритмы, условия и циклы
- Умение написать приложение по работе со стандартным потоком ввода/вывода;
- Умение работать с указателями и ссылками
- Знание из какого вида памяти состоит приложение
- Базовое понимание ООП в рамках C++: наследование, полиморфизм, инкапсуляция
## Что ожидается по общим навыкам?
- Желание учиться и впитывать новые знания
- Желание разбираться в возникающих проблемах
- Умение составить запрос на русском языке, чтобы найти ответ на проблему в поисковике или соответствующей литературе
## Рекомендации и советы
### Про обучение
- Не существует "серебряной пули", которая поможет вам выучить C++ за день/неделю/месяц. Будьте готовы к продолжительной самостоятельной работе по изучению материала из различных источников, прежде чем вы сможете пройти собеседование, и получить свой первый оффер.
- Если чувствуете, что не понимаете какую-то тему, поищите альтернативные источники.
- Практика и только практика даст вам возможность освоить C++! Без регулярного написания кода, большая часть того, что вы прочитаете или услышите - забудется.
- Не пытайтесь писать идеальный код. Ваша основная задача - написание много РАБОЧЕГО кода, который делает ровно то, что от вас требуется. Вы должны научиться "общаться" с компьютером. Это сродни изучению иностранных языков. Сначала вы говорите много и небрежно, но со временем ваш навык оттачивается, начинаете лучше чувствовать грамматику, увеличиваете свой словарный запас и т.д.
- Не хватайтесь сразу за большую задачу, например: "написать свою игру". Скорее всего вам не хватит знаний и опыта на первых порах, чтобы осилить задачу в одиночку. Такого рода путь быстро демотивирует, что в итоге может привести к разочарованию в себе и своих спосбностях. В итоге вы забросите свое обучение. Идите по пути "от простого к сложному", постепенно придумывая себе все более сложные задачки.
- На первых порах не стоит концентрироваться на таких ресурсах, как Leetcode или CodeWars. Цель этих порталов - отработать навыки применения классических алгоритмов и структур данных. Эти площадки спроектированы таким образом, чтобы максимально огородить вас от нюансов языков программирования. На первых порах это не принесет вам особой пользы, лучше сконцентрируйтесь на самом языке и его возможностях.
### Про мотивацию
- Учитесь в своем ритме, а также в любом возрасте! Не ведитесь на истории: "я программирую с пеленок", "паяльником владею с яслей", "вывожу из запоя/снимаю порчу при помощи ассемблера". Большинство подобных историй - это [систематическая ошибка выжившего](https://ru.wikipedia.org/wiki/Систематическая_ошибка_выжившего) или попытка потешить свое самолюбие за ваш счет. У вас достаточно способностей, чтобы научиться программированию, в том числе с нуля, в том числе и на C++!
- Большинство проблем, с которыми вы столкнетесь, скорее всего уже решены до вас. Если вы не можете найти ответ в интернете, попробуйте переформулировать запрос иным образом. Рано или поздно вы придете к правильному ответу. Если после этого ответа так и нет, то попробуйте решить задачу более простым путем.
- Помните, вы должны изучать язык, а не бороться с рабочим окружением на первых порах. Борьба с окружением может вас привести к полному разочарованию и потере мотивации.
- Помните, что многие опытные разработчики тоже встречают проблемы и застревают в "очевидных" местах. Просто возьмите паузу, позанимайтесь чем-то другим, а через какое-то время возвращайтесь к задаче.
- Найдите единомышленников, которые также начинают свой путь. Так вам будет интереснее погружаться в изучение языка, а также делиться знаниями и опытом друг с другом. Это также поможет выработать в себе навык командной работы. Времена "вольных художников" подошли к концу. Практически везде вам придется работать в команде.
- Попробуйте также найти себе опытного ментора. Под его руководством вы сможете избежать различные ловушки и потерю времени на них.
### Про английский язык
- Большинство проблем проще искать на английском языке, но если текущий уровень владения не очень высокий - не мучайте себя. Так вы можете быстро потерять мотивацию и разочароваться. Большая часть проблем в начале пути, с которыми вы столкнетесь, спокойно можно отыскать и на русском языке.
- Если чувствуете, что ваш английский слабоват, то лучше начните его изучение с более простых и приятных вещей: сериалы, видеоигры, художественные книги, новостные сайты или статьи на интересующие темы. За несколько месяцев можно значительно улучшить навыки восприятия информации на английском языке.