The difficulties involved in working on a collaborative programming assignment tend to revolve
around coordination. If a particular piece of the program is being worked on by both members (worse
still with more) the process of managing changes can be a bit of a mess.
The great benefit to having a collaborative effort came from my partner and I splitting duties.
One of us was designing the data structure (and associated functions) for token elements, while the
other was working on defining the regexes. Even though it was difficult to predict what code structure
would work best for the other person, I felt we did a good job. I think this strategy was the best way to
reduce confusion and duplicated effort, since there were clear tasks for us both.
The troubles came when we packaged the final submission. As I knew I would be busy with
other demands, I had asked my partner to take care of the compile script and creation of the
tags/iteration1 folder. A small break in my schedule gave me time to hop on quick to do some of the
work. I created an Iteration1 folder while (unbeknownst to me) my partner created iteration1. Neither
one of us was aware of the mix‐up until later that night just before submission time. Worse still,
changes were made to the code my partner submitted and I scrambled to make the folders identical
(being unsure of which folder would be used for grading). The fault here was my own. It had been
decided that my partner would take care of those late‐minute details and I felt bad about having had to
leave the rest to him. In hindsight, I should have stuck with the plan and relied on him.
In both situations, if there were just one person working on the project, there wouldn't have
been any communication lag. That said, I think things went very smoothly overall. It's necessary for any
group to accommodate one another's strengths and weakness. That, of course, requires accepting that
we need to help and be helped. In the future I think we'll better delegate jobs and I'll do my best to
keep off my partner's lawn.