Tuesday, 30 September 2014

Raw Power

Elvis started to throw his weight around immediately, and since he only had two engineers to look after that meant me and Benjamin. We had a release due in a couple of weeks and Elvis decided he needed to be involved.

Most of the things he wanted were small. "Move that control two pixels to the left. "Change that word from "Edit" to "Modify". My favourite was his request that I make the toolbar show its icons in true colour. I explained that it was an out of the box control and it only supports 16 bit images, but Elvis was adamant. I explained that the images we used weren't in 24 bit colour anyway, and he went and had a designer in the marketing department spruce them up. Int he end it took me most of a week to get the damn icons on the toolbar displaying properly in true colour, at the expense of bug fixes and features that customers might actually benefit from. He didn't care, so I did what I was told. Putting a true colour toolbar on that horrible, hacked-up interface was like putting a ribbon around a turd.

Suddenly ATB was hiring. Elvis immediately started negotiating to bring in the team of contractors working for us from a nearby firm, and there was a procession of candidates through the doors as well. Benjamin was called upon to test all of them. When he was away, I did the testing.

It was my first time on the other side of the table in an interview situation and I didn't like it. The test I had to administer had been written by Benjamin, and it only covered C++ topics. I was asked to test programmers who had responded to job ads for Visual Basic or C#/.NET programming roles--topics I was bone ignorant about. One candidate in particular--a veteran programmer who was probably in his fifties--grew angry and belligerent about it. Elvis had left us alone in the room for the test and I felt like the lowest of weasels. In his place I would have been angry, too. Some punk kid half my age, asking me difficult questions in a language you never claimed to know. But the form of it was all that mattered to Elvis

Money was suddenly a sore point. Elvis had left papers lying around showing the salaries promised to the team we were poaching from the contracting company and their numbers were substantially higher than what what Benjamin and I were getting. (I didn't know Benjamin's salary, but that was what he said when he saw the papers.) The lowest salary on the sheet was almost fifty percent above mine, and these were all programmers with similar levels of experience to my own. Benjamin stormed into off to see the president of the company at least once a week to demand more money. I went with him once, but I just stood by and let Benjamin talk. I could see it was getting him nowhere. My own interest was academic: I didn't plan on staying there long.

Benjamin started pushing me. Doing less work, belittling my work in front of other people. I let him say what he wanted, but I wouldn't stand by and let his poor judgment compromise the quality of the work I was doing. He contested a database schema design that I came up with and his proposed alternative was leaky. It was going to lose crucial data. Benjamin got angrier and angrier as I refused to accept his design. Eventually, he pulled up his college transcripts to show me that he'd scored As in his database subjects. I told him he was still wrong. It was my feature and my responsibility and he could fuck off with his college transcript.

To this day it's the only time I've ever raised my voice in anger at work. When I realized I had shouted I turned and left the room. Elvis and Judd were nowhere to be seen, but afterwards Freddy, who witnessed the whole thing, came up to me with a smirk. "That was new," he said. "Not unexpected, but new." He reported the incident up the chain, as I knew he would. I liked Freddy but I knew he was a born gossip.

Benjamin and I didn't speak for days after that. I delivered the feature and the matter was never raised again.

When the first new engineer started we had an office move. There just wasn't space for one more desk in the dingy basement room Eric, Benjamin and I shared. Instead we moved upstairs, to the area formerly occupied by QA and technical support. It was quite a large area, and with only three desks in there it was a like working in a barn. A barn that dripped from the ceiling.

Elvis told there were plans to rent a floor in the 12 storey office block next door. I wasn't sure I believed him.

The new hires started arriving and before long they had to install partitions. Suddenly I had one square meter of desk space, with engineers on my left and my right. The floor in my spot wasn't  level, and I had to lean constantly to prevent my chair from rolling downhill. If I rolled my chair backwards more than a few inches I would run into the back of the guy who sat behind me--a grumpy old veteran named Ralph. I liked Ralph. He told you what he was thinking.

ATB had purchased a branch of the sourcecode for a Visual Basic application written by a couple of local entrepreneurs. The app itself was primitive, and was in fact a direct knockoff of a competitors product, but someone at ATB saw it as a strategic market. Ralph and Dennis, a baby-faced engineer five years my senior, were given the task of cleaning up that code and make it something that ATB could convincingly sell to man-on-the-street-with-laptop consumers.

Within the space of about a month my workspace had gone from a tomb to a barn to a sardine can. It was bewildering.

I rebooked my cancelled holiday home to Australia for July. The lawyers advised me that I needed to go home and get a new visa stamp in my passport. I needed a new passport, too. The consulate in Melbourne would not say me how long that process would take--they advised me not to buy a return flight. I put my head down and decided to wait it out, see what happened. The situation at ATB continued to get weirder all the time.
Benjamin was becoming increasingly agitated. He would pose psychological challenges to everyone who sat within earshot. Unpleasant hypothetical situations. What would you do if...? I don't think even Benjamin enjoyed those conversations, but he kept introducing uncomfortable new topics.

