I believe in software craftsmanship and in training to become better.
That’s why when I was challenged at work to take a few hours each week to train, I thought “What a great opportunity!”.
Well that’s what I should have thought. Instead I said: “But what about the project? The deadline? The world is going to end!”
Then I realized how lucky I was to work at Pyxis. I asked the Product Owner and it wasn’t such a big issue.
Lesson #1: Ask and thou shall receive
For my first training session, I decided to do the some katas in ruby as it has become my language of choice for pet projects.
Part 1 – Primes
I started my first session with the Prime Number kata. I like this kata since it is really simple, can easily be done in less than 30 minutes (closer to 10 once you’ve done it a few times) and I learned a few useful tricks in ruby by watching this kata permormed by Uncle Bob on Katacast.
I plan on doing the Prime Number kata every week as a warm up.
Part 2 – Bloom filters
Afterwards I tried kata #5 from http://codekata.pragprog.com/2007/01/kata_five_bloom.html – implementing a Bloom Filter. It’s an algorithm that probabilistically determine if an element is part of a set. It works like this : if the element is in the set, it will always return true. However if the element is not in the set, the bloom filter might still return true depending on some probabilistic stuff.
Here are my highlights of the session:
- I learned a new algorithm, it’s purpose and a few use cases
- I performed everything in pure TDD
- Continued to learn new keyboard shortcuts in Rubymine (I try never to use the mouse in katas. If there is a keyboard shortcut I forgot, I look it up and make a point on using it)
- I managed to take some time to train!
The only downside I can think about is that I spent a little while trying to configure ruby 1.9.2, rspec and the latest beta of Rubymine 2.5 before reverting to ruby 1.8.7.
As for improvements, I see lots of ways to improve the Bloom Filter katas, especially when it comes to my tests. I’ll give it another try next time.