mirror of
https://github.com/salmer/CppDeveloperRoadmap.git
synced 2025-12-17 12:34:37 +03:00
Minor improvements for grades
This commit is contained in:
@@ -8,27 +8,27 @@
|
|||||||
|
|
||||||
## Что ожидается по умению написания кода?
|
## Что ожидается по умению написания кода?
|
||||||
|
|
||||||
- Компилятор и язык его больше не пугают и практически не приносят сюрпризов, а если и приносят, то способен самостоятельно генерировать гипотезы, проверять их и копать вглубь;
|
- Компилятор и язык его больше не пугают и практически не приносят сюрпризов, а если и приносят, то способен самостоятельно генерировать гипотезы, проверять их и копать вглубь
|
||||||
- Ориентируется в базовых концепциях языка и понимает, какие ещё языки существуют и чем они отличаются;
|
- Ориентируется в базовых концепциях языка и понимает, какие ещё языки существуют и чем они отличаются
|
||||||
- Пишет понятный и поддерживаемый код;
|
- Пишет понятный и поддерживаемый код
|
||||||
- Знает базовые принципы дизайна и на их основе способен принять техническое решение;
|
- Знает базовые принципы дизайна и на их основе способен принять техническое решение
|
||||||
- Понимает не только язык программирования, но и его технический контекст, то есть понимает весь технический цикл, через который проходит код и ориентируется в инструментах, которые помогают этот цикл поддерживать:
|
- Понимает не только язык программирования, но и его технический контекст, то есть понимает весь технический цикл, через который проходит код и ориентируется в инструментах, которые помогают этот цикл поддерживать:
|
||||||
- Написание кода (IDE, текстовые редакторы, практики программирования, качество кода);
|
- Написание кода (IDE, текстовые редакторы, практики программирования, качество кода)
|
||||||
- Хранение исходного кода и продуктов (системы контроля версий, пакетные менеджеры, серверы);
|
- Хранение исходного кода и продуктов (системы контроля версий, пакетные менеджеры, серверы)
|
||||||
- Компиляция (компиляторы, системы сборки, библиотеки);
|
- Компиляция (компиляторы, системы сборки, библиотеки)
|
||||||
- Тестирование (фреймворки, стратегии тестирования);
|
- Тестирование (фреймворки, стратегии тестирования)
|
||||||
- Доставка;
|
- Доставка
|
||||||
- Выполнение (операционные системы);
|
- Выполнение на целевой системе
|
||||||
- Глубже понимает и знает базовую информатику (структуры данных, конечные автоматы, алгоритмы).
|
- Глубже понимает и знает базовую информатику (структуры данных, конечные автоматы, алгоритмы)
|
||||||
|
|
||||||
## Что ожидается по общим навыкам?
|
## Что ожидается по общим навыкам?
|
||||||
|
|
||||||
- Способен самостоятельно ориентироваться в технической части проекта и принимать решения, которые вписываются в него;
|
- Способен самостоятельно ориентироваться в технической части проекта и принимать решения, которые вписываются в него
|
||||||
- Понимает, когда нужно остановиться, чтобы не переусложнить решение;
|
- Понимает, когда нужно остановиться, чтобы не переусложнить решение
|
||||||
- Имеет практический опыт работы в команде;
|
- Имеет практический опыт работы в команде
|
||||||
- Способен формулировать и доносить идеи и мысли до других членов команды;
|
- Способен формулировать и доносить идеи и мысли до других членов команды
|
||||||
- Имеет практический опыт работы по различным методологиям: Kanban, Agile/Scrum, Waterfall и т.д.
|
- Имеет практический опыт работы по различным методологиям: Kanban, Agile/Scrum, Waterfall и т.д.
|
||||||
- Помогает другим членам команды.
|
- Помогает другим членам команды
|
||||||
|
|
||||||
## Рекомендации и советы
|
## Рекомендации и советы
|
||||||
|
|
||||||
|
|||||||
@@ -7,19 +7,21 @@
|
|||||||
- Middle;
|
- Middle;
|
||||||
- Senior.
|
- Senior.
|
||||||
|
|
||||||
Большинство компаний имеет свое видение по набору обязанностей и компетенций, предъявлемые к разработчку. Очень легко встретить ситуацию: работая в одной компании, вы можете быть Senior разработчиком, а в другой - еле-еле дотягиваете до уровня Middle. Тем не менее, можно описать и охарактеризовать общие ожидания для любого уровня в подавляющем большинстве компаний. В дальнейшем, будет использоваться упрощенная классификация, описанная выше.
|
Многие компании имеют свое видение по набору обязанностей и компетенций, предъявлемые к разработчкам разного уровня. Очень легко встретить ситуацию: работая в одной компании, вы можете быть Senior разработчиком, а в другой - еле-еле дотянете до уровня Middle. Тем не менее можно описать и охарактеризовать общие ожидания для любого уровня во многих компаниях. В дальнейшем, будет использоваться упрощенная классификация, описанная выше.
|
||||||
|
|
||||||
**Пример:** Ознакомиться с принятыми классификациями уровней в различных компаниях, можно здесь: https://www.levels.fyi/
|
**Пример:** Ознакомиться с принятыми классификациями в различных компаниях, можно здесь: https://www.levels.fyi/
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
# Описание
|
## Описание
|
||||||
|
|
||||||
[Pre-Junior C++](PreJunior.md)
|
В нижеперечисленных статьях мы попытались дать осредненное описание для кажого уровня разработчика:
|
||||||
|
|
||||||
[Junior C++](Junior.md)
|
- [Pre-Junior C++](PreJunior.md)
|
||||||
|
|
||||||
[Middle C++](Middle.md)
|
- [Junior C++](Junior.md)
|
||||||
|
|
||||||
[Senior C++](Senior.md)
|
- [Middle C++](Middle.md)
|
||||||
|
|
||||||
|
- [Senior C++](Senior.md)
|
||||||
|
|
||||||
|
|||||||
@@ -3,63 +3,48 @@
|
|||||||
## Кто это?
|
## Кто это?
|
||||||
|
|
||||||
Это человек, который освоил синтаксис языка и способен написать несложную программу без использования сторонних библиотек. Программа способна выполнять различные действия, например:
|
Это человек, который освоил синтаксис языка и способен написать несложную программу без использования сторонних библиотек. Программа способна выполнять различные действия, например:
|
||||||
- выполняет арифметические вычисления;
|
- выполняет арифметические вычисления
|
||||||
- взаимодействует с файлами: чтение и запись;
|
- взаимодействует с файлами: чтение и запись
|
||||||
- ожидает ввод данных с клавиатуры;
|
- ожидает ввод данных с клавиатуры
|
||||||
- выводит результаты работы и иные данные данные в консольное окно;
|
- выводит результаты работы и иные данные данные в консольное окно
|
||||||
- и т.д.
|
- и т.д.
|
||||||
|
|
||||||
|
|
||||||
## Что ожидается по умению написания кода?
|
## Что ожидается по умению написания кода?
|
||||||
|
|
||||||
- Способность создать и собрать небольшой рабочий проект на C++ при помощи одной из IDE: Visual Studio, Qt Creator и т.д.;
|
- Способность создать и собрать небольшой рабочий проект на C++ при помощи одной из IDE: Visual Studio, Qt Creator и т.д.
|
||||||
- Умение пользоваться отладчиком при помощи IDE;
|
- Умение пользоваться отладчиком при помощи IDE
|
||||||
- Понимание процесса компиляции и сборки программы на C++;
|
- Понимание процесса компиляции и сборки программы на C++
|
||||||
- Способность написать приложение, содержащее арифметические или логические операции и алгоритмы, условия и циклы;
|
- Способность написать приложение, содержащее арифметические или логические операции и алгоритмы, условия и циклы
|
||||||
- Умение написать приложение по работе со стандартным потоком ввода/вывода;
|
- Умение написать приложение по работе со стандартным потоком ввода/вывода;
|
||||||
- Умение работать с указателями и ссылками;
|
- Умение работать с указателями и ссылками
|
||||||
- Знание из какого вида памяти состоит приложение;
|
- Знание из какого вида памяти состоит приложение
|
||||||
- Базовое понимание ООП в рамках C++: наследование, полиморфизм, инкапсуляция.
|
- Базовое понимание ООП в рамках C++: наследование, полиморфизм, инкапсуляция
|
||||||
|
|
||||||
|
|
||||||
## Что ожидается по общим навыкам?
|
## Что ожидается по общим навыкам?
|
||||||
|
|
||||||
- Желание учиться и впитывать новые знания;
|
- Желание учиться и впитывать новые знания
|
||||||
- Желание разбираться в возникающих проблемах;
|
- Желание разбираться в возникающих проблемах
|
||||||
- Умение составить запрос на русском языке, чтобы найти ответ на проблему в поисковике или в соответствующей литературе;
|
- Умение составить запрос на русском языке, чтобы найти ответ на проблему в поисковике или соответствующей литературе
|
||||||
|
|
||||||
|
|
||||||
## С чего же начать?
|
|
||||||
|
|
||||||
- Прежде чем начать изучения языка, рекомендуется начать свое погружение со следующей книги: **Чарльз Петцольд - Код. Тайный язык информатики:** [Ozon Books](https://www.ozon.ru/context/detail/id/125884/)
|
|
||||||
|
|
||||||
Данная книга расскажет вам об устройстве компьютера простым языком. Здесь отсутствуют какие-либо сложные технические или академические детали. Книга содержит в себе основы основ, которые вряд ли потеряют свою актуальность. Она познакомит вас с миром компьютеров, а также объяснит их устройство, что поможет вам лучше понять фундаментальные идеи языка C++.
|
|
||||||
|
|
||||||
- Если вы начинаете изучать язык самостоятельно, то порекомендую вам выполнять разработку первых программ или упражнений в IDE: Microsoft Visual Studio (Community Edition). На сегодняшний день, это наиболее дружелюбная IDE к новичкам, как в установке, так и в использовании (и бесплатна!). Это позволит сконцентрироваться непосредственно на изучении языка, а не на борьбе с рабочим окружением. На сайте компании вы найдете небольшой учебник, который расскажет, как установить Visual Studio, создать консольный проект и написать первое приложение: [MSDN](https://docs.microsoft.com/ru-ru/cpp/build/vscpp-step-0-installation?view=msvc-160)
|
|
||||||
|
|
||||||
- Есть много книг, по которым можно начать изучение языка. К сожалению, многие из них безвозвратно устарели, либо написаны слишком сложно. Но все-таки есть наиболее актуальная и дружелюбная книга, с которой стоит начать свой путь изучения C++: **Стивен Прата - Язык программирования C++. Лекции и упражнения (шестое издание):** [Ozon Books](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++ за день/неделю/месяц. Будьте готовы к самостоятельной работе и изучению материала из различных источников в течение продолжительного времени, прежде чем вы сможете пройти собеседование, и получить свой первый оффер.
|
- Не существует "серебряной пули", которая поможет вам выучить C++ за день/неделю/месяц. Будьте готовы к продолжительной самостоятельной работе по изучению материала из различных источников, прежде чем вы сможете пройти собеседование, и получить свой первый оффер.
|
||||||
- Если чувствуете, что не понимаете какую-то тему, поищите альтернативные источники.
|
- Если чувствуете, что не понимаете какую-то тему, поищите альтернативные источники.
|
||||||
- Практика и только практика даст вам возможность освоить C++! Без регулярного написания кода, большая часть того, что вы прочитаете или услышите - забудется.
|
- Практика и только практика даст вам возможность освоить C++! Без регулярного написания кода, большая часть того, что вы прочитаете или услышите - забудется.
|
||||||
- Не пытайтесь писать идеальный код. Ваша основная задача - написание РАБОЧЕГО кода, который делает ровно то, что от вас требуется. Вы должны научиться "общаться" с компьютером. Это сродни изучению иностранных языков. Сначала вы говорите много и небрежно, но со временем, ваш навык оттачивается, начинаете лучше чувствовать грамматику, увеличиваете свой словарный запас и т.д.
|
- Не пытайтесь писать идеальный код. Ваша основная задача - написание много РАБОЧЕГО кода, который делает ровно то, что от вас требуется. Вы должны научиться "общаться" с компьютером. Это сродни изучению иностранных языков. Сначала вы говорите много и небрежно, но со временем ваш навык оттачивается, начинаете лучше чувствовать грамматику, увеличиваете свой словарный запас и т.д.
|
||||||
- На первых порах не стоит концентрироваться на таких ресурсах, как Leetcode или CodeWars. Цель этих порталов - отработать навыки использования классических алгоритмов и структур данных. Эти площадки спроектированы таким образом, чтобы максимально отгородить вас от нюансов языков программирования. На первых порах, это не принесет вам особой пользы, лучше сконцентрируйтесь на самом языке и его возможностях.
|
- На первых порах не стоит концентрироваться на таких ресурсах, как Leetcode или CodeWars. Цель этих порталов - отработать навыки применения классических алгоритмов и структур данных. Эти площадки спроектированы таким образом, чтобы максимально огородить вас от нюансов языков программирования. На первых порах это не принесет вам особой пользы, лучше сконцентрируйтесь на самом языке и его возможностях.
|
||||||
|
|
||||||
### Про мотивацию
|
### Про мотивацию
|
||||||
- Учитесь в своем ритме, а также в любом возрасте! Не ведитесь на истории: "я программирую с пеленок", "паяльником владею с яслей", "вывожу из запоя/снимаю порчу при помощи ассемблера". Большинство подобных историй - это [систематическая ошибка выжившего](https://ru.wikipedia.org/wiki/Систематическая_ошибка_выжившего), или попытка потешить свое самолюбие за ваш счет. У вас достаточно способностей, чтобы научиться программированию, в том числе с нуля, в том числе и на C++!
|
- Учитесь в своем ритме, а также в любом возрасте! Не ведитесь на истории: "я программирую с пеленок", "паяльником владею с яслей", "вывожу из запоя/снимаю порчу при помощи ассемблера". Большинство подобных историй - это [систематическая ошибка выжившего](https://ru.wikipedia.org/wiki/Систематическая_ошибка_выжившего) или попытка потешить свое самолюбие за ваш счет. У вас достаточно способностей, чтобы научиться программированию, в том числе с нуля, в том числе и на C++!
|
||||||
- Большинство проблем, с которыми вы столкнетесь, скорее всего уже решены до вас. Если вы не можете найти ответ в интернете, попробуйте переформулировать запрос иным образом. Рано или поздно вы придете к правильному ответу. Если после этого ответа так и нет, то попробуйте переписать свой код более простым путем/пересоздать проект и т.д. Помните, вы должны изучать язык, а не бороться с рабочим окружением на первых порах. Борьба с окружением может вас привести к полному разочарованию и потере мотивации.
|
- Большинство проблем, с которыми вы столкнетесь, скорее всего уже решены до вас. Если вы не можете найти ответ в интернете, попробуйте переформулировать запрос иным образом. Рано или поздно вы придете к правильному ответу. Если после этого ответа так и нет, то попробуйте решить задачу более простым путем.
|
||||||
- Помните, что многие опытные разработчики тоже встречают проблемы и застревают в "очевидных" местах. Просто возьмите паузу, позанимайтесь чем-то другим, а через какое-то время возвращайтесь к проблеме.
|
- Помните, вы должны изучать язык, а не бороться с рабочим окружением на первых порах. Борьба с окружением может вас привести к полному разочарованию и потере мотивации.
|
||||||
- Найдите единомышленников, которые также начинают свой путь. Так вам будет интереснее погружаться в изучение языка, а также делиться знаниями и опытом друг с другом. Это также поможет выработать в себе навык командной работы. Времена "вольных художников" подошли к концу. Практически везде, вам придется работать в команде.
|
- Помните, что многие опытные разработчики тоже встречают проблемы и застревают в "очевидных" местах. Просто возьмите паузу, позанимайтесь чем-то другим, а через какое-то время возвращайтесь к задаче.
|
||||||
|
- Найдите единомышленников, которые также начинают свой путь. Так вам будет интереснее погружаться в изучение языка, а также делиться знаниями и опытом друг с другом. Это также поможет выработать в себе навык командной работы. Времена "вольных художников" подошли к концу. Практически везде вам придется работать в команде.
|
||||||
|
- Попробуйте также найти себе опытного ментора. Под его руководством вы сможете избежать различные ловушки и потерю времени на них.
|
||||||
|
|
||||||
### Про английский язык
|
### Про английский язык
|
||||||
- Большинство проблем проще искать на английском языке, но если ваш текущий уровень владения им не очень высокий - не мучайте себя. Так вы можете слишком быстро потерять мотивацию и разочароваться. Большинство проблем на первых порах, с которыми вы столкнетесь, спокойно можно отыскать и на русском языке.
|
- Большинство проблем проще искать на английском языке, но если ваш текущий уровень владения не очень высокий - не мучайте себя. Так вы можете быстро потерять мотивацию и разочароваться. Большинство проблем на первых порах, с которыми вы столкнетесь, спокойно можно отыскать и на русском языке.
|
||||||
- Если чувствуете, что ваш английский слабоват, то лучше начните его изучение с более простых и приятных вещей: сериалы, видеоигры, художественные книги, новостные сайты или статьи на интересующие вас темы. За несколько месяцев можно значительно улучшить навыки восприятия информации на английском языке.
|
- Если чувствуете, что ваш английский слабоват, то лучше начните его изучение с более простых и приятных вещей: сериалы, видеоигры, художественные книги, новостные сайты или статьи на интересующие вас темы. За несколько месяцев можно значительно улучшить навыки восприятия информации на английском языке.
|
||||||
|
|||||||
@@ -6,17 +6,17 @@
|
|||||||
|
|
||||||
## Что ожидается по умению написания кода?
|
## Что ожидается по умению написания кода?
|
||||||
|
|
||||||
- Способен переводить задачи с языка бизнеса на язык разработки и декомпозировать задачи;
|
- Способен переводить задачи с языка бизнеса на язык разработки и декомпозировать задачи
|
||||||
- Способен вести диалог с бизнесом и объяснять технические детали и сложности людям вне команды;
|
- Способен вести диалог с бизнесом и объяснять технические детали и сложности людям вне команды
|
||||||
- Способен не только принять решение о дизайне, но и создать архитектуру компонента/приложения;
|
- Способен не только принять решение о дизайне, но и создать архитектуру компонента/приложения
|
||||||
- Понимание и использование архитектурных принципов.
|
- Понимание и использование архитектурных принципов
|
||||||
|
|
||||||
## Что ожидается по общим навыкам?
|
## Что ожидается по общим навыкам?
|
||||||
|
|
||||||
- Высокий навык коммуникации;
|
- Высокий навык коммуникации
|
||||||
- Способен при необходимости самостоятельно собрать требования;
|
- Способен при необходимости самостоятельно собрать требования
|
||||||
- Помогает развивать членов команды;
|
- Помогает развивать членов команды
|
||||||
|
|
||||||
## Рекомендации и советы
|
## Рекомендации и советы
|
||||||
|
|
||||||
В зависимости от специфики компании и от ваших желаний путь дальнейшего развития лежит либо в освоении новых технологий и технических навыков, требующихся в выбранной вами области знаний (например, специальные разделы математики, физика и т.д. - путь технического эксперта), либо в область управления и взаимодействия с людьми (техлид, тимлид, ПМ и т.д.). Choose wisely 🙂
|
В зависимости от специфики компании и от ваших желаний путь дальнейшего развития лежит либо в освоении новых технологий и технических навыков, требующихся в выбранной вами области знаний (например, специальные разделы математики, физика и т.д. - путь технического эксперта), либо в область управления и взаимодействия с людьми (техлид, тимлид, ПМ и т.д.). Choose wisely. 🙂
|
||||||
|
|||||||
Reference in New Issue
Block a user