Late recap of Sep 18th session
Sorry for the slow update. The team is still going, I just got too backed up with other things to post the recap before. Sam has agreed to post the recap for September 26th, so we should be seeing it pretty soon. Please excuse some inevitable inaccuracies in the following due to the memory fade over the 2-week lapse.
The attendees were Kristie, Jordan, and I. It was mid-iteration, but we spend a long time reviewing the stories, partly because Kristie came up with some good questions that were worth taking time for. It was definitely worth the time spent to get everyone on the same page as to what the software is for, and clear up confusion about what some of those cards even meant. So, we wore our customer hats for a while, rearranged some priorities, clarified some cards, etc.
Also, during the planning discussion, I brought up the fact that I had tried to user-test the front-end at the end of the previous session, and ended up in a semi-lengthy debugging session, only to find out that the code was failing with an error because I had given it bad input. Clearly, the error reporting was inadequate because bad input is expected to be par for the course in a live usage situation. We needed clear error messages.
Of course, this should have been part of the spec for each of several existing stories before we ever started, and now it was clear that we should need a new story card to add them in. Furthermore, even though it was mid-iteration, the lack of clear error messages for the user was also wasting the time of the developers, so the story needed to be moved up.
The stories we worked on were Friendly Error Messages, Re-Expand All Macros, Context Parameters, and Basic Standard Error Macros. Why so many? Well, it had to do with effective use of time. There wasn't much time spent on Basic Standard Error Macros because we decided to just give it a quick review, decide that it still looked ugly and disheartening, and put it off until next iteration in the hopes that a different set of available eyeballs could improve on the design. We did a small amount of work on Friendly Error Messages, but intentionally shunted most of that effort off to the next iteration, so we could work what was already scheduled for the iteration, Re-Expand All Macros, and Context Parameters.
As I write this, I see a semantic ambiguity in our story naming that we might want to address. Basic Standard Error handling refers to macro code we are writing for the users to employ with our metacode system to insert error handling into their code. Friendly Error Messages refers to the error messages the user sees when running our metacode system with incorrect input. We might need to come up with a more precise grammar to make these distinctions more clear.
Anyway, what we did do for the Friendly Error Messages story is get meaningful errors from the XML Parser when feeding the munged VB Code into it. The funny thing is that we were already raising a custom error code, and had a test for receiving the expected code, but we had no meaningful text to go with it, so the text we got was the text for a completely different VBA error. The XML Parser, though, is quite capable of providing concise detail about a parsing error, so we built an error message string out of that info. To be honest, it looks like we did not write a test for that, considering the test for the error code to be adequate, but (since I can see the future), I know that we have perfectly good tests for error text in other cases. It would be too much to predict the precise output from the parser, but we could at least check that the string contained certain expected constant expressions.
As for Re-Expand All Macros, I was not involved in the work on that story, but I remember that we had believed it would be trivial, and just work, but that was not the case. I believe some refactoring had to be done to make the code clear enough to work with. As I recall, this story was completed, and thus, was the sole completed story for the iteration.
The Context Parameters story had been going on for a while and was taking longer than we thought. Basically, we had decided the best way to proceed was to create a code line reader class that would create a collection of code line object that each had the raw text, and all the context information that might be needed, such as procedure name, procedure type, etc. The trouble is, getting the VB IDE to give up that information is like pulling teeth. You basically have to play 20 questions and check for errors until the VB IDE agrees that you've told it what you want to know. We did not quite finish all the needed tests for the line reader, but seemed to be quite close. Of course, finishing that still doesn't finish the story. Next, we have to modify the existing code that expects to parse text blocks to now take collections of Code Line objects instead, and figure out how to make many existing tests that use plain text work with that - I speculated that a mock line reader that uses text for input might be the way to go. See the next recap for how this turns out.
The end of the session was the end of an iteration with 1 story done. The history of the 2-week iterations up to this point reads 2, 0, 2, 1. That's gives us an average velocity of 1.25 stories per iteration.
