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