СТАТЬ ПРОГРАММИСТОМ
1.38K subscribers
12 photos
59 links
ЧАТ/СООБЩЕСТВО - @tobeprog_chat

Программирование. Задача канала - полностью разобрать путь становления разработчика, проведя по нему читателя наиболее эффективно
Download Telegram
Перевод - https://habr.com/ru/company/macloud/blog/551838/ 
Оригинал - https://jacobian.org/2021/apr/7/embrace-the-grind/

Вчера в топе хабра был перевод совсем небольшой, но оттого не менее замечательной статьи[автор - Jacob Kaplan-Moss], ссылка на которую выше.

Буду время от времени постить ссылки на такие материалы, из категории - ‘лучше узнать об этом раньше’.
#habr #перевод
Сейчас будет немножко пафосно, сорян, изначально философия этого канала - быть полезным. Я как то писал, что меня страшно раздражают каналы “где эдакая рефлексия о программировании переплетенная с полу мотивационным бредом.”

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

Но бывают такие “пограничные” темы, они вроде бы и могут как-то повлиять на процесс изучения, но они не про сам процесс и, как следствие, выбиваются из изначальной концепции/идеи канала.

У меня уже скопилась куча всяких заметок для будущих постов из этой категории, для них я создал отдельный канал @tokovIT , репост ниже как раз с него.
Есть одна, абсолютно потрясающая штука связанная с IT-индустрией - в привычном нам виде она(индустрия) началась совсем недавно(есть конечно те, кто считает чуть ли не со времен Алана Тьюринга, но это по моему какое-то снобство). Вытекающий из этого факт, который постоянно ‘взрывает’ мне мозг:

Люди создававшие эту самую индустрию не где то в далеком прошлом, а наши современники(многие уже в почтенном возрасте, но ситуацию это не меняет).

В начале 70-ых годов Деннис Ритчи создал язык программирования СИ, он же в соавторстве с Брайаном Керниганом написал книгу “The C Programming Language”. 

Книга стала эталоном ввода в ЯПы(кстати все еще популярна и отлично продается), куча всего связано с этой книгой, например именно в ней был представлен “хелло ворлд”, ставший впоследствии традиционно первой программой.

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

И до чего же странные эмоции я испытывал, смотря в середине прошлого лета подкаст Лекса Фридмана(канал - Lex Fridman) с одним из авторов(Брайаном Керниганом) - https://youtu.be/O9upVbGSBFo 

Вроде бы все сходится по датам, но раз 10 ловил себя на мысли, что как будто бы случилось нарушение временного континуума, это же автор той самой книги(я ее читал больше 10 лет назад, и уже тогда она была ‘книгой из 70-ых’, к тому же скоро ей стукнет полтинник), а я в 2020(подкаст вышел в середине прошлого лета) смотрю как автор пришел на подкаст и рассуждает о разных япах, их истории, unix, и даже немного ИИ затронули.

Кстати, на этот же подкаст приходили:
Бьёрн Страуструп(создатель C++) https://youtu.be/fjIhFzTUB9I
Гвидо ван Россум (создатель Python) https://youtu.be/ghwaIiE3Nd8 
Джеймс Гослинг (создатель Java) https://youtu.be/IT__Nrr3PNI 
Дональд Кнут(автор знаменитой монографии ‘Искусство программирования’) https://youtu.be/2BdBfsXbST8 

Услышать от автора чего то значимого, какие то рассуждения, узнать что он думает о влиянии, развитии и как видит будущее своего творения и т.д. можно сказать, подобное расставляет все точки над i.
Не знаю как скоро, но на основном канале обязательно выйдет ряд постов про уч.материалы для разных ЯПов(по типу уже существующего поста про уч.материалы для python).

Поскольку, посты хотелось бы представить в лучшем виде, это скорее всего займет некоторое время(много всяких нюансов). К примеру, в посте про Си основная сложность в том, чтобы объяснить зачем его вообще сейчас изучать и чем он так хорош.

Я подумал, раз есть второй канал, почему бы туда не выкладывать такие небольшие кусочки будущих постов. 
Си. Как мне кажется, очень удачная связка уч.материалов:

Язык программирования C. Лекции и упражнения, Стивен Прата
Интересная штука с книгами Праты, 2 самые популярные - ввод в c и c++, это скорее забавное совпадение, но у обоих языков есть вводы написанные самими создателями языков. 

