Few days ago I had a pleasure to attend Coderetreat summer 2012 in Oslo, carried out by Johannes Brodwall . It was a great experience, I had an opportunity to do some pair programming with six different people and learnt quite a lot about both programming and productivity. You can find some more thoughts about the event on Anders Nordby's article (+ C# implementation of the problem we were solving throughout the day). So what was the problem? Suspiciously simple: develop a function taking an arbitrary character and printing a diamond-shape like this: test("should generate A diamond") { diamond('A') should equal (List( "A" )) } test("should generate D diamond") { diamond('D') should equal (List( " A ", " B B ", " C C ", "D D", " C C ", " B B ", " A " )) } The first approach all of us tried was a terrib