Sunday, 28 August 2011

Enter the Dragon

When I rolled up at Tigerland on my first day, wearing my brand new suit, there was another lanky young guy hanging around outside the front doors looking uncomfortable in his office clothes. Being razorminded deductive prodigies fresh from our nations shining institutions of tertiary education, we quickly worked out that they'd hired two graduate programmers, and we were both starting on the same day. My new colleague told me his name was Guthrie.

We went up to the office. Amos came to meet us at reception. He was wearing jeans stained with battery acid and a t-shirt. "You boys won't be needing those suits around here," he said. I had my tie off before he'd even shown us to our desks.

Guthrie and I would be sharing an office with Amos and Meggs. There was no door, and the wall facing the corridor was all glass. It was like being in a very small and poorly-lit fishbowl.

In the office next door was another programmer, Jing, who Meggs told us was also a programmer. "But she only writes test scripts,"  said Amos, dismissively. There was one other programmer, Robert, who occupied the next office along, but he wrote small applications for clients and was not part of the team. The four of us in the Fishbowl were the team; everybody else was inconsequential. Marketing, we were told, was the Enemy.

The first task that Guthrie and I were given was to unpack and set up our computers, which were delivered not long after we arrived. Guthrie was quite excited about it. I was less enthusiastic. Before long we had the  computers put together, and Amos instructed us to install the latest version of Windows NT Workstation.

I'd never used NT before and had no real idea of how it was different to Windows 98. I didn't much care either, until we started having problems. Neither Guthrie nor I could get the damn OS to install properly. After a day of stuffing around, Meggs gave us a different set of CDs to use and told us to install NT Server. Server went on with no problems.

I immediately had another problem. My network card didn't work. I had installed it myself and I was worried that it was my fault, but Amos just gave me a new one. The new one worked fine. Two days had passed and I'd barely managed to get my computer up and running.

My heart wasn't in it. The Dragon had promised they would call me that week with an offer and I was fretting about how I would be able to break it to them that I was already going to quit.

I came down with a flu. I hadn't been sick in the five preceding years when I had been at University, but less than a week in the office and I felt as if I'd been run over. Guthrie and I were given access to the source code and instructed as to how the version control system worked. Neither of us had used version control software before, but, we were told, even if it had, the experience would have meant little. The version control software in use at Tigerland had been written by Meggs and bore only superficial resemblance to the solutions in use throughout the rest of industry.

In the mornings, Meggs would give us long show-and-tell lectures about the design of the application, the transformative path he was taking it down, so it could go from being a simple client/server system to a multi-tiered enterprise system, "just like a real one." I was sick that I wasn't taking much of it in; it was all I could do to stay awake. Guthrie claims that one lunchtime he caught me crashed out from exhaustion in an empty office, but I have no recollection of the event.

Guthrie and I were not allowed to program just yet. We were set exercises in using command line utilities to search and replace in the code base using grep and a variety of homegrown tools (again, most of them authored by Meggs). The sort of tasks that are probably familiar to any UNIX programmer of the day, hacked and kludged into a windows environment. Amos decided that these exercises would be competitive, although I think we would have both learned faster if we'd been allowed to work through the problems together.

The cumulative solution to all of these command-line problems was intended to reformat the whitespace in the source code, which Meggs had recently decided had to be absolutely regular. Guthrie and I each reformatted half of the codebase (alphabetically, by file name). After making sure  that everything still compiled, this was the first time that Guthrie and I were permitted to check any code into the repository.

"Congratulations," said Meggs. "You're now officially programmers."

Neither of us had actually written a line of code, but we had certainly had the importance of procedure and code- cleanliness drummed into us.

Meanwhile, the Dragon still hadn't contacted me. I didn't have a mobile or private access to a phone in the office, so I wound up sneaking out of the office a couple of times during our morning coffee breaks to use the phone box on the corner. It was a week before I managed to raise my contact there. She couldn't tell me why, but there was no offer in the pike. I needn't have worried about how Tigerland would take such a quick resignation, because it looked as if I would be staying there indefinitely.

It was less than a year until Y2K and its accompanying crash. In the fallout from that, the Dragon would shut down its Melbourne offices entirely. In later years, I learned that nobody knew exactly why the Dragon had built the Usability Lab that had failed to employ me in the first place. Apparently it never saw a single day's use.

I was fated for a career in the coding trenches, it seemed. I was disappointed that I wouldn't have the Dragon on my resume, but at the same time, I think I was a bit relieved. I was a programmer with a lot to learn, and it seamed as if that Meggs was going to be a good person to learn from.

Now, finally, I thought I knew what would happen next.

Sunday, 21 August 2011

Lions and Tigers and Bears

Out of college with my degree, I had everything going for me except for a job.

I didn't know what kind of job I wanted, but I did know the kind I didn't.

Before I had graduated I'd gone to a career information session at one of the big banks. I listened to about an hour of corporate doubletalk before they trotted out a pretty young white girl who'd been in the previous year's graduate program. She told us about her exciting job maintaining legacy software written in an obsolete languages running on on ancient mainframes. She was bright and perky and enthusiastic and I walked out of there ready to slit my wrists.

I had zero experience, so there wasn't much to look at on my resume besides my education and the time I'd spent stacking boxes in a warehouse. With three majors, two of which were not computer science or engineering related, the most common reaction I got was one of confusion. "Just what do you want to do with all this stuff?" "Uh, the job I applied for is in software development," was never a good enough answer. One place looked at my university career and said "Well, you're obviously not much of a programmer, so we're not even going to let you do the test."

The most rigorous interview I did was for a position as a tech writer. Half a day on site, four interviews, and a writing sample. It was forty degrees, the air conditioner was broken, and I was stuffed into a suit while the rest of the staff wore shorts and t-shirts.

I went to an interview in a building that was still under construction, where I had to push through plastic sheeting and climb up scaffolding, when upon arrival they looked at my resume and said "Oh, so, as a graduate, you don't actually have any experience?"

I was interviewed for a graduate role by a man who put both fists on the table and demanded "What makes you think that you're ready for this job?" He followed this question up with "Do you have a girlfriend?"

I did a couple of interviews with a company that was on its way to becoming one of the country's biggest contracting firms, Lion Consulting. The second of these included an hour of formal testing. The first two sections I was fine with: computing and mathematics. The third section was management-related, and I had no idea what to write. The four section was supposed to assess language skills: in addition to answering the questions,  I corrected spelling and grammar errors I had noticed in the questions themselves.

I applied for a job where they wanted someone with good tech and language skills and required a portfolio showing graphics work. At the interview they asked me chemistry questions. They didn't know exactly what they wanted from the person they were hiring. I lost out to a candidate with a degree in graphic design degree and a portfolio. 

Lion called me and told me that I was on the shortlist, and they'd be doing a third round of interviews in December. I was going to be overseas in December, so I asked if they could schedule the interview for another time. When they told me they would pencil me in for their next graduate intake, the following December, I decided that I didn't want to work at Lion Consulting after all.

I did an interview with a medium-sized tech company, Bear Technologies. I didn't really understand what it was that they did at Bear, but it sounded high tech and interesting. There were three guys in the room: two suits who talked and asked questions, and a bearded guy who sat off to one side listening. The beardy guy would occasionally interrupt, ask me a question, and then nod. I didn't impressed to suits much, but I felt like I had some kind of unspoken rapport with the grumpy old beardy guy.

I wascontacted by a Dragon-sized overseas corporation who had somehow discovered my combination of different majors and were keen to hire me to work in the new Usability lab that they had just built, and which they had no idea what to do with. The interview went well, and they said "We'll call you. Soon."

The Dragon didn't, but the Bear did. They were considering me and one other guy and they will be in touch about a second interview... one day.

I did another interview with a small software company called Tigerland. Three guys interviewed me: a manager and two engineers who introduced themselves as Amos and Meggs. Meggs wore a beard and reminded me a lot of the guy at Bear Technologies. The interview went well, until Meggs produced the test.

The first part of the test was easy. They showed some simple procedural C code to me and I had to work through it, explaining what it was doing. The second showed some object-oriented C++. I worked it through as best I could, but I did not know the answers to Meggs' questions about  inheritance, composition, and the stack. I figured I was out of the running, but perhaps I could learn something from the interview, so I relaxed and settled in. It was nice to be talking about programming instead of how confusing my resume was. "I don't know," I said, when faced with a question I couldn't answer. "How does it work?"

I think that attitude is what got me the offer. Amos called me within a few days and said, "Are you interested in this job? It's a hardcore C++ job; it's not for pussies. If you are interested, it's yours." I told them I would think about it. Amos told me to call him back the next day.

I called up Bear Technologies, who still had me shortlisted. They told me that they couldn't make a decision for another month. There might not be a job going there, after all. I told them I had another offer on the table, and they advised me to take it. So I called Tigerland back and accepted their offer. I would start work in two weeks' time.

