Trying new languages is considered a good habit by most software craftsmen. At the same token, generally most professionals agree that you can’t practice aimlessly you have to have driven, deliberate practice. Just programming doesn’t make you better. Programming with a goal, and making bugs and or hard things to maintain is good practice. Realizing that you need to then practice those things which you found difficult and then making that your sharpening of the saw effort is the real goal of practice.
In an effort to both learn more python, and get better at writing code in general, I have decided to practice python and math by combining them to make the project euler algorithms.
I think that the python koans were a great experience in learning what the language could and could not do. However solving problems and getting in the thick of them with the language really teaches you how to figure things out in that language.
As promised I’m going to continue to write about deliberate practice, and its role in craftsmanship. One way that I am deliberately practicing is using the project Euler problems. These problems provide a good problem domain to play around in, without getting caught up on the concepts in which to practice principles and self disciplines of the craft.
I’m using a language I have not used as much as others I know, python. I really enjoy python, this lets me use it in the “trenches” as it were. The second piece of the practice which I need right now is TDD. Its not that I don’t believe in TDD or haven’t done it, its that I know I can get better at it such that its my main mode of operation, and not an after thought when I have time.
The TDD reason may push me into practicing in a different language as the testing tools for python are more primitive than other languages, although testing is not difficult the test runners and tooling is just rougher, in my immediate experience. Given this practice it may not be a problem.
I’ll post an article with my progress and the metrics I’m using in my practice. My initial goals for the practice are, get through the first 10 euler problems, in python, with test coverage.