Thought and thinking are mental forms and processes, respectively (“thought” is both). Thinking allows beings to model the world and to represent it according to their objectives, plans, ends and desires. Words referring to similar concepts and processes include cognition, sentience, consciousness, idea, and imagination

Programming is a way of thinking and planning code. He/ske uses mental models for that. The output of programmer's thinking are symbols.

The chain of the programmer’s work is described by the theory J.S.Bruner’s theory of Enactive, iconic, symbolic representations of knowledge.

Some relevant links to describe programmer’s mental models from the cognitive approach are: