What are the pros and cons of pair programming? When is it valuable?