В чем же преимущество Праты? Я бы сказал доступность(но разумеется, всегда рекомендую ознакомиться со всеми вариантами), очень плотная подача материала и разжевано до самых мелочей. Абсолютный must-read для изучающих С.

Язык программирования Си, Брайан Керниган, Деннис Ритчи
Та самая книга от создателя языка, если планируете изучать си, с ней в любом случае стоит ознакомиться. Но есть важный момент, она очень далека от современного понимания книг по ‘вводу в ЯП’, это не учебник, а именно книга написанная инженерами для инженеров(особенно хорошо это видно в сравнении с предыдущей книгой). 

Изучаем программирование на C, Гриффитс Дэвид, Гриффитс Дон
В свое время серия книг ‘Head First’, стала “глотком свежего воздуха” в мире it литературы. Все дело в подаче, даже не знаю как это описать, она что ли веселая: шутки, смешные картинки(не уверен что тогда термин ‘мем’ был распространен), куча всякой визуализации и т.д. и т.п., и это на фоне достаточно ‘серьезных’ представителей жанра(это учитывая, что первая книга вышла в 2003).

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

#c #книги
Самое крутое в изучении Си, это чуть ли не единственный язык, который можно выучить через изучение сложной технологии

Не буду вдаваться в объяснения почему так, это достаточно непростая история(об этом, разумеется, будет в большом посте). Просто скажу, это неприменимо к другим ЯПам, и скорее создаст кучу нервов и потраченного времени, но Си - исключение(единственное!).

На том же buildyourownx, практически весь подраздел ‘Operating System’ занят Си.
#c
Еще одна особенность - куча крутейшего кода, некоторые примеры буквально легендарны(это породило разборы этого самого легендарного кода).

Мне, почему-то, сразу вспоминается Кармак.
Один из лучших примеров разбора его кода[канал - Nemean]:
https://youtu.be/p8u_k2LIZyo 
На видео подробнейшим образом разобран алгоритм быстрого извлечения обратного квадратного корня. Штука сложная, точно не для новичков(кстати ответ на вопрос зачем программистам математика). Но если все хорошо с англом, очень рекомендую к просмотру(красота решения поражает).
#c #gamedev #youtube
Давно хотел сделать канал посвященный теме it бизнеса. Тема невероятно интересная, от маленьких стартапчиков и до огромных корпораций в которые эти стартапы вырастают.

Канал будет отличатся тем, что я буду смотреть на всю эту историю с точки зрения программиста(как по мне, очень уж часто эту тему освещают люди далекие от разработки).

P.S. я не эксперт в бизнесе или инвестициях, а всего лишь программист, который делится исключительно своим взглядом и тем, что мне интересно.
Forwarded from Об IT индустрии
Самая невероятная модель бизнеса в it(возможно и за пределами индустрии)

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

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

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

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

Гиганты на то и гиганты, у них есть куча всяких направлений деятельности, далеких от их основного продукта/направления, но при этом этот самый основной продукт видно всегда, он может меняться с годами как например у apple, или наоборот быть неизменной основой как у amazon. 

Таких продуктов у гиганта может быть несколько, например Facebook и Instagram, поэтому говоря основной, подразумеваю, не единственный, а тот в который они вкладывают больше всего сил, тот(или те) вокруг которых крутится основной бизнес.

У майков, очевидно, это операционка(наверно в каком то смысле еще и офисный пакет, но и с ним очень похожая история).

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

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

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

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

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

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

Также важный момент - винда виртуальна, т.е. сломаться что-то на заводе по производству винды не может(так же не скажется, например дефицит полупроводников).
Forwarded from Об IT индустрии
Более того, продукт настолько защищен, что если вдруг перестанет существовать интернет(что абсолютно невозможно), майки будут как в старые добрые, в картонных коробочках на дискетах распространять свою винду, конечно подобное скажется, но компанию точно не убьет.

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

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

Эпл конкурирует со всеми(в рамках интересных компании продуктов), те же китайцы неожиданно научились пилить очень крутую технику. Фейсбук - постоянная гонка социальных сетей. 

И только майки спокойно пилят винду и что самое веселое, 20 лет назад, они занимались все тем же, и смею предположить, что через 20 лет ничего не изменится.

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

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

Итак, где же найти хороший roadmap/план изучения/список учебных материалов?

Ответ который мне нравится большего всего: продолжать смотреть мою замечательную серию видео “план изучения программирования”

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

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

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

