Showing posts with label resume padding. Show all posts
Showing posts with label resume padding. Show all posts

Friday, 27 May 2011

Package Vacation

I knew the end was at hand when Eric and Bash started actually assigning me work that was in line with our our department's stated goals.

Firstly, I was shocked that the work was actually assigned to me, personally. I know that Eric and Abhiraj, who should have been doing the work, probably handballed it on because of their openly-stated fear of external technologies, but to this day I'm not sure why they gave it to me and not to someone like Harj. Eric later told me that he was trying to 'help' me by giving me these tasks: perhaps he felt bad about railroading me and my performance review. I like to think so. Eric was a fundamentally decent guy; he was just scared of change and too busy to want to deal with an ambitious young punk like me. I think it just took him a while to realize that I wasn't just being a pain in the arse for the sake of it--I wanted to do good work, and that perhaps he realized that I'd been right about some of the things we had disagreed on.

Gavin Ramsay and the other guys at the head of our department were finally starting to pay attention my group, although they didn't really know what to do with us. I was given the task of beginning to integrate our application into a large system that belonged to the cartography department--a group we had previously had nothing to do with. I couldn't see what  this had to do with our ultimate goal of becoming part of Tarzan--a separate platform--but I did what I was told. It took me a week to get the network privileges granted that would give me  access to the cartography codebase, and then another week to get it to build on my PC. Then... Ramsay, or one of his lieutenants decided that this was the wrong way to go. Instead of integrating with the cartography system, would instead convert the app to run on top of the CAD engine.

This made a bit more sense, since Tarzan also ran inside the CAD app, so I felt a little better about doing this one. It was no easy task, because our product did not use the standard Windows framework correctly and it took me a while to decouple it, but after a few days I had it hobbling along. The graphics engine (including, god help us, the 5t4t3 m4ch1n3) didn't work in the new environment (which we'd know a priori), but all the database and the computational routines worked fine.

Finally, somebody remembered that we were supposed to be developing a part of Tarzan, which had its own database, graphics and geometry libraries. Surely we should be using those? This, finally, sounded like the correct course of action to me. Eric asked me to create an object model for our system and to see how that would map onto Tarzan. An object model! Two words I had never thought to hear spoken consecutively by Eric, much less preceded by the phrase "I want you to make an--".

I made a good start on the object model, but I never got to complete it. Suddenly we were deluged with meetings. Our department was redistributing work from Tarzan and other products, and we were branching out. The new projects were all named after characters from a popular Sci Fi movie franchise, and I couldn't help but notice that the ones assigned to us were all characters that were killed in the first film.

I have vivid memories of sitting on a conference call with Eric during which some heavies from the Tarzan office handed off of an older product to us. This product, which only a few customers used,  had not maintained in years. I could clearly hear the heavies on the other end of the line snickering at us. Eric told us it was good, we were okay--look at how much new work they were assigning to us!

In the meantime I had a revelation of my own: there were jobs posted on the corporate intranet. What's more, there was a rockstar opportunity going at the Montreal office: they were looking for someone with my blend of skills for what I thought was the most interesting line of products in the whole organization.  I was looking for as a next step.

By this time I had been made aware that our emails, IMs and sometimes our phones were monitored, but I thought that  my application would stand a better chance of being read if I sent it through my internal email account. I wrote a cover letter, attached my resume, fired it off... and then started praying that Bash wouldn't see it.

The manager in Montreal wrote back quickly. He told me they were very interested in me and they would start interviewing shortly. I would require a different visa for Canada, but being a transfer within the same company would make that relatively easy, I hoped. That was good--I was keen to get out of the place I was in, although I figured I was safe for another three or four months.

The next week, Bash called each member of staff into his office individually to tell them that the company really appreciated our efforts. As a reward for our loyalty and hard work, we were each awarded an extra block of stock options. "Thanks," he said, to each and every one of us. "I really mean it."

Later in the week I received a phonecall from Montreal at my desk. "Pike, I've been trying to set these interviews up for next week," said my prospective new manager, "but we've had to delay them. Monday is a public holiday and Tuesday we're having a reorg in this office. If you don't hear from me on Wednesday, I'm no longer here and you can probably forget about the job."

On Wednesday I sent an email asking how it had all gone. "I'm no longer in charge of that area," my contact said, "We've been told that we'll have to move an existing team member into the position if we want to fill it."

The following week, on Wednesday night, I came home to find a message on my answering machine. A company located just across the Bay had received my resume and they wanted to interview me. I was still bitterly disappointed that I'd lost out on Montreal, and I didn't even remember applying for the job, but I noted down the phone number anyway. I hadn't decided if I would call them the next day or not. Maybe if I got bored.

Thursday morning I rolled in to work at the normal time to find panic, instead of the usual  despondency. We had surprise visitors from head office: Gavin Ramsay, plus hangers-on. I knew what was coming.

The site was gone. They were killing us, discontinuing our product.

The senior guys--Bash, Abhiraj, Eric, Harj, John, and a couple of the analysts were all given the option of moving up to the North East to join the main team, but the rest of us were out on our arses with two weeks' notice and a redundancy package based on length of tenure.

