Factoring a piece of code (I deliberately conflate factoring and refactoring) is the same thing as automating. Factoring means taking a piece of repeated code like this (example in C++): myArray[i].structField.x = 1; myArray[i].structField.y = 2; myArray[i].structField.z = 3; And factoring out the repetition like this: Struct''''''Type & s = myArray[i].structField; s.x = 1; s.y = 2; s.z = 3; That's the same thing as automation, because the computer is doing the repetition for you as a result of the factorization. New programming languages give you new ways to factor your code, which also means you are being given new ways to automate the task of programming. ---- This has to do with TurningTheCrank and ReFactoring and OnceAndOnlyOnce.