Как научиться алгоритмическому мышлению?
Бьёрн Страуструп, описывая C++, говорил: "Язык программирования служит двум связанным между собой целям: он является выразительным средством программиста для указания действий, которые надо выполнить, а также набором концепций, которыми пользуется программист при решении проблемы." Но язык программирования точно не является решением проблемы, он только средство выражения и инструмент. Поэтому для начала давайте оставим в стороне программирование.
С остальным всё просто. Программисту часто не хватает некоторой "прелюдии", позволяющей перебросить мостик между идеей программы и написанием кода. Мостик этот строится так:Имеем некоторую идею: "а хорошо бы написать программу, которая делала бы...".Определяете предметную область с теми процессами, которые имеют отношение к разрабатываемой программе.Формулируете цель проекта: как программа должна повлиять на предметную область (не вдаваясь в реализацию).Формулируете бизнес-задачи, решение которых позволят достичь поставленной цели.Указываете ограничения, в рамках которых будет создаваться программа.Создаёте концепцию - некое видение того, какой будет новая программа, без технических деталей.Решаете, а нужна ли такая программа?Если нужна, то прорабатываете одно или несколько технических решений, как можно сделать программу. Делаете оценки реализуемости и оставляете одно решение.Разрабатываете детальные требования к вашей программе.Создаёте архитектурное решение, логическое и физическое.Проводите детальное проектирование каждого компонента вашей архитектуры.Программируете, тестируете, отлаживаете код.И - ура! - внедряете программу.
Это выглядит сложным. Но не очень сложно. 
Как я смотрю на весь этот процесс, можете посмотреть тут: Обзор процесса разработки программного обеспечения. Краткий академический обзор всего процесса можно найти в книге Макконнелла "Остаться в живых. Руководство для менеджеров программных проектов" - книга небольшая, для начала самое то.
Начать надо с заучивания определения алгоритма. Потом придется освоить разбиение задачи на части. Потом вопросов не будет.