Coming off of the first iteration of this semester's project, there are definitely things that I need to improve on and do differently, as well as things my partner and I need to work on together. However, this does not mean things didn't go well overall.
Initially, it took awhile for my partner and I to get rolling on the project. We weren't really sure where to start, so we began by doing small sections, such as implementing the Token object and writing regex strings, while we conceptualized what we needed to do and developed a plan of attack for the large portions. This method had benefits, as well as issues. I feel that our approach to starting the project was a good one. We got the mundane easy code out of the way while we developed a plan, so in that regard we were being efficient. One downside is that we got hung up on trying to figure out how to do things in the style and implementation of the example code that was provided. We were so focused on how to implement things completely based off of the code provided in the initial scanner.h file that we failed to open our minds to other ways to do things (we struggled for awhile with how to use and implement TokenMaker in a way that made sense). This led to a lot of time wasted before we allowed our selves to think outside of the box and develop our own idea (instead of trying to decode another person's idea).
Once we finally had a plan, we were quite productive with out time. For the initial planning phase, had done most of the work on a single shared computer. With a plan in place, the large majority of the rest of our work was done on separate computers, but in the same location. This method worked out really well and I'm very happy with our results from it. It allowed us to both focus on the parts that we were individually working on, but still be able to quickly explain to each other our thoughts and code. It also made for much more efficient trouble shooting. Since we were both up to date in understanding all of our code at any point in time, we could have two sets of eyes, as well as different thought processes and understandings, troubleshooting and testing the code when odd bugs arose. This made figuring things out quite a bit faster then it would have been if we were working on this as individuals or with gaps in our understand of the code.
While we were able to work well together and used our style of doing so efficiently, one area I lacked in, and I think it is fair to say we lacked in as a team, was the process of test creation. Unfortunately both of us weren't the best at writing test cases as soon as we should have and this led to some unnecessary troubleshooting and bugs to fix. Upon completing the first iteration, both my partner and I were in agreement that this was an area that we wanted to, and need to, improve upon. I know that I personally have a bad tendency to write mostly complete functions, and then move on to the next one, with very little testing. Once I finally go back to test, I have to juggle testing and corrections for both functions, causing a lot more work for myself.
Overall, I learned a lot of useful things and discovered things I want to work on for the future iterations. Despite starting the bulk of our work later then would be desired (lots of schedule juggling with both of us working on 4061 assignments at the same time and me being out of town for the weekend before the project) and not writing enough test code upfront, I am happy with how our first iteration turned out. We developed a good process for working together that takes advantage of our personal strengths and I am sure we will continue to improve more in this area. Best of all, we finished on time and everything seems to work as desired! I hope to improve upon how we structure our plan. I also want to work on writing cleaner code that is complete and tested before I move on.