The Costs and Benefits of Pair Programming