Thursday, June 5
Back from Italy and XP 2003.
How do you automate in three months a procedure it takes 6 months to train a new clerk to do?
No matter how smart you think you are, you've got an analysis challenge.
A pitfall to avoid is refactoring the manual procedures. These have been optimised to to minimise human work. In this project's case, some of the complexity comes from shortcuts taken to minimise calculation. With the machine, we would prefer to optimise to minimise the number of rules. Calculation is mostly free.
So spending time in analysis to reduce the number of rules to follow -- refactoring the original process -- is tempting. But it takes time we don't have. So Plan A is always to code it exactly as the clerks do it.
I can still refactor the code without consulting the trainers. I've already done some of this. The very concise APL source code allows patterns to show up at a high level. Since we now have a useful library of test cases, I can refactor these and test. In fact, doing this allowed me to catch what I believe were misunderstandings on my part, which had not been caught by the application test.
But refactoring this way has a drawback. The first version of the application code follows the trainer's instructions precisely. So it's easy to resolve any discrepancies between our results: we use the interpreter to step through the calculation, examining the results as we go.
I can't overemphasise how useful this has been. The communication process has been dramatically shortened. Effectively I'm now pair programming with the customer, who is reading the APL code off the screen, seeing her instructions reflected in control structures. (So APL is 'unreadable'? Match that, Java programmers!)
Refactoring the original process to simplify the rules is a whole new ball game. Slavishly following the existing rules, no matter how baroque they might be, has a clear advantage. You know that it will turn out, that you will produce the same result after some predictable amount of work. In refactoring the procedures, you don't have the same assurance. It's almost the same as redesigning the procedures, except you've got a test suite to get you home. Given that the trainers understand the reality represented by their procedures, it will probably all work out in reasonable time.
These reflections prompted by several days effort spent now on redesigning a table in which intermediate results are presented to the users. Using our system to display this provoked the users to suggest a more orderly presentation than the one they use themselves. We're still working out the consequences.
I felt a twinge of unease when I heard we were doing it. The lesson learned: on a sprint project like this, refactoring the users' processes can be a significant cost.
That said, we are getting it straight and it looks like the calculation rules will come out significantly simpler, with good consequences for later work.
posted by Stephen Taylor |
6:10 PM
|
|
|
About this blog |
|
This is the journal of an APL project in which I'm trying out some XP practices. I presented some of my conclusions in a research report at the XP 2003 conference in Genoa in May 2003.
This is also my exploration of blogging. So you may find the appearance of the blog changes drastically from time to time. Or it might be broken next time you visit. It's my personal sandbox.
|
|
Quotes |
|
It's so refreshing to have an almost instant IT solution without endless meetings, planning and yet more meetings.
We've probably been spoilt for the future, but long may this approach reign!
Kevin Wallis
I love it when a plan comes together!
Kim Kennington, The A Team fan
Sarah said
Less is more;
for what we are about to receive, to APL we are truly grateful !!!
Sarah Glasgow, Thomas Cranmer fan
I'll say no more than necessary; if that.
Stephen Taylor, Elmore Leonard fan
|
|
Links |
|
The Agile Alliance is a non-profit organization dedicated to promoting the concepts of agile software development, and helping organizations adopt those concepts
XProgramming.com an Extreme Programming resource, including XP Magazine
Dyadic Systems the Dyalog APL developers. Home of D, Namespaces, Reference Arrays, and
possibly the finest development environment for GUIs in any language
A Programming Language Paul Mansour's blog on APL software development, and inspiration for this blog. Paul, imitation is the sincerest form of flattery
Vector the Journal of the British APL Association, edited by Stefano 'WildHeart' Lanzavecchia
SIGAPL the ACM Special Interest Group for APL and J
Eberhard Lutz on collection oriented languages
Comp.Lang.APL discussion board
|
J Software
Home of J, Iverson's successor to APL, with special emphasis
on understanding mathematics. Take a free
copy for personal use
|
A+ a stripped-down, ASCII-only, run-like-a-train APL subset designed for Morgan Stanley's trading-room applications by Arthur Whitney, the original Jack of Speed
Kx Systems What Arthur Did Next. After Wall St, the language Whitney wrote for his own use to program a database to run 1-2 orders of magnitude faster than Oracle. (Take a free evaluation copy.)
Pavel Kocura teaches K at Loughborough University
|
|
Code |
|
This site uses a special font to display APL code that may be downloaded from Dyadic Systems.
Correspondence: sjt@lambenttechnology.com
|
|
Archives |
|
|
|
|
|
|