Проект: Дорожная карта по изучению C++  Публичный пост
11 октября 2021     596   
Дорожная карта по изучению C++

Привет!

Представляем вашему вниманию дорожную карту для изучения языка программирования C++. Идея данного проекта возникла после проведения десятков провальных собеседований молодых разработчиков, которые претендовали на позицию Junior Developer C++.

Мотивация

Насмотревшись на страдания юных падаванов, в моей голове возникли навязчивые вопросы: А почему так происходит и какие причины такой слабой подготовки у молодых ребят?

В ходе поисков я изучил текущее состояние и количество доступных материалов как по C++, так и по другим языкам (Java, C#, JavaScript). В итоге удалось прийти к следующим наблюдениям по популярным языкам:

  • Наличие актуальной библиотеки с книгами, как для практикующих разработчиков, так и для новичков;
  • Обилие видео курсов в свободном доступе;
  • Наличие дорожных карт, которые помогают сориентироваться новичкам при изучении языка программирования;

Дорожная карта...дорожная карта...дорожная карта. Так, а что там с дорожной картой для C++? А ничего! Лучшее, что я смог найти, так это жалкие потуги наших коллег из азиатских и индийских республик. Большая часть их попыток умерло, так и не родившись.

Первые шаги

Вот здесь-то и загорелась лампочка! Преисполнившись отсутствием какой-либо внятной дорожной карты, я принялся за работу. Основной целью данной карты стала попытка систематизировать актуальную информацию вокруг C++ и экосистемы языка, а также предоставить актуальные источники информации, по которым можно начать изучение языка.

Все началось с того, что я решил попробовать написать несколько статей в рамках репозитория, где мне хотелось осветить различные вопросы, которые вращаются вокруг C++.

Давалось это тяжко. В какой-то момент размер задачи начал давить на меня. Попытки удержать мотивацию к данной затее, стали выходить на первый план.

По какой-то случайности у меня на работе зашел разговор на данную тему с коллегой ( @just_be_frankie ). Оказалось, что у него в голове вертятся похожие идеи. В особенности его интересовало создать дорожную/ментальную карту по языку C++, чтобы систематизировать свои знания. Поведав коллеге о своих планах и предложив присоединиться к активностям, он без колебаний согласился.

Активная стадия

И понеслось. В конце Апреля мы начали работать над дорожной картой. От состояния пустоты до финальной версии мы шли около 4.5 месяцев. Для более продуктивной работы мы устраивали регулярные созвоны, чтобы обсуждать и отрисовывать дорожную карту шаг за шагом.

Через пару месяцев удалось получить первую осмысленную версию карты. На тот момент она представляла собой чистейшую ментальную карту. Мы поняли, что нам необходима обратная связь. Для этого было решено обратиться к нескольким коллегам, знакомым, а также нескольким энтузиастам из твиттера, которые интересовались нашей работой.

Собрав первую порцию фидбека, мы двинулись дальше. Более-менее определились с базовыми разделами. Началось погружение в детали. Дискуссии и споры становились все глубже и резвее. Во время регулярных созвонов начали появляться локальные мемы, ибо куда ж без них! В ходе одного из таких споров на тему методологий разработки, наш гений случайно породил музыкальный мем, с которого мы орали недели две. А потом орали всем твиттером :)


https://twitter.com/just_be_frankie/status/1440345346161270806?t=8bN9-LnzucNhFmaRqds7BA&s=09

Затишье

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

Финальный рывок

После отпуска мы приняли решение, что надо сделать последний рывок и уже выкатить MVP версию карты и репозитория, т.к. мотивация покинула нас окончательно. Навалившись на оставшиеся пробелы, мы дописали все основные темы в репозитории к дорожной карте за несколько дней.

Наконец репозиторий был переведен в режим видимости "Public". Но нам также хотелось пустить карту в массы, чтобы понять, насколько наш труд оказался осмысленным и получить больше внешнего фидбека.

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