The team of contractors came on as regular employees and suddenly they were the cool kids. They hung out together, they were always laughing, they had a good time despite the dingy work environment. It's rare in the software business that you feel like you're not popular enough to hang out with the pretty people, but suddenly there was a clique of engineers who were better paid and better treated and who were simply having a better time than the rest of us.

One Monday morning, when the new hires were announced at the staff meeting, Benjamin turned to me with an expression of shock.
"That guy."
"That guy." The guy he indicated was a huge individual with cokebottle glasses and some kind of obvious social disorder. 
"I tested him on Friday and he got zero. ZERO. Couldn't answer a single question on the test. Elvis hired him anyway."

When Benjamin buttonholed Elvis about it he said "The guy was nervous.  He sent me some work samples from home and they were good."

That Guy lasted about one week, including the weekend. (Elvis made him work over his first weekend). Every single line of code he submitted had to be rewritten by somebody more competent. I think he quit before Elvis could fire him but I was never certain.

Benjamin decided that his chess game had improved sufficiently that he could take on Colin, and he challenged him to a best of fifteen tournament to see, once and for all, who was the best player in the building. Colin agreed to it in his usual laid back way. Benjamin then turned to me and said "I'll bet you five dollars I'll win."

I wasn't sure how to respond. He was my teammate, and he had had a sensitive ego, and now he wanted me to bet against him? I didn't care about his chess game. I just wanted to be able to get on with my job in peace.
"I bet you twenty," I said, hoping to price myself out of the proposition. I knew Benjamin was a cheapskate.
He thought long and hard about it, but in the end he decided to take the bet.

Benjamin  started playing chess. He kept score on the white board; game stats and a whole lot of bullshit analysis that made it look like he was doing better than he was. The truth was that Colin was thrashing him, no matter what he wrote on the board. His mistake had been telling Colin about the bet. Now that there was money on the line - even though it wasn't his own - Colin took a renewed interest in the game and Benjamin just couldn't compete.

Benjamin also started coming up with excuses to rewrite all of the external utilities our product needed in C#, because he wanted to be able to put the cool new language on his resume. I was scornful of the idea--more of Benjamin's paranoia about being left behind or turfed out by the tech business-- but I left him to do it. I was scornful of C#, even though it was clearly becoming more valued at ATB than the C++ we were writing. But I didn't say anything. I didn't want another fight; I just wanted to get my job done and get away on holiday.

July came around finally and I was ready for my holiday. The day before I was to leave, Judd called me into his office. "Here you go, Pike, we're paying you a bonus for all your good work." It was maybe $1000--well short of what was owed to me for the month of salary he'd earlier screwed me out of.
"Thanks, Judd."
"It's to make sure you come back," he said, grinning.
I just looked at him. "You really think I'd just leave like that?"
"Well, not really..."
Without taking the pleasure of slapping a resignation form down on his desk? Did he think I was stupid? 
I pocketed the cheque and left it at that. He knew I had good reason to walk, and he knew it was a lame gesture. I don't think it had occurred to him that I would be insulted.

I knew I'd be back, but I had a feeling it wouldn't be for long. I wanted to take my holiday, get my new visa, and get some perspective. I wasn't ready to call it quits with Donna but I wanted to get away from her for a bit, too. I had no real idea what would happen next.

Saturday, 13 September 2014

Skull Ring

Things at Across the Bay got weird very quickly.

Benjamin was the most obvious source of weirdness. Whenever his cellphone rang he would look around guiltily and answer it in an undertone. He would invariably say "I asked you not to call me at work." I tried not to listen in but his chair was less than two meters away from mine. I thought perhaps he was talking to a drug dealer, but he later told me it was his girlfriend.

Benjamin was also a bit on the paranoid side. He was terrified that he would be fired, and he told me that he was worried the black stain of that would prevent him from finding work again and he would end up on the street.

Benjamin had lost a lot of weight, he said, due to a strenuous diet and exercise program and he was also paranoid that he would get fat again. He would very rarely eat anything besides the occasional powerbar. But that never stopped him tagging along when I went in search of lunch. During one such lunch he told me that during the interview process there was only one other candidate who had passed the test. This candidate was more experienced than either of us and Benjamin had somehow vetoed the hire because he did not want Judd to put anyone above him, and the guy was 'management.' I was never clear on exactly how that went down but I suppose int he end they decided that they didn't need a development manager to look after a team of two, and I was definitely cheaper--and they definitely had me and Benjamin cheap. The CEO of the company joked about it in my hearing: "We  pay our programmers peanuts." I would later hear him use the phrase "Arbeit Mach Frei" when describing our workload.

One of the tech support engineers, Colin, was a chess enthusiast. Benjamin was convinced that he was the smarter of the two, since Colin was 'only' in support, and that he would prove this by becoming a better chess player. The only problem was that Colin held an Expert ranking and Benjamin was a novice. Benjamin kept a tally of how many games he had won in order to track his progress. He did start to win more and more often, as Colin became less and less interested.

There were only a couple of testers working at Across the Bay, and only one was assigned to the product Benjamin and I were writing. Igor was a huge, soft-spoken Bulgarian guy with a sarcastic smile. On my first day, he indicated the work Benjamin and I were doing, and said "This software is shit. It's the worst software I've ever seen." He smiled his little smile and went away, leaving Benjamin fuming.

