Comparing Iteration 1 to a train wreck is certainly a hyperbolic metaphor, but an apt one at that. The entire iteration, not even the majority or plurality of which was spent on writing scan, took far longer than either of us had expected.
One of our most time-consuming problems was that of formatting. In our infinite wisdom, we decided to maintain the oft-inconsistent style used in the files given, i.e. the style that uses a maddening excess of whitespace. This represents roughly 70% of our work. In retrospect conforming to a style that neither of us liked that didn't even conform to itself wasn't the best of coding choices. It didn't help that my text editor--Xcode, for those so curious--formats tabs as tab characters instead of four spaces, and that led to some bizarre layouts when viewed from the Linux machines.
Other than that, our problems stemmed from some strange compiling inconsistencies between my Mac's g++ and that of the Linux machines. Apparently, even though a lot of the C++ regex tutorials online say that '<' and '>' characters are special characters that need to be escaped in regex strings, the Linux machines throw a fit in the corner when you do that.
The rest of our working time was spent on developing actual content, test cases and functional coding. Of that, the functional coding--that being scan and all of its dependencies--took roughly an hour. My background in Java was probably more of a hindrance than a help when programming for objects in C++ with its slew of pointers masquerading as objects and vice versa, things about which we had no clue. Once we crawled across that bridge, it was easy travelling to receive nearly full functionality. Due to some of the aforementioned trials and tribulations, we found ourselves beginning again from a nearly blank cpp file. Refilling that was less of a headache than even just spacing out the parenthesization in our method declarations.
Working in pairs was never much of a hindrance, aside from the few moments of arcane warnings in the case of updating conflicts, and since my partner and I are roommates, we can keep close tabs on each others' work. We've coded together before, and our coding styles never clash, unlike one unfortunate stint at work where my partner apparently didn't believe in test cases.
As above, our first measure for Iteration 2 is tossing the spacing format that both of us hated implementing. That little David of a requirement sure slung a rock hard into our gargantuan code. Don't choose a style that you loathe, or the style won't be the only thing about your code of which you'll want to punch an anthropomorphic personification. We're also going to have to abandon my Mac's compiler, so as to not find out about errors only after three hours of coding.
Subversion was surprising success. All of the hassle from previous--and current--CSci courses disappeared in a puff of a few shell commands. Although, working in the same room led to few file conflicts, so that may have eased some of the hassle that Subversion would have brought.
I am--and hopefully my partner is--looking forward to leaving Iteration 1 behind and applying this reflection to the next iteration.