The following week, the Dragon called me. Things were moving ahead. They liked me, they wanted me to work there. They would be in touch with me again really soon... but they had no paperwork and no actual offer yet. I'd already signed with Tigerland.

The following Monday was my first day at work. My first day full-time employed, in any capacity.

I was now a real person.

Sunday, 14 August 2011

Robot Monster

I had finished my undergraduate degree and I didn't know what the hell to do. I knew I wasn't ready to join the workforce. So I started looking at post graduate programs.

One of the universities was offering a postgraduate diploma in Robotics. Anybody with a comp sci or an engineering degree could apply for it. So I collected up my transcripts and sent them in. I received an acceptance letter in fairly short order... followed by a second letter informing me that the course had been cancelled, because there was only one person enrolled in it.

My dreams of robotic world domination dashed, I went an enrolled in a one year arts program at a different University. It was fantastic. Lots of great subjects, and not a career in sight. I asked if I could overload my course and do some extra units, but the course coordinator adviser refused: these were Arts subjects an it was  unthinkable that a student should want extra work. I went from having 28 hours of classes a week to eight, with no big assignments and no exams. It was easy and rewarding. At the end of the year, my supervisor asked me where I was going to have the work I'd done for his class published.  It didn't have robots in it, but it did have space ships and quantum physics.

Once I had graduated, I needed to get a job. This wasn't so easy: most of the companies I talked to were confused by the fact I had qualifications in Computer Science, Psychology and English, and I wasn't getting very far. My old university asked me to show up and enrol in subjects for my deferred honours year, and even though I'd had never intended to go back there I went and did it. I had nothing else to do.

We had to choose a thesis topic before the year began, but I was so disinterested in it that I did nothing about it. At the last minute I went through the handbook advertising which topics were being offered by the various faculty members, and I found one professor who had five topics I liked. I went to talk to him.

It turned out that Professor Gupta was the head of the department. I had no idea, even though I'd been in the department for three years already. He looked at my background, raised an eyebrow at the second major in psychology, and agreed to let me do one of the thesis topics I was interested in. He chose the topic. And he told me to write a much more general topic heading on the form than the one we discussed. I should have known that something was awry.

At the start of the year we were told that honours level subjects would be much more difficult than undergraduate subjects, but I found the opposite to be true. The classes were easy, the assignments were easy, the exams were easy. I wondered what I was supposed to be learning. How was this preparing me for the real world?

My thesis was another matter altogether.

The first thing that Professor Gupta did was tell me that I would be co-supervised by another lecturer, Dr Victoria  Wong. This, I was later informed, meant that Gupta wanted me out of his hair unless I produced something worth publishing, so that he could take the credit. Vicky was kind and supportive, so I didn't care. I did care that Gupta had decided to change my topic. He had some students building a piece of software for him that would measure certain aspects of human behaviour and he needed somebody with a psychology background to develop an experiment around that. I was unhappy, but it was easier than the thesis I had planned. I was given an alpha of the software to play with and told to begin my literature review.

The lit. review was easy. I read all of the research and found it patchy, unscientific and generally a load of hot air. Being the angry young man that I was, I proceeded to tear it apart. This actually impressed both Gupta and Vicky: they were unused to seeing students who were a/ critical, and b/ able to frame a coherent argument. They rewarded me with good marks and told me I was PhD material.

The alpha software I was supposed to be testing, however, was a problem. It did work... sometimes... but it failed to harvest the data correctly, and it would freeze or crash frequently. There was no way I could use it in the state it was. I was not allowed access to the codebase or the team of students who were developing it for Professor Gupta, but he assured me that it would be ready.

I went away and designed the experiments I would perform with the software. I framed my argument, developed my hypothesis, worked out the metrics I would use. I got the whole thing ready to go.  Eventually Gupta took an interest, and invited me to a few meetings in his office. During those meetings he'd make me sit while he read what I'd written. Then e'd explain my ideas back to me as if they were his own... and I was a turnip. I just nodded my head and agreed with whatever he said. After every meeting I'd ask "How is the software coming, Professor?"
"It will be ready. Don't worry about it."
After a few weeks Vicky called me into her office.
"The software is broken. The students who are writing it have gone on holiday. Professor Gupta says you won't be able to use it."
"But... my whole thesis is about this software." Gupta had forced the topic on me to begin with. It wasn't Vicky's fault. "What does Professor Gupta say?"
"Professor Gupta says that you should just do some manual testing instead."
"My thesis topic is 'automated testing'."
"Not any more."

