Teaching introductory programming based on early test development is discussed in this paper. An advantage of this method is that students acquire procedural abstractions rapidly, by recognizing the redundancy of testing code, a practice also reinforced by the programming of baby songs, where repeated lines require procedures, and parameters show themselves as leading variations. This use of tests and songs provides very useful insight on teaching programming to beginners. Furthermore, conditional compilation is used to crisply separate tests and the code to be tested, preceding the introduction of contemporary extreme programming practices, a process again highly recommended for beginners, before the idiosyncrasies of a complete testing framework like JUnit can be introduced.