A good programmer knows how to represent a large correct program as a number of small correct programs that interact, thereby eliminating complexity. Bad programmers get lost cause they run out of brainspace to hold the complexity of a 10000(0)-line program. Good programmers don't need to.