Monday 13 June 2011

Upstairs and Downstairs

Outerlink was very much an upstairs-and-downstairs place. Literally. Management and engineering were upstairs; ground floor was admin and the factory line. 

The team at Outerlink were a nice bunch of guys. There were no psychopaths or out-of-control egos, or even any particularly weird behavioural quirks: just a bunch of very-nerdy-but-well-adjusted guys. For the first time ever I was in a team composed mostly of people my own age. All told, the team at Outerlink demonstrated the best combination of talent and relevant experience experience of anywhere I had yet worked.

The team lead, Sinclair, was well-spoken and meticulous without quite being anal retentive. There was Ross, an older bloke who'd come with the building. He liked to snigger at the decisions that had lead to problems in the application , even though he had been party to them. There was the Butcher, who remains one of the most talented programmers I have ever worked with. Sheer boredom drove him to use his powers for evil, not for good: he made everything as fancy and as obscure as he could because, in his own words, he was 'bored with writing the same for-loop.' Chitra was very quiet. As the only female on the team,  she was of course was assigned the task of writing test scripts. Chopper was a huge and very sociable guy who lived near me. We socialized occasionally: it turned out that he knew a girl I had briefly dated, and that he'd been a member of my gym. Chops always had two or three girlfriends on the go, and complaints about all of them. 

Work was dead boring.

The codebase wasn't nearly as bad as I had been lead to believe. It was stable and sensible and the application performed very well. The only problem was that it was very manual: a lot of the base classes were under-featured and we had to rewrite very similar code every time we did some work in the server. It took a long time to get anything working, but it never really felt as if I had to hit myself with a hammer to write sensible code. I wrote some template classes to make this easier for myself, although I don't think anybody else adopted them. 

I did have its share of peculiarities, mind. A few of the smaller external modules were written in Python, because some former engineers had been enthusiasts for it, and some strange infrastructure had built up around that, but that didn't bleed into the rest of the codebase. The garbage was kept separate. There were also so  strange ideas in evidence which had come about in the earlier stages of the app, when development was directed by the hardware guys, but again, it wasn't a major problem. 

OuterLink had some new hardware was in development, and the software team, were supposed to be deciding how we would approach  it. We would have boisterous meetings every monday during which this was the major topic of discussion. Most people agreed that we should rewrite, but nobody could agree on which platform to use. I was the only one in favour of transforming the current codebase to rectify its current shortcomings and meet new requirements: aside from the change of hardware, the new system would have very similar properties to the current one.  Sinclair refused to make any decisions and the arguments went in circles.

Outside of the work at hand, the coffee machine provided the main focus for conversation. Its behaviour was of great interest to us, and morning coffee breaks were almost a formal institution. We would take turns in providing beans for the machine, and the crowd was merciless to anybody who brought an inferior brand.

It was  dead boring. 

I spent a lot of time reading my email and fretting about my lack of productivity, but I just could not find any enthusiasm for the work whatsoever. There wasn't much to learn. Every task was grindingly slow to unfold and utterly unchallenging. I was constantly reminded of why I had left Australia in the first place, and I started to wonder why I had come back.

I was still settling in when my friend Chucky from the States wrote to me asking for a reference for a job, and  of course I said I would give him one. The job would see him working remotely for a company based right there in Melbourne: a startup called Sonar Security.

Vikram from Sonar called me at work, and I gave Chucky a glowing half-hour reference. Vikram seemed surprised that Chucky had a reference from someone local, so I spent a bit of time explaining how I had worked with Chucky before.

I was assigned a defect fix in one of the Python modules to look at. After a bit of investigation I learned that everybody else on the team had tried to solve it and failed, and now it fell to me, the new guy. The defect was almost impossible to duplicate on a high-spec developer machine, but it was apparently preventing the company from selling the module. I didn't know any Python, but I had no choice but to investigate.

I spent a few days poring over the python and trying in vain to duplicate before enlisting the help of tech support. One of the support guys was able to demonstrate the problem on his own machine for me and I noticed that the bug jammed up our server application, not just the module. The bug was in the server. I took this finding to Sinclair. I wanted permission to remote-debug onto the tech support engineer's machine so that I could find out where the issue was, but Sinclair had a better idea: write a program to hammer that part of the server see if that would cause the issue. Bingo. I found the problem immediately: a deadlock. The fix was easy, but I couldn't work out the intent of the code I was fixing. The problem behaviour looked deliberate. I spent half a day looking at it with the Butcher, who had written the code in the first place, and eventually we decided that it was simply an oversight. I shrugged, made the fix and checked it in without any further hesitation. 

A week later one of the owners of the company came to personally thank me for fixing the bug. Now he could sell the module and make more money. I didn't feel like any kind of hero: I'd had to get tech support to show me the issue and Sinclair had found a way for me to debug it. I was still bored.

Meanwhile, Vikram from Sonar called me again. And again. And emailed me whitepapers. And an essay that he'd written for his church group. He wanted over-the-phone advice about how to build his system, and I was too polite to refuse. I admit, I was also starving for interesting technical matters to talk about, and what Sonar wanted to do was thrillingly ambitious... not to mention dangerous. 

On one occasion, Vikram called me at 10pm to ask me to estimate some tasks for him. He would then present my estimates at a meeting at 8am the following day. When I pulled some numbers out of my arse he said "Great; are you prepared to sign off on those?"  "Sure," I replied, hoping it would get him off the phone. I didn't work for him; I'd never even met him. I didn't care.

The next time he called, it was offer me a job.

No comments:

Post a Comment