This is getting a bit of attention so I'd like to expand on it a bit. What the compiler offers to the programmer is a way to a) describe their mental model and b) reify it into a behavior for the executing machine. The process of programming is the process of unambiguously describing this model.
Quoting myself from a day ago - "The problem is thinking that the product of a programmer is code. It isn't, really, the code is just the final stage. The actual valuable thing the programmer produces is the underlying mental model. Without that, the code is just tech debt"