Как самообучаться программисту

Привет, друзья. Сегодня хотел поднять одну извечно актуальную тему - обучение. Но не какого-то общего обучения и даже не "как войти в ИТ".

Хочу поделиться мнением и опытом по самообучению в профессии программиста, т.к. занимаюсь этим почти всю жизнь и успешно. За многие годы я перепробовал практически все доступные способы и много общался с коллегами, наблюдал как они проходят этот путь.

В чем собственно проблема?

Тема очень широкая, тут можно часами уходить в сторону и рассуждать над многими аспектами, но сегодня я поговорю о поиске источников информации и контента.

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

Источников для самообучение на сегодняшний день очень много, не сравнимо больше чем было лет 20 назад, и говорить о доступности информации уже нет смысла, при минимальных усилиях вам будет доступна бесконечное количество материалов для изучения. Среда передачи и легкость той или иной формы информации тоже тема другой публикации, т.к. это глубокая тема про психологию обучения и восприятия.

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

Пирамида компетентности и ценности

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

Stack-Overflow и сотоварищи

Начнем с низов.

Когда то Stack-Overflow был просто кладезем знаний, где всегда можно было найти ответ на любую техническую проблему, даже стали говорить о SODD (Stack-Overflow Driven Development). К сожалению такие источники работают хорошо, только когда их аудитория мала и очень компетентна.

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

Блоги, влоги и платформы

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

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

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

Документация и исходники

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

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

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

Преподаватели и учебники

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

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

Многолетний опыт преподавания помогает накопить и кристализовать знания и решения, которые могут быть очень полезны для рядовых инженеров и даже отделов и компаний в целом для практического применения. Так или иначе, большинство высоко-технологических стартапов - результат деятельности преподавателей и научных сотрудников ВУЗов.

Коллеги

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

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

Заключение

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

Как всегда тема оказалась гораздо больше, чем мне хватило терпения и слов чтобы уместить ее в текст, поэтому если интересно что-то подобное или развитие темы обучения, пишите в группу VK, Telegram или лично мне. Всем продуктивного самообучения!