Суть в том, что каждый раз, когда начинаю читать какую-нибудь книгу по программированию или смотреть курсы, прохожу какую-то часть и дальше интерес пропадает.
Надо структурировать информацию об обучении для долгих отрезков времени. Это очень важная составляющая, если собрался чем-то заниматься серьёзно. Чтение книги - не такой уж быстрый процесс. Написание программы - это не только долгий, но и запутанный процесс. А написание нескольких программ и чтение нескольких книг - это всё вместе. Ты никак не обойдёшься без органайзера. Поэтому потрать время на организацию долгих процессов. Изучи, чем и как ты будешь это делать. Что значит "чем" - это средство, программа или несколько программ, потому что разные вещи делаются разными программами. Что значит "как" - это то, как ты будешь пользоваться средствами, потому что использовать их тоже можно как эффективно, так и неэффективно.
Твоя задача: ты записывал информацию на протяжении года, потом был перерыв и через пять лет ты открыл эти данные и ты должен всё понять и вспомнить только по этой информации.
Вот у меня, допустим, книга появляется. Я решил, что я должен её прочитать и пройти всю, потому что мне это даст то-то и то-то. Я готов на это потратить год или два. Я создаю для неё её индивидуальную среду - как бы проект по изучению этой книги. Дальше в нём распределяю, где я буду хранить закладки прохождения книги, заметки по главам, примеры кодов из самой книги по главам, тренировочные коды для экспериментов по главам. Важно бэкапить этот проект, чтобы в один прекрасный день не потерять информацию, копившуюся полгода - настраиваешь бэкап, находя под него место, делая скрипты автоматического бэкапа, чтобы быстро всё было (скрипты готовы с прошлых книг). Вот у тебя получается такая заготовка для изучения книги. И после этого ты начинаешь, например, переносить все пункты в отдельный файл пройденных пунктов. Прочитал первый пункт первой главы - сохранил по нему важные моменты в отдельный файл с конспектом первой главы. Отмечаешь в файле пройденных пунктов, что пункт прочитал. Заметки по этому пункту пишешь в отдельный файл с заметками для первой главы. В общем, первая глава превращается в такую папку с данными только для неё, вторая глава превращается во вторую папку с данными только для неё. Не надо ничего мешать в кучу. Лучше максимально раскидать по индивидуальным папкам и файлам, а потом создать шапку-центр, который это всё объединяет воедино где-нибудь наверху. Это как html-файл со ссылками на главы, где каждая ссылка ведёт на html-файл со ссылками на пункты. Всегда надо знать (видеть), что ты прошёл и что ты не прошёл, чтобы ты мог посмотреть на пройденное и сказать "пройдя вот это всё, из нового я узнал вот это, это и это". Если нужно что-то перечитать, не бросайся на это сразу, запиши себе заметку в файл с заметками, прямо так и пиши себе на будущее "перечитай такой-то пункт, чтобы узнать про ту вещь поподробнее". Когда пишешь себе заметки, не оставляй моментов, где надо вспоминать или догадываться о деталях, помни, что когда ты это будешь читать, ты не сможешь ничего вспомнить из того, что сейчас кажется очевидным, так что пиши себе заметки, как незнакомому человеку писал бы. Если задание выполнил из заметки, запиши себе дату и "я задание выполнил". Всё, после этого ты можешь читать книгу как угодно, вся регистрация по её прохождению идёт и даёт полную картину.
С программами потяжелее всё, так как надо ещё подробнее всё писать там и оно может меняться по сто раз. Это наука не простая, нужно много изучать и про версионирование, и про системы по слежению за багами. Может пройти какое-то время и старая система может показаться безграмотной, надо будет всё переделывать. Где-то ты работал по водопаду, потом оказалось, что есть скрам. Где-то ты работал напрямую, потом оказалось, что есть юнит-тесты до кода. Потом ты начинаешь тесты писать, а вся программа останавливается. А потом идеи, которые были, уже не подходят, потому что ты решил всё переделать, так как для тестов будет лучше определённым образом всё писать. Если же ты этого не делаешь, то надо программу продолжать писать безграмотно и результат получается совсем неприятный (программа идёт в тупик шаг за шагом и потом её только заново написать остаётся, чтобы хотя бы продолжать её развивать). Так что лучший совет здесь - всегда смотри за другими проектами, смотри, как ими управляют, если даже сложно это всё, изучай это сложное управление. Имея все эти знания, вырабатывай свой стиль управления проектом, потому что модные стили тоже не являются гарантией эффективности, и фуфло может быть модным и признаваться с умным видом на конференциях, но потом все скрупулёзно всё равно ищут что-нибудь получше (сами сделать не могут же ничего обычно ;-) только разговоры разговаривать).
Очень много книг надо прочитать очень медленно и очень много программ надо написать не самых простых. Надеюсь, всё это ты не собрался держать в голове.