Thursday, December 29, 2011

Don't be a 15th-century Venetian bank clerk


Reading the excellent "Double Entry" recently I came across the following quote from Summa de Arithmetica, Geometria, Proportions et Proportionalita (no, I haven't read it either. Or am I being presumptuous?), written in 1494 by the Godfather of double-entry bookkeeping Luca Pacioli, on the subject of unreliable office workers:
"...in these offices they often change their clerks, and as each one of these clerks likes to keep the books in his own way, he is always blaming the previous clerks, saying that they did not keep the books in good order, and they are always trying to make you believe that their way is better than all the others, so that at times they mix up the accounts in the books of these offices in such way that they do not correspond with anything. Woe to you if you have anything to do with these people... Maybe they mean well, nevertheless they may show ignorance."

Sound familiar? As Jane Gleeson-White - author of "Double Entry" - says, "Nothing much has changed in five hundred years." There are any number of IT people who rather than spend a bit of time and effort learning how and why their immediate predecessors, the people who worked on the code before they did, did things assume that they know best and mix up the code by adding their own unnecessary bits "in such way that they do not correspond with anything". The code becomes more complex, but the net contribution is a negative one. The code doesn't do anything it didn't do before, but it does it in more ways now. Ever worked with one of those clerks? Ever been one? C'mon, be honest. Yes, and yes, right?


Nothing ever changes, it seems. Doubtless there were impatient Cro-Magnon guys who claimed their way of lighting a fire was the best, and that the last guy who lived in this cave couldn't rub two sticks together to save his life. At this stage it's appropriate to quote from another towering figure in the world of ideas:
"There's a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming: it’s harder to read code than to write it.
Yes, Joel Spolsky got here before and wrote the definitive post about medieval clerkly behaviour. So the next time you see some unsupervised codefreak reinventing the wheel, badly, and mouthing off about how the code's a mess, and they should have used this and that great framework etc., just say to him (and it will be a him): "Hey droog, what are you - a Renaissance-era Florentine municipal loan bank quill-pusher? Use the StringUtilities class like the rest of us!".