Wednesday 22 October 2014

Seek and Destroy

As per Elvis' instructions, I returned to work at 2am to start work on Irwin's team. Immediately there was a problem: the building was locked up after hours. With some measure of satisfaction I called Elvis at home to get the security codes.

I rode the elevator up to the office and picked my way though the debris of the unfinished side of our floor to where my new team had their space. Irwin was waiting for me.

The situation was dire. They had promised a Proof of Concept for some government tender that was due the next day and the Enterprise just wasn't ready.  Adam and Paul, Irwin's two guys who were responsible for the server side of the product, had been in the process of re-architecting the systemwhen the PoC came up and they had had to roll back to an earlier, flakier version in order to have any chance whatsoever of delivering... anything.

That wasn't really my problem, though.

Irwin's product was an enterprise system that would deliver a version of the Consumer product--the Agent--to all of the computers on the estate. Vikram was responsible for the Agent; Adam and Paul for the server that would convey policy changes to the agents and pull data back.

Adam and Paul had written all the server code in C#, but the agent was all C++. Vikram had gone on vacation (and Paul was to follow the next day), but in the meantime the product didn't work and there were stringent security requirements from the government agency that needed to be met. My job was to ensure that the communications to and from the agent were encrypted accordingly.

I worked this out over the following sixty hours. Nobody was keen to spell out the situation for me.

Irwin showed me to Vikram's desk and and sat down next to me. "Let's pair-program this," he said, smiling. He didn't trust me.

And so we did. I oriented myself in Vikram's code... I was beginning to get a sense of why he was disliked throughout the company...  and we broke open the API documentation and I got to it, with Irwin looking over my shoulder. Occasionally he provided a useful idea. Mostly he just made me uncomfortable.

By 10am most of the office had arrived back at work and I had the encryption stuff done. I was relieved. I pulled it into a DLL that Paul could use from C# to decrypt the data and that, I figured, was pretty much everything that was required of me. Irwin disappeared back to wherever it was that he spent his days. By about midday I was ready to go home and get some sleep. But I decided to wait around and watch Adam and Paul run through an end-to-end test, just to make sure.

It didn't work. The product didn't work was fundamentally broken. They had communications between the console and the server (which of course Adam and Paul had worked together on), but more or less everything that went near Vikram's Agent was broken.

I didn't want to go home until I knew that everything worked, but I wasn't much help on the server end. The language and libraries were unfamiliar and Paul and Adam could barely keep track themselves of which code was current and which had been rolled back. I stayed around and tried to make myself useful, doing testing tasks, eyeballing unfamiliar code, trying my best to figure out what the actual fuck was going on. Irwin stayed away.

Come 5pm, Paul left the office. He had a plane to catch. We had missed the deadline, but Irwin assured us a day late would be fine. Adam and I stayed on, trying to work it through.

We stayed into the night. I slept for a couple of hours under the table in the conference room. I was useless. The product was a mess, hanging halfway between an unviable architecture that Adam and Paul had abandoned and an experimental one that they hadn't finished building.

10am the next morning the office filled up again. Adam and I were still there, and we'd made no real progress. I was practically hallucinating. Irwin said we could have another day to get it right. I had been wearing the same clothes since Monday night.

I took a break for lunch. In the kitchen, a couple of guys from the Cool Team asked me if I was transferring permanently to Irwin's team. "I have no idea," I said. "It's not up to me." I desperately hoped that I would not. I trusted Irwin even less than he trusted me.

When 6pm rolled around Adam and I delivered a cut to Irwin and Elvis... or at least, we tried to. They had gone home for the day.

We had the most basic scenarios working but anything of real value to a customer was completely broken. The encryption stuff I had written under Irwin's scrutiny during those the first eight hours held up fine, but everything I had touched since then was garbage and would soon have to be thrown out.

Adam and I went back to our homes; the last to leave the office again; pissed off and exhausted.

When I got back in the next day neither Irwin nor Elvis nor Judd bothered to thank us for our ridiculous efforts. Wilhelm, on the other hand, was fairly glowing with pride, and complimented me on the work I'd done on the encryption routines. "You are a weapons-grade programmer," he said. He seemed surprised. I doubted that he had actually seen the code, which I was not particularly proud of, and I figured that Irwin must have said something.

Looking back I think Irwin might have made a play to swap me out for Vikram. It didn't work, because Wilhelm and Vikram both had Elvis' favour. He wouldn't have done anything that might have been construed as a sleight to them. I went back to my place on the Cool Team.

Still, Wilhelm was a political force in the company and he was playing the long game. He didn't always get what he wanted immediately, but he was Teflon with the executives above Elvis' level and he knew when to be patient.

I went home and slept, and I didn't bother to go in Friday, either. Nobody said anything. I had worked something like seventy hours at work in the first part of the week.

We didn't win the PoC. I later discovered that the government agency didn't even look at what we sent to them. They didn't really care about encrypted communications. In the end they awarded the contract to a much bigger competitor because they offered 24/7 tech support. 

I didn't feel like I was weapons-grade anything; I felt like nuclear waste. Once again I started making plans to leave.

No comments:

Post a Comment