Vicky was sympathetic, but she couldn't do anything... or say anything. The faculty, I had discovered, were paranoid about Professor Gupta finding out that they'd said anything bad about him. The ears had walls.

"I'm going to go and speak to the Professor."

"Um... Professor Gupta is actually at a conference overseas for the next month."

My thesis was gutted. I performed some manual tests and collected some results, but I had nothing to write about anymore and I had to pad to reach the wordcount. I thought I would bring some of the scientific rigour to my thesis that the studies I had criticized had not: I would perform some statistical analysis on my data to see if it was any good or not. When Professor Gupta returned from his junket and I told him about this, his face darkened. "No statistics," he said.
"This is computer science. We don't do statistics."

I did the analysis anyway. That was as close as I came to expressing my frustration at the way the thesis had turned out.  My marks fell from an A to a C, but I didn't care. I was glad to be out of there. I was glad to be leaving this hell of Academia, where everybody was paranoid that their seniors were out to get them; where incompetence was rewarded, innovation was stifled, promises were broken, and ideas were stolen. Out in the Real World,  I reasoned, when there was money on the line, none of that would be permitted to happen.

Yeah, I know. You can stop laughing now.

Friday, 5 August 2011

The End of the World as We Know It

I wasn't concerned about finding a new job after I was done with Fjord Systems. Chucky had been hassling me for a resume; they needed someone like me at his new gig. Two of Fjord Systems' rivals had also approached me. I was pretty sure I could find work without any trouble, and I had my entire three month notice period to do it in.

About two weeks later, a Global Financial Crisis was declared and suddenly all of those opportunities went away. But it was October, and I was tired, and I still wanted to see the product out the door.

First thing I did was tell the team that I was no longer available after hours, and I was not working any more overtime. The immediate ramifications of this were that I was not going to conference into development meetings and I would not be returning to Sweden for the company 'conference'. The conference was a marketing gimmick; a holiday party that would last a week and would see customers from all over the globe descend on the offices in Sweden. I also knew, from the previous year, that almost nobody would be doing any work whatsoever for the entire month of December and half of January. I that wanted to leave quietly.

My work was pretty much done. Chucky had finished the drivers before he left, and I had finished integrating them when I gave my notice. Mostly my job consisted of writing unit tests and fixing bugs that arose because Anders starting messing around with the drivers. His changes were minor and really served only to break the interface or the unit tests. I suspect that this was a way of taking credit for Chucky's work by putting somebody else's name all over the version control system, but I stopped caring. Chucky had agreed to do any urgent maintenance that was needed in his drivers for six months  after his resignation (he did not give the required three months' notice), but there weren't any issues beyond the new ones Anders introduced, and then demanded that I fix in the interface. I complained the first time, but after that I gave up. They were minor changes. Many of the changes simply showed that the team had not understood the design as I had laid it out for them, but the software still worked well enough... it just meant that many of the features I had written sat dormant.

About a month later Martin sent me an email saying that he wanted to talk to me. He said he'd been trying to call me on my office line, but I never answered. I had been turning the phone off after 6pm, and there was no voicemail set up. I had said in my letter of resignation that I would no longer be available after hours. It took Martin six weeks before he thought to email me.

We arranged a time and I got on the phone with him, but I found that I wasn't really listening to whatever it was he was filling my ear with. I sat there remembering him making fun of my friends behind their backs, and I wondered what he'd said about me. I told him that I was tired of the work. I told him that I'd already done this same project when I had worked at ATB Software, and that the team's refusal to honour their promises meant that this product would not be as good as the one I had worked on two years prior. Even if it had been, it wasn't the work I had signed up to do. That work had departed when Jacob had been let go.

The product was released in January. It was substantially better than the prior version, since the new design, even compromised as it was, was at least cleanly-written and fairly efficient. The drivers worked and integrated into the software seamlessly. Despite my reservations, the UI team produced a very nice
new front end for the application from scratch and the product looked quite polished. Certainly, it presented a much shinier facade than the product I had built at ATB Software...

But it just wasn't as good. My product for ATB still rated in the top three of its kind when it came to performance and efficacy, and the new product from Fjord Systems stayed well below it.

But that wasn't my problem. I had quit my job at the middle of the biggest economic downturn in decades, and I was feeling fine.