test driven development, or something