"What does a scanner see? I mean, really see? Into the head? Down into the heart?" - bobArcterStringConst
The initial iteration, the building of a scanner, of the larger CSCI 3081 course project, the building of a language translator, went smoothly for me and my project partner. We experienced no significant moments of confusion or lack of understanding concerning the structure of the task. This clarity of thought made everything straightforward. Having a well defined problem is always a pleasant state of affairs, but I believe it was the application of test driven development (hereafter TDD) to our development process that was most responsible for our success. TDD essentially forced us to understand the nature of the problem, regardless of whether or not we already possessed the proper understanding, prior to beginning any coding. To this technique we may owe our total lack of structural bugs, though our fair share of typos surfaced in due course. TDD's incremental test-code rotation made these errors very manageable and we were quickly able to discover and fix our mistakes, eliminating the not unknown urge to beat one's head upon the nearest wall.
I found the experience of pair programming to be pleasant. I am a fan of working out loud where applicable and co-discovering insights into problems. When participants in this method are of a similar mental gait, it is my experience that solutions are arrived at much more quickly than in isolation. Certainly, profound creativity is born of solitude, and group think can fetter the most brilliant teams, but when the right intellectual space is maintained, good things are within closer reach. We completed the bulk of the iteration together in an extended session, though I do give much credit to my partner who was kind enough to take the first steps.
A small stumbling block I encountered was the creation of the tagit script. It was trickier than I would have guessed and, evidently, this is an area where I need practice. The syntax for structure of the file system and the order of the commands were not as readily grasped as I would have liked. I admit to being a naive creator of scripts, though I am certain of their value and I should like to become comfortable with their production.
Looking forward to the future iterations of the course project, I am confident about my team's chances for success. We are off to a good start. It is tempting to simply start writing the code, but I am beginning to see the real value of TDD for projects of a certain level of complexity and I look forward to the prospect of developing a TDD habit.