Working on Iteration 1 for the course project did not go as hoped, at least for me. To start, my partner and I both kept pushing off working on it. I think for me personally, I thought the specifications were a bit ambiguous, and was hoping for more clarification. Part of me also thought that I knew the gist of it, and it sounded easy enough that it wouldn't take that much time or effort. Then I let it slip my mind, and time kept flying by until I realized that we really need to get working.
I got started on the project on my own with few troubles: I was simply using the ideas of the WordCount.cpp file that we worked on in lab 3. I made regular expressions for the token types, and made tests for the ones that I wasn't so sure about, like strings. I also started working on the scan method, but didn't finish the implementation. I realized later that I was probably taking the wrong approach to coding, because I hadn't been writing tests for the code I was writing. In addition, I didn't have much to test, since I was only working with methods that we had used in lab 3 for WordCount. I left the rest of the method to my partner (and eventually me) to work on later. I left comments in the code as notes to him with respect to my vision for the rest of the code, and some explanations of what I had completed. This was on Monday night.
On Tuesday, my partner added some more code to the scan method, matching all of the regular expressions to their token types. I had some time to work on the code that night, as well, but since he was working on it at the same time, I was afraid that merging the code would mess everything up. Thus, I let it be. We had already planned to work together on Wednesday night, anyway, so I just waited until then.
Wednesday night came along, and my partner and I got together to do some pair programming. We needed to finish implementation of the scan method, as well as write some more tests. Basically, we first focused on passing the tests that were already given to us in scanner_tests, and then we created additional tests for the components we used in the scanner. This wasn't the way we were supposed to test our code, but my partner and I didn't feel that there was really anything to test outside of methods that we had already worked with in lab. Writing the scan code beforehand took way too long, though, because neither of us knew C++ very well, so pointers especially were throwing us off. We finally finished at about 2 in the morning, and did some fine tuning during the day on Thursday (when it was due).
Something I really wish I would have done for this iteration is start early. I knew that I should have worked on it sooner, but other assignments and plans kept coming up, so I just kept pushing it back. I also wish I would have reviewed C++ more before working on the project. I only got through the first assigned chapter of reading for the "Thinking in C++" book (oops), so that was a major hindrance to my work. I'm definitely going to work on those two points to make the next iteration run more smoothly than this one did.
On the other hand, I found that coming up with the workings of the scanner was fairly simple, besides linking the Tokens together because of pointer issues. We had already been exposed to WordCount, so it was simple (for me, at least) to turn around and use the same ideas for the scanner. I also found it helpful to have a partner to work with for this, so that we could bounce ideas off of each other to get our code working. Personally, I normally don't work with partners. I tend to become a control freak and end up doing most of the work myself, and if I'm going to do that, I'd rather not let someone else take credit for a lot of work that I did. I liked when we pair programmed together rather than working separately because I don't like having to resolve merge conflicts, even though they're normally easy to fix.
Overall, Iteration 1 felt more like an experiment than an actual project for me. Our solution ended up working, though, so I guess we did something right! Now that I know what we shouldn't do, this upcoming iteration should be much easier to get through.