“в программировании, популярность учебного материала - верный признак качества. Правда работает это тогда, когда популярность - следствие рекомендаций уже ставших программистами(именно подобные отзывы и стоит искать при подборе уч. материалов).”

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

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

Первая же строка выдачи “python + roadmap + github”
https://github.com/GnuriaN/Python-Roadmap - крутой roadmap для изучения python на русском, ссылается на русскоязычные ресурсы, достаточно подробно расписано, без лишней воды.

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

Меня особо порадовало, что в конце упоминается курс от Computer Science Center, я как то о нем писал, именно о той версии которую советует автор roadmap-а, для меня это такой знак качества - невероятно крутой курс(о котором, к сожалению, очень мало где говорят).

Можно найти учебный план, не просто определенного ЯПа, а даже целой специальности/области/профессии, иногда у них есть даже целая история.

https://github.com/jwasham/coding-interview-university (англ.)
https://github.com/jwasham/coding-interview-university/blob/main/translations/README-ru.md (на русском)
John Washam имел достаточно успешную карьеру, но у него была мечта -  попасть в гугл. Его отделяло от нее отсутствие образования и знаний в сфере computer science, собственно весь план - это его подготовка к собеседованию и обретение этих знаний с нуля. Даже в отрыве от столь амбициозной задачи, это просто крутой план по изучению computer science. 

Кстати у Джона получилось, правда не с Гуглом, а с другим представителем FAANG - Амазоном.

https://github.com/ossu/computer-science Еще один достаточно известный репозиторий, эти ребята вообще называют себя опенсорсный университетом.

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

Это может быть даже просто картинка, где показана связь необходимых для предмета топиков/тем, а может быть детально проработанный план изучения. В любом случае, это делалось программистами для программистов(возможно будущих), и оценки будут напрямую коррелировать качеством.

