Привет!
Представляем вашему вниманию дорожную карту для изучения языка программирования 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
- User-friendly представление: https://salmer.github.io/CppDeveloperRoadmap/
открыл роадмап, испугался, закрыл :)
(15 лет коммерческого опыта на плюсах)
В подобных дорожных картах мне не нравится, что нет какого-то прописанного пути изучения языка. Я ленивая жопа, я люблю учиться и делаю это регулярно, но просто накиданного списка тем мне недостаточно. В конце-концов, я ж айтишник, у меня есть деньги. Если я захочу изучать новую технологию, то оплачу курс или куплю книгу.
Хорошо, что в комплекте идет репозиторий - от него мне больше толку, если честно. Там написано, что начинать следует с книг Прата и Липпмана. Насколько стандарт, описываемый ими устарел? А в какой момент переходить к С++14, С++17?
Все ссылки в разделе Книги и материалы ведут на 404
Дико извиняюсь, а где ссылка на сам роадмап?
Эх... а ведь теплилась надежда, что хотя бы с++-разрабам не нужны эти чертовы софт-скиллы)