Вопрос 2. Как изучить методику программирования? Многие твердят, что нужно учить не язык программирование, а учиться программировать. Но как? Язык - это инструмент, хорошо. Как же овладеть самим искусством программирования? Что нужно делать? Какие книги почитать? Я пробовал начать с "Грокаем алгоритмы" и с книги Никлауса Вирта по алгоритмам, но ничерта не понял. Читаю и, как говорится, "Смотрю в книгу, а вижу фигу"...
Постановка задачи на половину решение. Ася логика на самом деле это совокупность заранее известных решений. А ваша проблема не в том что вы не можете после пропитывание задачи понять с чего начать и чем закончить, а в том что вам банально нужно тренироваться решать эти задачи, и желательно не однотипные и из реальной жизни. Абстракции нужны только там где их можно положить уже на реальные и отработанные бизнес процессы или созданные и понятные решения. Что бы произвести упаковку и масштабирование. Так что мой совет, не замарачивайтесь а создавайте максимальное количество простых решений, которые однако решали бы задачу. Через определённые время абстракции сами начнут подтягиваться. А пытаться сразу упарываться в эти вещи очень сомнительный подход.
Думаю на второй вопрос чуть добавлю. Что бы результат по программированию у вас был, прежде всего вам нужна исключительно личная задача, одна попроще и одна помасштабнее. Желательно что бы был живой заказчик. Только таким способом, при личной заинтересованности у вас появится достаточно мотивации не впоиске оптимального пути решения, но в поиске решения вообще. А там где решение там и дофамин и позитивное подкрепление. А после того как что то заработает, можно уже сделать ревизию и посмотреть что можно было сделать лучше. Или показать товарищам.