Как развивать характерный программистам тип мышления?
это называется "основы алгоритмизации". Нужно уметь придумывать и реализовывать различные алгоритмы. Понимать что для решения задачи ее нужно проанализировать, составить алгоритм решения и реализовать ее.
По поводу 5-ти лет вы как-то загнули...
Конечно есть, SICP. Есть хороший перевод на русский.