Программист это в первую очередь архитектор кода.
И самыми важными навыками тут являются не математические способности, а понимание языка программирования (если не ошибаюсь, это называется синтаксис) и логика с вниманием.
Дело в том, что код воспринимается компьютером как инструкции к действиям. И если построить инструкции, которые будут противоречить друг другу или не смогут закончить процесс, то компьютер не сможет найти выход из ошибки.
Компьютер может делать только то, на что есть инструкция.
Самый простой пример последовательности - Если (происходит какое то действие со стороны пользователя) То (запускается реакция на действие)
Больше подойдет не фантастика, а знакомство хотя бы с фундаментальными паттернами проектирования (для начала).