The development of a program is not linear. Programmers neither write down a program in text order from start to finish, nor work top-down from the highest mental construct to the smallest. They sometimes jump from a high level to a low level or vice versa, and they frequently revise what they have written so far (...). For the purposes of programming support, that is all we need to know. Although the causes and nature of deviations from top-down development have inspired much research, the implication for a programming environment is quite straightforward; the order of working should be left to the programmer, not prescribed by the environment.
— Usability Analysis of Visual Programming Environments - A "Cognitive Dimensions" Framework