Extreme Programming in APL
Exploring XP principles in an APL project


Friday, March 14  

Back to clients today after working solo yesterday. Classes for printing are shaping up though slower going than I had estimated. I occasionally imagine myself pair-programming the new Diktat classes. In my imagination we seem to be working faster, but then in my imagination I was working faster than this solo.

While I was away the trainers devised new test cases. With the refactored code, setting up the tests is slightly easier, and reconciling differences with the model answers is quite a bit easier.

Joe joins me next week for 2-3 days to see if we can work out how to share development. It's a slight but manageable risk to having Release 1 ready for 25 March. (We deferred by one day so I can attend a wedding out of town.)

posted by Stephen Taylor | 10:31 PM


Wednesday, March 12  

A day spent refactoring. Expected to spend 2 hours on it this morning, spent the whole day.

First renamed some extracted data fields to fix mistakes in my understanding of which mainframe screens they come from. That broke most of the 32 cases in the test suite, so I edited it to reflect the new names, and wrote simple tools for that as I worked. That did take about 2 hours before we were passing the tests again.

The APL calculation functions started off closely following the clerks' checklists. As I've developed them, the structure of a Policy class started to clarify in my mind. That got clear enough today that I rewrote the code around a class structure, then revised the test suite to correspond. I also took out a number of algorithmic redundancies seen in passing. By 4.30 all the tests were passing again.

Conclusion: while I had a different agenda in mind, the refactoring was better done today. I'm now in good shape for tackling the output documents tomorrow. And I would never have been able to complete such radical refactoring in a single day without the automated tests. Never, ever.

posted by Stephen Taylor | 10:10 PM


Tuesday, March 11  

Pair programming with the customer. The clerks training me are reading over my shoulder now, checking rules on screen. The code to them is like a foreign language in which they recognise some words and phrases. I have laid out the high-level code to resemble their own procedure checklists, with similar comments and headings. So they can find their place and look for familiar terms. And I've been careful to use their terms as I build up my vocabulary of APL functions.

Today Kim returned from a conference with other trainers to find out whether we had included a rule they had been discussing. Do we, she asked, check whether the valuation date is earlier than the third policy anniversary before the original retirement date? She scanned the screen, found her place and saw

valdate>2 yrsBefore pol.StartDate aoob4 origNRD

They can't write code, but I've been translating it into English, pointing at the words, and they follow the thread. It's like my Italian. I've never studied Italian, but I can recognise enough to say what a newspaper article is about.

I'm ruining them for traditional software development.

Got hold of an output document and its embedded macros today. Tomorrow I'll build the text library, the scribe to produce an RTF document from a diktat, and convert the Word macros into a script. Yee ha.

posted by Stephen Taylor | 6:32 PM
 

Another day away from the customers: doesn't feel right any more. Visited Paul to discuss the data fields to be retrieved from the mainframe. Do we know what they are yet? Yes and no. Yes, because the clerks have reviewed the mainframe screens with me and highlighted the fields they copy. No, because that process missed some fields, which we found when they taught me some of the procedures and I coded them. I haven't coded all the procedures ergo we don't know what all the fields are yet. So I upgraded the testing rig to index the data fields from the test suite.

Also created a Policy class and started converting existing functions into its methods, revising test cases to match.

Simon Garland suggests having the mainframe data exported as a Web Service, eerily echoing the BCS-OOPS evening seminar series Peter, Paul and I've been attending.

Tomorrow (today by the time I post this) the users and I will finish the procedures for Release 1 and review the output documents and the rules used for writing them.

posted by Stephen Taylor | 1:02 AM
About this blog
Quotes
Links
Code
Archives