Найти тему

Самый эффективный способ самообучения для программистов

Оглавление

Элементарный уровень

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

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

В институте, на курсах или при самостоятельном обучении процесс происходит примерно одинаково. Сначала дают материал: (лектор читает перед аудиторией, книга, видео, блог индуса) – нужное подчеркнуть, затем повторяешь это и пробуешь сделать лабораторную или пет-проект. Если есть препод, то он ее проверяет и оценивает. Все это строится только на твоем собственном желании и мотивации продолжать обучение.

Продвинутый уровень

Но есть гораздо более эффективный способ, для меня он пока все еще граничит с магией.

Звучит этот вариант довольно банально: обучая других, обучаешься сам. И примеров такого процесса я видел массу, хотя бы тот же преподавать в институте. Он даёт лекции и сам непрерывно учиться своем предмету, пишет доклады, диссертации, получает ученые степени. Достигнуть такого уровня можно было бы, если поступить в аспирантуру или же стать ментором для кого-нибудь.

Также можно писать полезные статьи по какой-нибудь технологии программирования или даже документацию.

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

В такие моменты идеальным вариантом взять книгу по теме своей статьи и читать ее от корки до корки. Если в обычных условиях ничего кроме скуки она бы не вызвала, то под напором энергии своих читателей, я могу взахлеб прочитать ее за несколько дней. И получить максимальное количество знаний.

Экспертный уровень

-2

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

С текстом все просто: пишешь, публикуешь, ждешь фидбек.

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

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

Однажды, мне попался очень сложный ученик. Он заканчивал колледж и ему нужно было на диплом сделать веб-сервис. По техническому заданию все было просто. Однако, ученик с трудом понимал, чем отличается HTML от JS и как в принципе работает приложение в режиме клиент-сервер. Давно я так не потел. Мне пришлось за пару занятий рассказать про NodeJS, Express, методы GET и POST, SQLite. Потом еще в режиме реального времени мы накидали работающее приложение и смогли запустить на его компьютере. Иногда приходилось через AnyDesk прямо у него править код. Но диплом он сдал-таки.

После серии этих занятий я преисполнился такого могучего желания узнать, как же эти биты и байты циркулируют в процессоре, что нашел книгу «Код. Тайный язык информатики» Чарльза Петцольда. Проглотил эту книгу за неделю и затем еще поставил обучающую игру из стима: Turing Complete, с её помощью можно тренироваться в построении логических схем и составить процессор. Затем энергии хватило, чтобы установить и поэкспериментировать с кодом учебной Unix-подобной операционной системой Xv6.

Давно я не получал настолько много полезной информации.

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

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

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

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

Уровень Бог

-3

Представляю, что твориться в головах создателей глобальных технологий. Например, что чувствовал Тим Бернерс-Ли после изобретения WWW? Он видимо, теперь научился силой мысли передвигать предметы?