Freddy, on the other hand, quickly proved my initial feelings about him wrong. He had a strange, self-deprecating sense of humour but he was a good guy. We were the only two people int he office who drank coffee, so he brought in a little two cup percolator which we both enjoyed.

Benjamin and I were the only programmers ATB employed in house, but they had a team of six or so team they'd outsourced from a nearby contracting house who wrote ATB's flagship product. ATB was primarily a software reseller but I think the outsourced product sold better than any of the tools they were distributing, and the margins were much higher. We heard a lot of talk about the other team, and word was that ATB was going to move into software development in a big way. In the meantime, though, there were some problems... such as the fact that Benjamin and I were the only two employees who had ever worked for a proper software development outfit before.

One Friday at the end of the day, Judd asked us for a development build of the product, saying he wanted to play around with it. We cut him him a build and went home for the weekend. Benjamin and I returned on Monday to a furious email about release procedure from the CEO. Judd had published the build as a release candidate and the denizens of the Beta forums had torn it to shreds.

Judd started to feed us odd technical questions that seemed to be from the outsourced team. For example, he showed us a magazine article about how string parsing in Microsoft's new language, C#, performed just as well as it did in C++ and asked us to assess its accuracy. (We debunked it pretty thoroughly). Something strange was going on. We started to hear the names of the engineers on the other team bandied about. The team lead, Mark, seemed to get a particularly good amount of airtime. They were contracted through the consulting company to which Vlad from my old job had recommended me, where the manager had been so rude to me. I heard his name mentioned a lot, too. Michael.

But we had other things to worry about. Judd asked us to estimate how much time we needed to get the product ready for Beta. Benjamin and I spent a day figuring it out and decided that the bare minimum was four weeks, if every single thing went to plan.

"Well, you've got two," Judd told us. I don't know if he thought we were slacking, or if he thought he could make us work harder, or if there was a reason for that deadline, but whatever the case, Benjamin and I just stared at him slack jawed. Then we went back to our desks and got to work.

Things didn't go perfectly. Igor logged a huge number of defects, which provoked Benjamin into storming upstairs in a rage. I followed him int he hope of talking him down, but he had to have his say. Benjamin screamed for probably five solid minutes. The gist of his argument had nothing to do with the defects: he was convinced that Igor was trying to ruin his career. Igor just sat there and smiled his little smile.

While all of this was going on, I was actually learning some new things about programming. I learned more in my first couple of months at ATB than I had in the two years prior. Specifically, I was learning about threaded programming.

Benjamin called himself the "Thread Master" and he was very proud of his work in that arena. He showed me some online articles on the topic and I devoured them avidly. The skills were necessary for the software we were building and I soon found that I needed to use them. My first asynchronous project was to write a threadpool. I wrote a generic class that would take a queue of jobs, which the threadpool would consume until the queue was empty. Jobs could be safely added to the queue during processing. It worked pretty well and the class  proved useful in several places, and Benjamin declared it a success. This is a solution I wound up implementing at a number of different jobs after I left ATB.

Then Igor logged a bug that looked thread-related. Benjamin made a big show of telling Judd that normally this was something that he, the Threadmaster, would handle, but he thought I was ready to step up and take it on. Judd, of course, said "How long will it take?"
"Maybe a week. It looks nasty," I said. I didn't like the way that Benjamin was makign a big deal of this. It looked like he was talking me up, but really the point was to show Judd how much better than me he was.
"I think you'll nail it in three days," said Benjamin.

I had nailed it by lunchtime. Once I had actually looked at the code I found that it wasn't a threading issue; it was an blatantly obvious error that Benjamin had introduced a few days prior. I fixed it quietly and got on with things.

The next morning, Judd sidled over and said "So, how's that monster problem going, Pike?"
"Oh, I took care of it."
"Wow, that was quick. What was it, in the end?"
"Oh, just a bug." Benjamin was still my teammate and I wanted to look out for him, although he was increasingly volatile and he was screwing up more and more often. He was int he CEO's office at least once a week, complaining about conditions and pay.

I figured that Judd and the rest of the office could see what was going on. They could see that I was quietly and competently getting the job done without any big show and without talking myself up. Surely they could see that Benjamin was a little bit unhinged.It wasn't for a couple of years that I realized they didn't know or care.

Benjamin and I continued to work on our product, and it was getting close to being releasable. ATB started hiring again: they brought in an engineer who was a little older than me and had Benjamin test him, as he had earlier tested me. I wasn't in the room, but the new guy, Elvis, did well, and was duly hired...

... into the position of Development Manager. Benjamin was furious. In particular, he was galled that he'd been the one to test Elvis--he thought that meant  he would later be singled out for special vengeance.

But whatever his faults, Elvis was a laid-back guy with little concern for such trifling matters. I doubt he gave the test another thought.

Elvis was an entirely new kind of manager, quite different to the ones I'd served under in the past. But his presence signaled something I'd never seen before: rapid expansion. ATB had big plans and they were only just beginning.