BOFH: The Boss, the floppy and the work 'experience'
Putting the shi* into internship
Episode 4 "Ah! Simon, Steven - this is James," the Boss burbles, pushing a young lad forward like a ritual sacrifice candidate. "James is doing a 2 week placement with us as part of his further studies."
"James!" I say, holding out my hand.
"James is here to make some modifications to the software that imports people into our security system."
I pull my hand back before James can touch it.
"MY software?" I ask.
"The COMPANY'S software," the Boss counters.
"Written by ME," I return.
"For the COMPANY," The Boss bats back. "In COMPANY time."
"What, James is going to learn and modify 53,000 lines of code?" I ask, unable to remember the number of lines I'd claimed it was in the past.
"I thought you said it was 35,000 lines of code?" the Boss responds.
"35,000 lines of the main body - 18,000 lines of utility code and dependencies" I lie, surprising myself both with my creativity and on-the-fly subtraction skills.
"I hope there's a lot of comments," James jokes, hoping to defuse the situation.
"Oh the code is self-documenting," I say, repeating a line taught to me by Hamish Marson in the early '90s.
"What does that mean?" he asks.
"Gosh, don't they teach people anything in programming fundamentals these days?" I sigh, shaking my head and wandering off quickly.
"ANYWAY" the Boss calls out. "I'll just set James up in the spare office and get him to liaise with you."
Well that's a fly in my otherwise pristine programming ointment! James will shortly find out that the 53 or 35 thousand lines of code which was my sole output for two months a couple of years ago is in fact just over 500 lines of code - the majority of which was cut-and-pasted from a web example. I think I knocked the whole thing off in one afternoon and spent the other 39.5 working days cloistered in my "programming lab" watching YouTube fail videos and playing Enemy Territory against other similarly hard-working administrators.
"Yes, good idea," I reply. "although it'd probably help if he gets some experience with userbility."
"Oh, I'm majoring in Usability," James gasps. "My thesis topic will be on page layout for intuitive user input in forms-based.."
"I didn't say usability, I said usERbility."
"It's a conjunction of the words user and ability. So we're not looking at what users WILL do but rather what they're CAPABLE of doing."
"I don't see the distinction."
"Ok, well this code is a perfect example of usability vs userbility. The code is triggered by someone from security from their desktop machine."
"So the application, what does it do?" James asks
"It takes information from the HR database about staff, including name, employment status, department, department access groups, special access groups, hours of work, etc, and then propagates the information to Active Directory and the Security system."
"Really - and that takes 53,000 lines of code?" he asks doubtfully.
"Oh, I remember back to the days when I never thought about testing for error conditions, verifying cascading authorisation trees and propagating audit trails," I sigh.
The code does none of that - so I need to get James' focus on another area for the time being.
"So anyway," I continue. "I'd like to get you to have a bit of hands-on with the security system users so you see the issues that we have."
"Sure, where is the code, on the server somewhere?"
"Don't be ridiculous, this is security code. No, it's quarantined from general access. I'll send you the code once I've dug it out of the time lock."
"Yeah, you can only check code out of the version control system after 48 hours notice - It's a security thing," I respond.
Honestly I don't know where I come up with this rubbish. In fact if we'd had a lie detector with a beep function he probably wouldn't have heard anything I said in that last sentence - if it hadn't already imploded during that blather about special access groups, etc.
So I'm going to have to keep James busy for a couple of weeks.
Two days of "meeting the users and scoping the requirements" later he's in Mission Control itching to get his hands on the code - and not just because if you showed your average security user a pie chart he'd try to eat it.
"Oh! You wanted that NOW! You should have said - I didn't actually initiate the pull request!" I gasp.
"So what does that mean?" he asks.
"Well, I need to initiate the pull request to get the code out of the system in 48 hours."
"I see." he says, a blend of disappointment and mild annoyance.
"So you WANTED me to initiate the request?" I ask when he returns two days later. "You should have said!"
"YES!" he says, no blending this time. "I don't have much longer to review the code!"
"Oh! I forgot." I say, two days later. "I got a bit side-tracked when you started banging on about reviewing the code."
"So. We. Can. Do. It. Now?" He says, measuring his words very carefully.
"Absolutely. I'll just fire up the VC client, connect to the server and...."
"Server's down for maintenance," the PFY says. "Shouldn't be too long."
"Sorry, forgot again. Got tied up in that server reboot. But wait a sec, >clickety< , it's all queued up now!"
"Right," James sighs, looking slightly broken.
"Would you believe it - I didn't realise the pull request would be delivered on a Saturday. And now the pull window's closed. It only stays open for 8 hours."
"A security thing?" James asks - slightly sarcastically if I'm not mistaken.
"Okay, so did you bring a 5 1/4 inch floppy?" I ask, when he rolls in the next time
"WHAT!?" he seethes
"A 5 1/4 inch floppy. It's another security thing. The VC system won't let you load code over a potentially insecure network to a potentially insecure machine and USB ports are glued over - also for security - but it does have a 5 1/4 inch floppy."
"I... see..." James sighs, wandering off.
"Well, the window's closed again now." I say, when James returns with a bit of IT archaeology. "Do you want me to initiate another pull for the day after tomorrow?"
"I... There's no code is there?" James asks brokenly.
"What?" I gasp. "You think I'd make up a story about 57 thousand lines of code?"
"53,000" James says
"Oh, I wrote a backwards compatibility module to allow seamless upgrades while you were away getting that floppy," I lie.
"But there isn't... any code... is there?" he sighs. "You may as well tell me - I'm leaving tomorrow."
"There IS code" I admit. "Possibly a couple of orders of magnitude less than was originally reported."
"What does it do?" he asks.
"Just imports their names and departments, flushes a differential file to the security server for adds and changes, then opens an application window on the security user's screen."
"Why does it open the application window if it's already done the work?"
"So someone from security can click on the import button and the real work gets done."
"The real work?"
"The code that makes the button go green, waits 15-20 seconds and then pops up a message window saying 'Import Succeeded'."
"A security thing?" he sighs.
"Oh no, that's a userbility thing..."
Sponsored: Becoming a Pragmatic Security Leader