Pair Programming: The Good, The Bad, and The Ugly