Recognizing and responding to "bad smells" in extreme programming | Synapse