Files
CppDeveloperRoadmap/SelfIdentification.md
2021-08-30 16:07:25 +03:00

43 lines
8.5 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.

# А точно C++?
Первое, о чем действительно стоит подумать: а для чего вам нужен C++?
Не смотрите на C++ в следующей парадигме: "Если вам дали в руки молоток, то всё вокруг становится гвоздями". Язык имеет конкретные ниши применения. Прежде чем инвестировать свое время и силы в изучение, попробуйте поискать и погрузиться в сферы применения языка. Найдите ту, которая заинтересует именно вас. Вот некоторый ряд причин, почему это стоит сделать "на берегу":
- Многие сферы разработки выглядят несколько иначе, в отличие от их романтизированного образа. Например, популярное направление - разработка игр, имеет следующие темные стороны: кранчи (переработки в режиме - живем в офисе следующие полгода), отсутствие внятного менеджмента, работа в "стол"/на выброс и т.д.
- Во многих сферах может быть популярен иной инструментарий. Например, в машинном обучении наиболее распространен язык Python и специализированные библиотеки.
Стоит внимательно присмотреться к той сфере, о которой вы имеете только общее представление. Возможно она окажется не столь заманчивой и интересной после детального погружения. Потратьте немного времени в исследовании и поиске той ниши, которая вам действительно понравится.
Второе, на что хочется обратить внимание: язык C++ требует больших временных инвестиций, а также сильную мотивацию. Его не получится выучить по универсальной формуле: "24 часа", "7 дней", "1 месяц". Если вы видите книгу с подобным обещанием - выбросите и забудьте о ней. Вам придется взять какой-либо общепризнанный "кирпич" и прочитать его целиком, попутно выполняя упражнения. А потом ещё несколько "кирпичей" поменьше, чтобы освоить распространённые практики и подходы. По-другому освоить C++ вряд ли получится. На YouTube есть неплохие записи лекций по C++, но информации из них вряд ли хватит, чтобы освоить язык до промышленного уровня владения.
<img src="Pics/SelfIdentification/ErrorCpp.jpg" width="400" align="middle">
**Вывод №1:** Если вы не уверены в своих силах или не готовы к классическому методу обучения по книгам, то вам стоит сделать выбор в пользу более популярных языков программирования. В них вы также сможете найти массу интересных задач для себя в различных сферах. К сожалению C++ - это не тот язык, который позволяет вольности.
<img src="Pics/SelfIdentification/LearnCppInOneVideo.jpg" width="400" align="middle">
# Я уже знаю C/Java/Python/etc., могу ли я сразу начать писать на C++?
У многих новичков складывается ощущение, что С++ изучается быстро и непринужденно по ряду следующих причин:
- наличие лекций в ВУЗе с выполнением лабораторных работ;
- знание языка Си или парадигмы "Си с классами";
- знание одного из ООП языков: Java, C#, etc.
- знание Python, JavaScript и других распространенных языков.
К сожалению полученный выше опыт крайне тяжело масштабируется на промышленное примениние C++. Недостаточно просто послушать семестр лекций, изучить Си/Python/etc. и сразу же отмасштабировать знания на C++. Почему же?
- Если говорить про образование в ВУЗах, чаще всего вам дается только базовый синтаксис языка, который позволит писать простенькие программки для выполнения несложных вычислений. Проще говоря - вас учат собрать калькулятор на коленке и не более. Данных знаний и навыков недостаточно, чтобы выжить в промышленном программировании.
- Если говорить о Си, он является подмножеством C++, но не раскрывает истинной идеи и сути C++. Есть популярное мнение, что сначала изучите Си, а потом переходите к плюсам. Так вот, скорее всего, это вам даже больше навредит на первых порах, а также породит путаницу между концепциями двух РАЗНЫХ языков. Ваша первостепенная задача - получить удовольствие от написания первых программ, а не следовать олдскульным канонам. Потому, если есть возможность проигнорировать Си, то просто сделайте это. Все необходимое для работы с подмножеством Си вы узнаете из книг по C++.
- Если же говорить об опыте в других языках: C++ - мультипарадигменный язык. Он содержит в себе сочетание разнообразных парадигм, таких как: процедурное, обобщенное, ООП и т.д. Это не значит, что полученный опыт в других языках можно смело выкидывать на помойку. Он облегчит понимание существующих концепций в плюсах, но не поможет уловить тонны нюансов и деталей.
<img src="Pics/SelfIdentification/CppPython.jpg" width="400" align="middle">
**Вывод №2:** лучший совет, который можно дать - забудьте всё, что вы знаете о других языках, и начните изучение C++ с чистой головой. :)
# Как учиться?
Главное, что нужно усвоить для себя - ВЫ и только ВЫ отвечаете за себя, свое будущее. Только вы заинтересованы стать профессионалом в выбранной сфере. Безусловно, вокруг вас полно людей, которые с радостью помогут советом, но никто не придумает за вас конкретные задачи или программу обучения. Ваш лучший друг в этом деле - вы и Google. Учитесь учиться и искать ответы на возникающие вопросы. К счастью, ваше будущее в IT исключительно в ваших руках и упорстве. Эта сфера награждает тех, кто упорно идет к своей цели. Удачи!