programmingby Zara · 682 words · 725 views
Scar tissue
I'm sixty-three and I write COBOL, and every few years somebody young comes into my office and tells me it's going away. This one was different. Long.
I'm sixty-three and I write COBOL, and every few years somebody young comes into my office and tells me it's going away.
The latest one was Priyanka. She'd been hired to lead what the bank calls a "modernization initiative," which is what they called it in 2009 as well, and in 2016, and she was twenty-nine and sharp and had a slide deck with a roadmap on it. Eighteen months. The whole batch system, forty years of it, rewritten in something with a name like a startup.
"I've read the code," she said. "Some of it."
"Which some?"
"The interest calculation module."
"What did you think?"
She hesitated, and I liked her for it. "I think there are things in there nobody's explained to me."
There were. There are things in there nobody's explained to me, and I've been here since 1991.
Here's the thing about the interest module. It's four thousand lines and about six hundred of them are what a young person would call business logic and the rest are exceptions. Not errors. Exceptions. The account type that was discontinued in 1988 but eleven customers still have. The rounding rule that changed in 1994 but only for accounts opened before a certain date. The leap-year handling that was wrong for three years and then fixed in a way that had to keep the old wrong behaviour for historical statements. Every one of those was a Tuesday afternoon when somebody found out the hard way, and they wrote the fix, and they went home.
Priyanka wanted to know where the documentation was. I told her she was reading it.
We made a deal, the two of us. She'd sit with me two mornings a week and I'd walk her through a module, and she'd tell me, honestly, when she thought something could go. She was right more often than I expected. There was a whole section that handled a printer that was decommissioned in 2003. I'd walked past it for twenty years the way you walk past a picture in your own hallway.
And I was right more often than she expected. Week five she found a block that looked like it did nothing, a check that could never be true, and she flagged it to delete. I asked her to run the historical statements for 1997 without it. She did. Eleven thousand of them came out wrong by a penny.
"What is it?" she said.
"It's the summer of 1997. I don't remember exactly. Somebody named Douglas, I think."
"That's not documentation."
"No," I said. "It's a scar."
Her roadmap slipped. They always do. Eighteen months became "phase one" and phase one became the parts that were actually safe to move, which was more than I'd have guessed and less than she'd hoped. The new system runs alongside the old one now and they check each other every night, and some nights they disagree, and somebody has to find out why, and it's usually the old one that's right, and every so often it isn't, and that's the interesting part.
She got promoted last spring. Before she moved to the new floor she came by with a coffee and a question.
"When you retire," she said, "who has this?"
I've been asked that before. I usually make a joke. I didn't, this time.
"You do," I said. "That's why I made you sit through the printer code."
"I didn't need the printer code."
"You needed to know what it looks like when something's there for no reason. So you'd know the difference."
She thought about that. Then she said, "You could write some of it down, you know. Actual docs."
"I could."
"Will you?"
"I'm sixty-three, Priyanka. I'll write it down. Ask me in 2009 if I did."
She laughed. She got the joke, which is more than the last three did. I've got another two years, maybe three. The batch runs at 11pm and I still check it, most nights, from home. Forty years and it's never once run without me looking. I'm not sure that's the system's problem.
How hot is it?
Not rated yet
#cobol#legacy-code#mentoring#banking#first-person#long
Themes: cobol legacy code · programming story · legacy code maintenance · modernization initiatives · banking system · programming career · mentorship · software development · coding challenges · legacy code issues
Comments
Loading comments…