Следующие 48 часов мы пребывали в дофаминовом трипе, т.к. не ожидали столь мощной реакции на дорожную карту. Придя в себя, мы собрали всю обратную связь, полученную из внешнего мира. Столь мощная реакция придала довольно сильный импульс, чтобы оперативно переварить обратную связь, и внедрить большую часть рекомендаций в репозитории/дорожной карте.

С момента публичного анонса удалось переработать большой объем информации, реструктурировать его, дополнить и добавить новые темы.

Что дальше

Мы хотим продолжить полировать и дополнять контент в репозитории, пополнить библиотеку книг, а также осветить дополнительные темы, которые волнуют новичков в мире C++.

Мы также хотим собрать ещё больше фидбека. Потому рассчитываем на обратную связь неравнодушных в клубе (а возможно и помощь)! :)

Ссылка

Ознакомиться с дорожной картой вы можете в репозитории: https://github.com/salmer/CppDeveloperRoadmap

31 комментарий 👇
Pavel Ditenbir, Эксперт в области видео, стриминга, кодеков и OTT | разработчик, менеджер 12 октября в 08:18

открыл роадмап, испугался, закрыл :)

(15 лет коммерческого опыта на плюсах)

  Развернуть 1 комментарий

@DiPaolo, 🤣

  Развернуть 1 комментарий

Кто-то знает какие-то прикольные мемы по C++?

  Развернуть 1 комментарий

@just_be_frankie, вот например, типичный плюсовый сеньёр:

  Развернуть 1 комментарий

@a-a-b, попугая-менеджера на плече не хватает

  Развернуть 1 комментарий

@just_be_frankie, он его в жопу клюет (Я дико извиняюсь).

  Развернуть 1 комментарий

@a-a-b, :(

  Развернуть 1 комментарий
  Развернуть 1 комментарий

@yse, хорошее 🤣

  Развернуть 1 комментарий

@just_be_frankie,

вот второй мой любимый)

p.s c++14 говорят, что на крыше)

  Развернуть 1 комментарий

@yse, боюсь представить, где же тогда c++20? :D

  Развернуть 1 комментарий
Тимур Анвартдинов, Инженер по контролю качества 18 октября в 05:22

В подобных дорожных картах мне не нравится, что нет какого-то прописанного пути изучения языка. Я ленивая жопа, я люблю учиться и делаю это регулярно, но просто накиданного списка тем мне недостаточно. В конце-концов, я ж айтишник, у меня есть деньги. Если я захочу изучать новую технологию, то оплачу курс или куплю книгу.
Хорошо, что в комплекте идет репозиторий - от него мне больше толку, если честно. Там написано, что начинать следует с книг Прата и Липпмана. Насколько стандарт, описываемый ими устарел? А в какой момент переходить к С++14, С++17?

  Развернуть 1 комментарий

@dipFireWorker, там в дорожной карте подписано: «1 этап», «2 этап», «...» Начинать конечно следует не с книг, а с вопроса себе: «А зачем мне C++ в 2021?» и, возможно, со статьи в репозитории «А нужен ли вам C++?» там вроде всё по делу написано. Для обучения пользуйтесь самым последним стандартом из доступных.

  Развернуть 1 комментарий

@vector0 все верно, четко и по полочкам. Репозиторий идет к карте ровно с целью ответить на озвученные вопросы :)

@dipFireWorker, про стандарты - хорошее замечание, спасибо! Попробую добавить об этом информацию в репозиторий, ибо уже во второй или в третий раз уже этот вопрос подсветился от тех, кто изучает дорожную карту. Это действительно довольно чувствительная информация, которая смущает на старте.

Вообще суть карт - подсветить примерно в какую сторону копать, ибо если даже и вписываться в курсы, то надо примерно понимание: какие именно покупать и по каким темам. Иначе можно пойти изучать вообще не то что нужно.

  Развернуть 1 комментарий

