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.

Saturday, 21 May 2011

Rank and File

It was about the time of the performance reviews that I had a revelation.

It was the day I had a dentist's appointment first thing in the morning. I remember getting up at the usual time, making breakfast, getting in the car, singing and generally feeling like a million bucks. Why was I so happy? Because I was off to get my teeth drilled, which was an infinitely more appealing prospect than going directly in to work.

That was the day I realized how truly miserable I was. I'd tried so hard and sacrificed so much to be there at that time, doing that job, and those two years were the most awful years of my life.

I had never had a formal performance review before. At my first job, my one review consisted of "you're doing really well, here's a tiny little raise." I quit right about the time of my second review at that company. My next review at the current place had been nixed because it came at the same time as the buyout. So, this was a new process for me. It had two parts:

In the first part, your manager would review you, grading your performance, skills and personal qualities according to a  multiple choice questionnaire. The second part was called a 360 review: you were allowed to select 3 co-workers who would grade you on similar lines. Any three that you wanted, we were told repeatedly. This process was intend to show how your manager's opinion contrasted with that of your peers, and hopefully to highlight any discrepancies there.

My first choice for a 360 review was Harjeet. Harj was an engineer who had been through the same PhD program as Abhiraj, Bashir, Eric and a few of the other senior guys, and I think they tacitly acknowledged that he was the best of them.  Which he was. Rather than come to work this his friends after completing college and staying there for his entire career, Harj had gone off to work out of state for some bigger companies. So he was a relatively new player on the team, although one who came with a lot of credibility and respect. I had some heavyduty technical arguments with Harj, but I think we had both enjoyed them as much as we disagreed. There was nobody else at the company for us to have those particular arguments with. I had found in Harj a reluctant ally. The other senior guys were his college buddies, but he could see how they were fucking up left and right trying to avoid learning the company's new technology. He had managed to push through a few of the changes I'd failed to, but by now even he felt that he'd pushed his luck as far as he could. Still, he was respected, he had backbone, and I felt like he was in my corner.

When Eric told me that I couldn't use Harj for my one of my 360s I should have gone straight to the HR department, but I didn't. If there was an imbalance in the reviews it would fall to them to sort it out, but I still wasn't thinking in terms of the larger company. I figured that having Harj formally weigh in for me would go along way with my. I was dead wrong: the people I worked with knew the score and it wasn't going to change without outside pressure.

So, I negotiated with Eric. He let me have Harj if I let him choose the other two 360s. I did and the reviews came back exactly as expected: Eric and his two cronies said I was recalcitrant and arrogant, although I had some degree of competence, while Harj said that I was fighting the good fight. Even without considering my less-than-stellar employee file, when you added up the numbers it made a compelling case that I was a sack who had only found one person who would give him a good review.

The company had an official pay scale that indicated salary ranges according to the area in which one lived and the number of years of experience they had. During my review I broached the topic with Eric. "Next year I'm in the next bracket, and it's a big jump for me even to the lower threshold."

Eric told me that his own pay was not in accordance with the official bracket, to which I replied "That sucks, but your pay is your problem. My pay is mine." This was not the last time I would say these words.

Needless to say, I did not get a pay rise.

There was an appeals process for employees who thought they had been hard-done-by in their reviews. I wrote an appeal and sent it off to the relevant party, where it vanished unacknowledged. I'm no longer certain, but I have a feeling that the 'relevant party' was in fact Eric.

Not very long after the review period, every employee in the company (or at least, at our site) was asked to fill out some additional 'self evaluation' forms.  It was stressed to us that these evaluations were not for 'ranking purposes', although it was clear that thse forms, which amounted to complete resumes, could serve no other possible purpose.

I went to have a chat with Harj, and he was very worried. Like me, he was an H1B visa worker. Unlike me, he was desperate to get a green card, and because of the time taken by the process, another job change would probably push that out of his reach. Harj thought the end was near, and it was difficult for me to disagree with him.

That was right about the time Bashir hired a personal assistant to answer his email for him.

Saturday, 14 May 2011

Like a Rolling Stone

Gavin Ramsay soon took charge of the department, and he made it clear to us that he wanted one thing, and one thing only from my office. We needed to adapt a part of our functionality to their new project. With that directive, he more or less left us to it.

Bashir consulted Abhiraj and Eric and decided that was not what we were going to do.

I'm not sure what his reasoning was. Raj and Eric had spent their entire careers working on our product and openly admitted that they were afraid of the larger codebase developed by our peers at other sites. Or, really, any code at all that they hadn't spent more than a decade wallowing in. Perhaps Bash thought he could show up the other departments by breaking new ground with our slated-for-the-garbage-heap product, but frankly that seems an unlikely prospect. Perhaps he viewed our group as a hindrance to his progression up the corporate ladder. Whatever the case, he quite deliberately set us to work that was not in accordance with Ramsay's instructions.