P.S. Можно искать на самом гитхабе, если по каким-то причинам, это пока вызывает дискомфорт, можно просто приписать в гугле к запросу ‘github’ ну или уточнить поиск по сайту(в гугле это делается командой site:адрес, т.е. «site:github.com»
Дополнил меню/содержание канала. Все новое с пометкой - upd (update)
Этот пост - содержание/меню канала. Мне не очень нравится, как выглядят такие посты в закрепе канала, поэтому раз в месяц будут ссылаться на него(примерно с тем же интервалом он будет пополняться).

upd: 08.05.2021 
у основных постов появилась видеоверсия на youtube
заново запущена серия - ‘план изучения программирования’
добавлены новые посты

Основы:
Python, основы | что читать/смотреть | как правильно использовать уч.материалы - https://t.me/tobeprog/29 
upd. Видеоверсия - https://youtu.be/cqyluq__UOU 

Что значит программировать, почему многие не понимают этот процесс(и как эту проблему решить) - https://t.me/tobeprog/32 
upd. Видеоверсия - https://youtu.be/jXyFCLnN06c 

upd. Видео Самый ПОЛЕЗНЫЙ Github репозиторий| создание с нуля СЛОЖНОЙ технологии https://youtu.be/000-NvdYPMg 

upd. Где найти хороший roadmap/план изучения/список учебных материалов - https://t.me/tobeprog/51 

Посты про проекты(идеи для проектов):
Как делать интересные проекты из скучных - https://t.me/tobeprog/13 
Про цепи Маркова (и немного про то, как делать учебные проекты) - https://t.me/tobeprog/22 
upd. Roguelike игры - https://t.me/tobeprog/38 

Серия постов, с планом по изучению программирования

upd. (Видеоверсия, поскольку серия запущена заново и произошел сдвиг нумерации(сразу несколько частей в одном видео), то это теперь “часть 1”) 
План изучения программирования | Python | Часть 1 - https://youtu.be/J8MLsG1_bu8 

Прошлая версия:
Первая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/16 
Вторая часть - ‘плана изучения программирования’. - https://t.me/tobeprog/18

Небольшие посты(к примеру, в которых рассказывается об интересных уч.материалах), добавлять не буду, для них есть хэштеги.
UPD: переименовал под-каналы
теперь:  
Токов об IT >> Токов о программировании
@tokovIT
IT и Бизнес >> Об IT индустрии 
@business_or_it
Это все еще временные названия, надеюсь придумаю что-нибудь получше, но они хотя бы больше отражают суть, нежели предыдущие

P.S. к тому же ‘IT и Бизнес’ - звучало просто ужасно
Недавно, в паре мест за пределами канала, сделал пост про недооцененные курсы по программированию/cs.

На основном канале постить не стал, потому что сам пост является компиляций других постов с него(канала). Но все же, об одном пункте я до этого не писал, и как мне кажется, очень зря.
Missing Semester
Оригинал - https://missing.csail.mit.edu

[Перевод, на данный момент переведено 2 из 11 частей]Пропущенный семестр курса по компьютерным наукам - https://missing-semester-rus.github.io

Очень правильный формат, есть лекции(youtube) и сразу же конспекты, удобно. 

Идея такая, есть куча инструментов, которые предположительно должен знать студент после изучения Computer Science, обычно это оставляют для самостоятельного изучения, тут же наоборот решили сакцентировать на них внимание(и сэкономить кучу времени студентам).

Уже хотел расписывать как мне понравилась часть про метапрограммирование, и нахваливать их подход к изучению Vim(буквально, абзац текста - “философия Vim” отвечает на вопрос - “зачем этот ваш Vim нужен?”, и очень правильно, что они подошли именно под таким углом), но вдруг понял, что здесь вот какая проблема: понять насколько это круто, смогут те, кто уже знает что это.

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

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

Так вот, в этом курсе научат этими самыми инструментами пользоваться. Кроме того, что их использование довольно эффектно, оно еще и очень эффективно.
На @tokovIT вышло несколько постов в формате вопрос/ответ, наверно это превратится в еженедельную рубрику. А пока взял несколько самых популярных вопросов:

Почему python лучший вариант первого ЯПа?
Я слышал, что питон очень простой, это так?
То есть он хуже/лучше {вставить любой ЯП}?
А что, если в середине изучения, я пойму что мне интересен другой ЯП?
А что, если в середине изучения, я пойму, что программирование это не моё?

Как пример, репостну один сюда.
То есть он хуже/лучше {вставить любой ЯП}?

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

Знаете кто большего всего уверен в превосходстве определенного ЯПа? - Тот, у кого в головушке отложилась только вводная глава ввода в яп, там прям расскажут где яп используется(спойлер - везде, в реальности - нет), какой он классный, и вообще все будущее основано на нем. И это нормально, иначе бы никто дальше первой главы не читал(представьте, если бы книгах о php рубили бы правду с порога).

Если бы был один универсально прекрасный ЯП, в коммерческой разработке использовали бы только его. Это логично и с точки зрения самого программиста, и с точки зрения бизнеса(в этом вопросе, его точка зрения куда весомей).
План изучения программирования | дополнение к части 1 | о планах изучения

Это скорее дополнение к первой части(поэтому видеоверсию скорее всего делать не буду). Оно посвящено планам изучения, и нужно для того самого ‘контроля со стороны изучающего’ из прошлой части. 


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

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

1. Где найти хороший roadmap/план изучения/список учебных материалов
Для начала, неплохо посмотреть какие они вообще бывают и возможно взять какой то за основу(или сразу несколько).

Недавно делал пост об этом - https://t.me/tobeprog/51

Кратко:

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

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

Прекрасный вариант такого места - github, и как пример, буквально первая же строка выдачи “python + roadmap + github”, приведет к вполне себе отличному roadmap-у для изучения python - https://github.com/GnuriaN/Python-Roadmap (на русском, ссылается на русскоязычные ресурсы, достаточно подробно расписано, без лишней воды).

2. Взаимозаменяемость уч.материалов
Это очень важно, понимание этого способно решить кучу проблем, особенно на ранних этапах.

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

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

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

3. Учебные материалы это просто инструменты
Пункт напрямую связан с прошлым. Язык программирования это инструмент, книги/курсы по япам это инструмент для изучения инструмента.

Вроде бы, очень очевидная мысль. Но, на практике, отношение к уч.материалам противоположное - будто существует один, самый правильный вариант и нужно, сначала долго его искать, потом учить именно по строго определенной книге/курсу/методу. Как будто, это не один из вариантов(инструментов), а единственно возможный.

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

4. Начать выстраивать план лучше с какого-то опорного уч.материала

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

Хорошая новость, что как и говорилось в правиле из п.1. в программировании популярность учебного материала - верный знак качества. А из-за ‘полноты’, такой учебный материала как раз и будут хвалить делая упор на эту самую ‘полноту’.