Как научиться программировать, как в прямом, так и переносном смысле?
С логикой в порядке, а именно, нет нарушений в поиске причинно-следственной связей. Но, как только дело доходит до программирования, в смысле создания с нуля небольшой программы до сайта, возникают проблемы. В данный момент я просто дроблю программу на мелкие части и делаю по порядку, но иногда пропускаю или забываю переменную и т.п.. Как с этим быть?
Никак не быть, из вашего описания все нормально, а низкая самооценка лечится практическими задачами, соответствующими вашему уровню и имеющими стимул, обычно финансовый.
Самый хороший вариант - это практика. Ну и + хороший (опытный) наставник, который может подсказать какие то моменты, показать что-то интересное, и объяснить с точки зрения своего опыта, почему к примеру, ваш вариант решения проблемы не эффективен или вовсе неправильный.
Также необходимо читать необходимую литературу (книги по ЯП, по алгоритмам + статьи по интересующим вас технологиям и подходам).
проблемы с внимательностью? ну проверяйте дважды, пишите тесты. структурируйте так, чтобы логические части были в привычных местах.
почитайте "Идеальный код", там автор прилично внимания этому вопросу уделяет...
Если пропускаете или забываете переменную, то используйте IDE - она напомнит. То что вы описали похоже на проблемы при программировании в текстовом редакторе. При использовании IDE таких проблем не возникает, т.к. переменные сами будут предложены и будет указано где что пропущено и т.п. опечатки. А иногда можно нажать ALT+Enter и IDE магически дополнит всё как надо :)
Если будете выбирать IDE для своего языка программирования, то обратите внимание на продукцию Jetbrains https://www.jetbrains.com/products.html?fromMenu