The first iteration of building the language translator presented many issues. On paper the tasks were clear but the execution did not go as smooth as me and my partner would have liked. My partner and I have enough experience in C++ and program writing in general, but many small unexpected issues arose that really hurt the overall implementation.
The parts of the process that worked well was the structure of the iteration. The process in which we test our implementation as we design our methods ensures that they are correct before we can move further. This will help in the long run to ensure our program does not contain hidden bugs, or a least bugs that are difficult to pinpoint. This process, at the same time, does not work so well if you having problems in early method implementation in which we encountered. The reason behind that is, if you cannot get certain unexpected things to work the way you want them, you cannot move to other things that can be foreseen as easy tasks. This leads, and in our case it did, to missed deadlines for programs to work perfectly as one would expect.
Working in pairs presented itself with difficulty in the overall design of the program. Although two minds are always better than one, when two minds have different ideas of how something should work it poses as problematic in agreeing on concrete plans to move forward. This was made more difficult by the accessibility of communication in which we could have serious discussion due to different schedules. This agreement was most difficult in the interpretation of the task at hand. There are many strategies that can be applied to building a language translator but the initial setup suggested certain strategies and our problem was the conclusion of the correct/best ones for the job. This was little bit of an issue for me as I am used working alone and not having to discuss implementation styles/strategies.
After analysis, it is clear what needs to change in order for later iterations to become more successful. We among others, need to have better communication with one another to be on the same page early so we can move forward as quickly as possible. A clear plan needs to be chosen mutually so a common path can be followed and no surprises occur. All the foreseen problems and difficulties need to be addressed and soon as possible to avoid hiccups.
In the future we will continue to use is the pre-coding design phase in which we discuss the problem at hand, the best strategies to complete these tasks, and the implementations that will be used. Communication practices during the coding phased will also be used in order to ensure later problems do not occur. Testing will also continue to occur often as the last thing we want is bugs in the finished product.