One purpose of CRC cards [a design tool] is to fail early, to fail often, and to fail inexpensively. It is a lot cheaper to tear up a bunch of cards that it would be to reorganize a large amount of source code.
So, what does it mean for teaching and learning programming when the solution to every beginner problem is available on the Internet?