Is completion in sight?

After a delightfully illuminating code and coffee session this Saturday I was able to finally surpass in Ruby what I had started in Python. That is, I was able to successfully evaluate a Tic Tac Toe board and determine if the game is tied, if there is a winner present and if so which marker type won the game. With the ability to efficiently evaluate a board I know that the next step of creating the AI portion of the game is well within my grasp. I can use part of my algorithm to evaluate the board for a winner in order to evaluate the board for strategic opportunities.

I also learned of a term at code and coffee related to Agile software development: “story.” A story is a portion or attribute of a larger project that gets completed on its own. I have created my own log of stories in a structured yet somewhat convoluted way that can be seen in this Google Doc.The pluses next to each item denote a completed story, and the minuses denote a story yet to be completed. In this way I have found  that the project is much more manageable and approachable, and unit tests can be practically copy/pasted from the list of stories.

As I continue to read Apprenticeship Patterns I have come across a few principles I find applicable, such as valuing learning and long-term growth over salary or traditional notions of leadership. Not that I have had opportunities for salary or leadership in regards to my programming experience, but it is something to keep in mind as I grow as a craftsman. That is not to say that salary and leadership experiences will not come, but the primary motivation for continuing to craft software should be crafting itself, not the trappings that come with it. After all, I am continuing with this pursuit because of the immense level of satisfaction I derive from learning and solving complex problems with newfound knowledge.