I have been positively surprised this week. Let me put you in context: In my last IPM, I was assigned to do one task: tictactoe in Clojure with perfect AI.

I estimated that story to be finished in 6 days. For several reasons:

  • I had never done a project that big with Clojure. But I had done simple katas and some exercises at 4clojure.
  • I am not comfortable implementing the perfect AI yet.
  • It took me 4 days and a half to do tictactoe without perfect AI in other languages.

Foreseeing that I would have to work hard to fit those 6 days of work into 4 and a half (the iteration duration), I did the Clojure koans in the weekend to get more comfortable with the language.

Through the week, we were doing daily stand-up. So I had to think of what I should have finished each day to meet the expectations at the next IPM. I was focusing in these two points:

  • What did I accomplish yesterday?
  • What will I do today?

First day, I managed to have almost all the game logic working. Second day, I had the CLI working and a bit of a dumb computer player. And the third day I finished the perfect AI as the computer player.

I was done! I’ve done in 3 days what in other languages took me approximately 6 days. I’m sure not all the credit goes to Clojure. I guess the most important factors that led me to that productivity boost were:

  • Clojure (Because it is a terse language and has a lot of advanced functionality already built in)
  • Daily stand-up and planning the daily objectives
  • Having done the same problem before several times
  • Focusing on simplicity: just enough to make it work

I’m still surprised.