This paper[1] suggests that there is a 50/50 split amongst programmers in the way in which they trace programs:
Given a straight-line program, we find half of our participants traced a program from the top-down line-by-line (linearly), and the other half start at the bottom and trace upward based on data dependencies (on-demand)
So it's possible that both viewpoints are correct in some sense and we should pursue languages which allow us to switch between the two viewpoints.