Changes in computer programming methods were responses to specific stimuli, and that (contrary to much existing analyses) the development of programming methods does not fit an ideal of "progress." I focus on the rise of two fundamental computing problems: complexity, or the proliferation of people and methods; and verification, which is the (in)ability to verify that a program functions as intended. Complexity and verification were the catalyst for the development of automatic coding systems but also increased exponentially as a result of automatic coding systems like FORTRAN and COBOL. These systems have English-like commands that simplify programming. The adoption of automatic coding systems opened up the programming field to more software engineers and allowed the creation of more elaborate software systems, creating ever more complexity in the discipline. I argue that since the introduction of automatic coding systems in the 1950s, methodological changes and new programming languages have been attempts to solve long standing problems faced by programmers. Not, as the traditional insider narrative suggests, a steady evolution based on a better understanding of programming. In this dissertation, I focus on the changes motivated by two stimuli -- complexity and verification.