Generalization vs. Specialization in Programming