@vector0, люблю учиться, но не люблю заморачиваться организацией учебы. C++ - просто еще один язык, который хочу немного изучить. Это просто хобби.
Идеальный план учебы для меня выглядит так:

  1. ссылка на статью, как установить и настроить необходимые инструменты
  2. Читаем книгу A c 1 по 4 главу, самостоятельно исполняя весь код
  3. Читаем книгу B c 1 по 2 главу, самостоятельно исполняя весь код
  4. Решаем задачи на литкоде отсюда по сюда
  5. Читаем книгу A c 5 по 7 главу, самостоятельно исполняя весь код
  6. Читаем книгу B c 3 по 5 главу, самостоятельно исполняя весь код
  7. Изучаем статью C. читаем три раза не моргнув, долго думаем
  8. ...

Понятно, что таких планов не бывает, а жаль)

  Развернуть 1 комментарий

@dipFireWorker, в принципе на что-то подобное в виде алгоритма мы пытались ответить в разделах:

  • Книги - PreJunior
  • Легенды и Мифы

В PreJunior есть небольшой список книг, а также ссылка на MSDN, где как раз представлен офигенный цикл статей: как с нуля раскатать студию и собрать/написать свое первое приложение.

  Развернуть 1 комментарий

@salmer, Ну то есть план (читать Прату и Липпмана), а потом, уже хоть что-то понимая, искать описание C++11, 14, 17 - рабочий и нормальный? Или лучше читать эти стандарты сразу?

  Развернуть 1 комментарий

@dipFireWorker, да, по мне это лучшая стратегия на данный момент. Плюс эти книги таки содержат немного фич из C++11/14.

На самом начальном этапе нет смысла гоняться за новейшими стандартами, ибо многие фичи - всего лишь надстройки и синтаксический сахар над идеями и фундаментом C++98/03. Да, там и полезных фич полно, но в самом начале пути они особой роли не играют.

  Развернуть 1 комментарий

@dipFireWorker, C++ неполучится немного изучить. Я на него уже лет 20 смотрю, и все еще себя считаю prejunior (может когда стандарт С++ прочитаю, сделаю себя junior). Язык постоянно преподносит сюрпризы, особенно касательно UB.

  Развернуть 1 комментарий

@ps_at, если нет цели стать программистом на плюсах, то можно и чуть-чуть)

  Развернуть 1 комментарий

Все ссылки в разделе Книги и материалы ведут на 404

  Развернуть 1 комментарий

@Siegmund, спасибо! Починил

  Развернуть 1 комментарий

@just_be_frankie, добавил звездочку репозиторию за оперативные правки)

  Развернуть 1 комментарий
Nikita Khomitsevych, iOS SE, вьюхоукладчик 11 октября в 20:39

Дико извиняюсь, а где ссылка на сам роадмап?

  Развернуть 1 комментарий

@hamsternik, также продублировал ссылку в конце статьи

  Развернуть 1 комментарий

@hamsternik, ссылки на проекты это заголовки статей. Очень неочевидно на самом деле, уже не первый раз когда люди просят ссылку которая в шапке большими буквами.

  Развернуть 1 комментарий
Sergey Kapralov, Java-разработчик 11 октября в 21:01

Эх... а ведь теплилась надежда, что хотя бы с++-разрабам не нужны эти чертовы софт-скиллы)

  Развернуть 1 комментарий

@skapral, тьма сгущается над Средиземьем)

  Развернуть 1 комментарий

@skapral, ну, пока на плюсах пишут человеки, и за код платят тоже человеки, придётся учиться коммуницировать 🤷🏻‍♂️

  Развернуть 1 комментарий

@just_be_frankie, с моб. safari если кликать на заголовок, то просто обновляется страница поста 💁🏻‍♂️
IMO очевидно дочитать статью до конца (ну или глазами по диагонали пройтись) и, закончив чтение, пойти смотреть че по ссылке.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб