To je dobrá otázka. Ako sa naučiť rozmýšľať, to neviem, ale ako sa naučiť rozmýšľať o písaní softvéru je celkom dobre popísané v knihe How to Design Programs -
https://htdp.org/. Už som to tu písal (a určite to ešte niekoľkokrát napíšem), podľa mňa je to asi najlepšia kniha pre začínajúcich programátorov. A to asi preto, lebo neučí písať programy, ale navrhovať ich a rozmýšľať o nich. Rozhodne odporúčam prečítať si aspoň úvod, tam je to pekne vysvetlené - čo, ako a prečo.
Kniha je písana vyslovene na výuku, je v nej použitých niekoľko programovacích jazykov, alebo možno skôr niekoľko úrovní programovacieho jazyka z jednej rodiny, a znalosti sa dajú jednoducho preklopiť do skutočného jazyka z tej rodiny jazykov.
Trochu neštandardné je, že popisuje funkcionálny prístup k programovaniu, ale v tejto dobe sa k tomu aj tak značne vraciame, lebo je to jednoducho vzhľadom na aktuálne dostupné platformy výhodné, pretože, veľmi zjednodušene povedané, sa pri tom musíme starať o menej vecí a tým sa o napísanom programe ľahšie rozmýšľa, a okrem toho, tieto princípy vo veľkom prenikajú aj do iných jazykov, tak to nie je žiadna nevýhoda.
A čo sa toho rozmýšľania týka, tak kniha sprevádza cez niekoľko úrovní problémov, ktoré sa v programárorskej praxi vyskytujú a popisuje ako ich riešiť a to jednotným spôsobom, pričom centrálnom myšlienkou je podľa mňa receptúra návrhu, podľa ktorej sa dá postupovať a ktorá sa pre jednotlivé zvyšujúce sa náročnosti trochu rozširuje aj s nejakou základnou šablónou pre funkcie.
No a čo sa týka náväznosti na matematiku, tak tým vlastne autori začínajú, keď ako minimum, ktoré asi každý pozná, odkazujú na aritmetiku s číslami, a potom ju vlastne rozširujú na "aritmetiku textov" a "aritmetiku obrázkov", potom pridajú funkciu, atď.