Instead of "routines" why not just say "functions" - which then opens another can of worms because functions were studied long before they were ever used in programming.
"The routines in your code should be treated like tiny, highly polished diamonds, each one more exquisitely polished and finely cut than the next."
This makes no sense. Each routine can't be more exquisitely polished than the others. And if you try to make it make sense by interpreting 'next' strictly, to mean 'next in sequence', then it means your functions should get worse as development proceeds. Even if you replace 'next' with 'last', to try to turn it into a semi-coherent statement ("Each routine you write should be the best routine you've ever written") it's still bad advice: You should spend your time on the important questions, and not every function is equally important.
Interesting choice with the routine. I'd argue for the CMOS, without which none of this would be possible...but let me know if that's too much on the EE side to fit the title.
"Routine" as he means it is a control structure with an implicit stack with a memory range associated with each JMP. (That is foo(int x) has four bytes on the stack devoted to x). If a language has no routines, they can be faked out if you can make a stack data structure, which would be a little difficult in basic, having no pointers or references. Hence, I'd say pointers are somewhat more "great".