The package was a tidier sum than I expected. It was contingent on us signing a form waiving our right to sue the company for wrongful dismissal. The new options Bashir had dished out with such ceremony were worthless: we had to work for the company for six months after they were issued before they would become valid.

I went back to my desk after the meeting and called the company across the Bay. When would I be available to come in for an interview? they asked.

"How's tomorrow at 9?" I replied.

Friday, 15 April 2011

Pattern Recognition

We were working nights and weekends, trying to put out a release, when I was assigned a bug in the patterning system.

This was deliberate, of course. Bashir had scheduled quarterly releases for one reason and one reason only: he wanted to show deliverables on his resume. In order to make sure that these were attainable, he deferred all new development work in favour of a less risky and time-consuming approach: working through the bug list. Bash would choose a number of defects and declare that they had to be completed for the release. As the list reduced in size he would top it up to ensure that we worked through through the weekends.

I'm not making this up. Bash was heard to say, in front of the entire team that he liked to burn developers out and then hire new ones for cheap. When this elicited complaints, he arrived at a staff meeting with a three inch stack of documents. "You know what these are?" he asked. "These are all the resumes I've received from people who want your jobs. And that's just this week." He said it with a smile on his face.

During one of these death march releases I was assigned the defect in the patterning system. "An easy one for you, Pike." I didn't like the patronizing tone, but I didn't want to reinforce my growing reputation as a troublemaker, so I took it on without complaint. It was, after all, my job to fix these things.

I spent more than a full day trying to determine what this 'easy' problem actually involved.

Our software allowed users to set a line style with which two dimensional shapes would be drawn. Dashes lines, dotted lines, dash-dot-dash, crosses--there were at least a dozen options.


In addition to that, users were able to provide cel patterns in two different formats, in which case the shapes would be drawn as a continues string of cels.

All of that worked fine, and I couldn't find a problem that needed fixing. Eventually my manager Eric managed to communicate to me that it was possible to have a cel and a line style active at once. In this case, the cels that constituted the objects would themselves be drawn with the selected line styles.


This worked fine for one for the cel formats, but the other yielded results that were... undesirable. At some point it the graphics engine would take a left turn and the shape would unravel into something unrecognizable.


Nobody had analyzed the bug before it was assigned to me and I had to grill the dev manager, Eric; a product manager, Kerry; and the architect, Abhiraj, who had written the code in the first place. Nobody wanted to help me; they were all working weekends as well, and everyone was tired and surly. But, finally, I understood what the issue was and I was ready to plunge into the codebase.

In this user interface was a swiss cheese, riddled with gotos and encrusted with ten years' worth of black mold. The rendering system was a plate of spaghetti, in which data structures were transformed and reconfigured endlessly as they were passed through an finite state machine which would calculate which part of the world to display, transform the data as appropriate, pipeline it and then flush it to the screen by passing it through a succession of abstracting libraries. It was an unstructured mess that had grow beyond the capacity of any single developer to understand. Changes were hacked on, because there was no other way to improve it, so the the longer it remained the worse it got.

The finite state machine had only one comment in its thousands of lines of code:

// state machine.

I changed it to

// 5t4t3 m4ch1ne

and wondered what the fuck I was going to do next.

It was probably the most difficult code I have ever traced through in my life. The cel pattern code for the two different formats diverged and converged in many different places and I had to step through the execution of the program dozens and dozens of times (thank goodness for the debugger!) in order to have any idea of what was going on.

Eventually, after beating my head against the code for three days, I had it narrowed down to a single function. Two dozen lines of inscrutable code. Perhaps, if I wasn't on the verge of collapse, I would have been able to figure out what was wrong, but I just could not work it out. Source control showed me that it had been written by Raj, so I showed it to him and asked what it did.

Raj's eyes bugged out as he regarded the code. Then they narrowed to slits. "I'm far too busy," he said. "Any idiot should be able to work that out."

Eric saw that I was toast, so he let me handball the bug on to Sam, another junior. I showed Sam what I'd found and within an hour or so he nailed it. It was, indeed, somewhere in the twenty four lines I had identified for him.

Once Sam checked the fix in, Bash called everybody together to tell us the good news. "Sam here has, in one day, solved one of the most difficult bugs in the system. It's been in there for nearly ten years, and nobody has come anywhere close until Sam put his brain to it."

Sam wasn't one to grab credit. Any for of attention would turn him scarlet and rob him of his powers of speech, and I'm sure he'd have said something if he was at all capable. Bash, on the other hand, was very keen on performance measurement and metrics, and he knew exactly how much time and effort I'd spent tracing that defect through the worst the codebase had to offer.

Bashir clapped Sam on the back, smiled at me, and went off to his office to write up an Employee of the Month commendation for Sam. I believe that, in conjunction with Sam's other commendations, it actually resulted in cash bonus. Sam certainly deserved it; he was every bit the uncomplaining, efficient and conscientious employee that I was not.

I went back to my desk and spent a half an hour polishing up my resume. It was the weekend, after all.