Initially, the new projects were pie-in-the-sky crazy. I think they were sold to him as super-high tech, next generation genius projects, but I'm not sure who was kidding who: our software was substandard, out of date, performed like shit and looked like crap and everybody knew it. The first such project was to add the capability to build perfectly vertical surfaces into a Triangular Irregular Network.

This idea left our customers as well as internal people scratching their heads. Aside from missing the point of what a TIN actually was, approximations of those surfaces (where absolutely necessary) were quite within industry standards. TINs do not, by definition, model perfectly vertical surfaces. We decided to do it anyway.

Bash called a meeting for those of us involved in the project. This included me: I had a few minor tasks to do with the database representation of the new data. During this meeting he said that he would present the design document for the new feature and kick this project off 'just like a real one'. I was shocked. A design document? From Bash and Raj? For real?

Bash handed each person a couple of photocopied spreadhseet pages showing the schedule for the project.

"Great, a schedule," I said. "And the design?"
"That is the design," said Bash.
"Uh, this is a task breakdown schedule."
"Right. The design," said Bash, who held PhD in Computer Science who taught Software Engineering at a University in the hours when he wasn't running a branch office of a software giant into the ground.

A few weeks passed and not much happened. I think Raj wasn't able to make the maths work right, or perhaps he just didn't try very hard. My tasks were deferred because, owing to the lack of a design spec, Raj still couldn't identify what new data would need to be kept in the database.

By then, Bash had a new idea. Customers hated the User Interface presented by our software, and with good reason: it was dated and clunky and unintuitive and there were no design standards. At an earlier juncture, I had been assigned a bug that basically instructed me to fix the interface for a particular dialog. I couldn't work out what it was supposed to do, so I went to Raj, who had originally written the dialog and asked for his advice. He couldn't remember either, but instructed me to contact the client he had written it for. I tried; she was not interested in helping me. It did what she needed it to--whatever that was. So I went back to Eric and told him that I couldn't fix it until somebody worked out what it had to do. Eric reassigned the bug to my neighbour, Rog, and before long he checked in a fix and it was marked off the bug list. Seeing that, i went and asked Rog what the dialog was supposed to do. "Hell if I know, Pike," he said. "I changed something random and that was good enough for Eric."

Anyway, our UI was terrible, so one of our analysts went and redesigned a lot of screens to a/ make them useful, and b/ bring them into line with the parent company's design policy. The analyst, of course, had no more UI design training that the guys who had designed the original screens, so this mostly involved removing buttons and and hiding that functionality in bizarrely-ordered right-click context menus. Nonetheless, the show needed to go on and Bash decided that this project was a low-hanging fruit.  He set the whole team onto the project. All ten of us.

We had worked on the new UI  for about six weeks before Bash decided that the project was too risky. We didn't have the QA resources to test the new software, and our single tech writer was already overwhelmed without having to update every screen in the manuals, the tutorials and the help documentation to reflect the new look of the product. All of our work was archived and the codebase was rolled-back. Six weeks of work from a ten man team, rolled back before it was completed. (I didn't dare suggest that we branch the codebase. We were using Sourcesafe for version control, so I guess the matter was moot in any case.

Bash had another new idea for how we could spin our wheels avoiding the work that head office had mandated for us. The most important thing in the business world was the emergence of the Chinese economy, right? So Bash decided that we should bend our every efforts to making the application translatable. Again, in theory, this was a low hanging fruit and it was a way of showing us bringing our software in line with some of the code practices of our new company.

Forgoing the consideration about who was going to do the translation  (Eric? I had a feeling that he was just as inarticulate in his native tongue as in English), fixing the codebase to make this possible was not an easy task. Worse, it was dangerous. Instead of using Unicode, practice at our company was to use MBCS for translatable strings. By far the majority of security and stability problems that occur in any traditional Windows app are due to faulty manipulation of strings. Many experienced programmers struggle with this, and to convert all of these routines to MBCS meant that an already difficult and error-prone aspect of the coding would become substantially more complex and difficult.

Bash decided it was all-hands-on-deck for this task. He uprooted us from our offices and set the whole team up in the big meeting room, (now the 'Lab'). It was our one and only priority.

We worked in the Lab for about a six weeks before the senior team members got annoyed. They were then allowed to return to their offices and their former projects (vertical surfaces in the TIN model, I suppose). The rest of us were transferred to the small meeting room (which was the size of a single office), where we spent another sweltering month on this grindingly cumbersome task. At the end of that month, Bash once again decided that the project was too risky, for exactly the same reasons as he had the UI project. Again, our work was archived and the codebase was rolled back.

We'd now wasted the better part of six months. We had not written one line of code towards the module head office wanted from us their real product, and we'd actually failed to improve our existing software in any way.

During a company-wide video address the CEO told us that there were some big cutbacks coming, including site closures. I was pretty sure I knew what was coming next:

Performance reviews.

Friday, 6 May 2011

Revenge of Shinobi

A replacement for Lester Gould, the head of our department, was eventually found. Gavin Ramsay was a former military man who had previously worked at the company and who was rehired to pick up where Gould left off.  Ramsay flew out to address us. He was terse, and he didn't seem to think we were a particularly valuable acquisition for the company. I couldn't help but agree. After his talk, when I went up to introduce myself, he looked at me and my proffered handshake as if I had tried to give him  a dogshit sandwich and turned away.

My job hunt was going badly. Pickings were slim: there was still a post-Y2K recession on, and all of the programmers I knew outside of my present employment were out of work, or had been during the past year. It was tough for permanent residents to find work, let alone somebody like me who needed an expensie and time-consuming visa transfer. (I would later discover that Verizon had screwed up my phone line when I moved house and, in addition to billing problems, it turned out that although I could make calls on the line I could not receive any. Any callbacks I might have received from those applications were lost in the ether).

In the meantime, things were getting worse, and it wasn't just the development group that was in trouble.

Donna and I kept our relationship quiet, but rumours began to circulate. Nobody took them up with me, but the office manager, Claude, had a number of conversations with Donna in which he claimed that I was a strange and disturbed individual. Who would want to date somebody like that? he asked. She offered no comment.

I had had a rocky time with Claude since my first day at work, when he had inducted me and the other new employees. During the induction Claude gave each of us a sling bag, a polo shirt and a mug blazoned with the company logo. The cups were a strange shape, and, upon receipt of mine, I asked Claude if it was a mug or a vase. He took this personally.

Claude loved to pay people out, and I have never been one to hesitate in this regard. During a lunch room bullshit session during which he decided it was my turn to cop some flack (he started, I swear), I said: "So, Claude... how are your walls this week?" I had heard him complaining bitterly about marks on the walls during the week and thought he was joking about it, but Claude apparently took the cleanliness of the paintwork very seriously. After work that evening he came to my office. I had already forgotten about the incident, so I was quite surprised when he  asked if I had a problem with him. When I said "No" he was visibly relieved.

"I was worried that you wanted to fight me," he said.

Claude was probably six inches taller than me and I think outweighed me by close to twenty kilograms. I didn't know it then, but I later learned that some people in the office thought that I had been in the Special Forces before I a became a geek programmer.

You can't make this shit up, folks.

Aside from dodging Claude's surveillance like the special forces ninja  I wasn't, (he was determined to catch me and Donna leaving the office together), Donna was discovering that life in a big company's sales organization was hard. She had received a substantial salary increase with the transition, despite the  official line was that times were tough, and that nobody was getting anything.

Just prior to the acquisition Donna had closed a major and toughly-fought sale by massively underbidding the competition. The directive to do this came from well above her head in the old organization. Once we had been acquired, it turned out that the competitor she beat was, in fact, our new owners, and the whole thing had been an exercise in gamesmanship (or stupidity, depending on which way you want to look at it).

Donna was soon shipped off to a corporation-wide sales conference, and she found that she was notorious. People all throughout her group knew about the sale, and learned that the woman responsible was now in the building. And they were angry, and they wanted to know who she was.

Meanwhile, during the conference, her boss, got up on stage and took credit for closing the deal that Donna had become so notorious for. That's right: he took all the glory while letting Donna get hammered for undercutting her new colleagues.

Every year our company would stage out own user conference, during which all of our important customers came up to spend a week discussing the future directions of the product.. but mostly to participate in  fishing cruises and volleyball competitions and golf days. After being acquired some bigwigs down from our Silicon Valley HQ to join in the fun: Ramsay and his own boss.  Despite giving the appearance of open access, none of them would even make idle chitchat with me... but the two sales engineers they brought along were friendly and loquacious.

I took them to lunch, although they wound up paying for me on their expense accounts. In addition to learning about these expense accounts and other perks that sales staff were granted (like all-expenses paid holidays to Hawaii), I learned that the 'Tarzan' project was not just an ad hoc attempt to hack our software into some some complementary product: it was actually going to replace our system entirely.

We had been acquired for our market share and for a small piece of our technology that, by some fluke, actually worked pretty well. Our task was now to take that piece and redevelop it for Tarzan. That and a few relationships that the people-facing employees maintained were all that was of value. The rest of our business was surplus to requirements.

Soon this new reality began to manifest. Before long Donna was the only internal salesperson we had, and her new (albeit lucrative) job was to build a 'sales channel' for the broader organization. In other words, to eliminate her own position.

Donna's boss kept telling her that he would look after her, he would get her a raise, he would find her a new place within the company. I told her that he was a liar, and he wasted little time in proving me correct: what he found her was a redundancy package.

But non of this information filtered down to the development group through official channels. It was business as usual for us... but there was blood in the water, even if we couldn't see the ninja assassins who had spilled it.