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