Если ты работаешь в поддержке значит всё у тебя нормально с абстрактным мышлением. Тебе прилетает кое-как сформулированная проблема, ты её декомпозируешь до стандартных абстракций и решаешь. Абстрактное мышление это умение размышлять о предмете, не видя его и не держа в руках. У всех современных людей оно плюс-минус развито. Есть люди, которые говорят что механика это просто, а электрика - сложно потому что "электричества не видно". Типа, движок Лады перебрать легко, а проводку в квартире - сложно. Но вот для меня движок это пипец как сложно: что там за что цепляется, да всё в динамике, да впрыск, да зажигание... да ну нафиг :)
Что касается "логического мышления", то у меня с ним тоже крайне плохо. Те задачи, которые дети 5-10 лет щёлкают как орешки, я не могу решить - я просто не понимаю сути задачи. Или что-то там про круглые люки. Я забил, не моё. Просто работаю программистом :)
Как учиться? Кому как удобно, тот так и учится. У кого память хорошая - тот по книгам. У меня плохая, поэтому я учился на практических задачах. Чуть-чуть теории и задачи, много-много задач с автоматической проверкой. Так организм "пропитывается" проблематикой и какие-то вещи, которые по книгам понять не мог, стали некоей "естественной средой", перестали возникать вопросы "почему так" - просто так и всё.
В ИТ много задач, работы хватит всем. Я, к примеру, никогда не изобрету новый алгоритм или фреймворк - не хватит ни ума, ни знаний, ни способностей эти знания получить. Меня не примут в Яндекс - им нужны алгоритмисты-олимпиадники. Ну Ок, значит я просто буду решать т.н. "бизнес-задачи", т.е. понимать что нужно заказчику, пытаться представить как это должно выглядеть для него, переводить задание в абстакции моего ЯП и решать теми высокоуровневыми инструментами, которые для меня разработали умницы-олимпиадники. Буду ремесленником-халтурщиком, чо :)