How pair programming and test-driven development looks in real life