Code katas, practicing algorithms and TDD