Friends who also read my blog (a.k.a nobody) may already know that I have been without a job for a few weeks due to company acquisition. I have been looking for a job since, and I feel very fortunate that I get interviews with many companies, big and small, even in a time when the economy seems to be spiraling down the toilet.
My interviews with Research In Motion is particularly interesting. In case you don’t know, RIM is the company that brings you BlackBerry, and headquarters in Waterloo Ontario. I have for a long time considered RIM a great company for a software developer. After all, they design and build a gadget that everybody gets crazy about. And after all, Canada doesn’t have a lot of cool tech companies to begin with. So, I applied for a Java Developer position from RIM’s website soon after I became available (i.e. lost my job). I waited. And I waited more. Still no response. “They are not interested in me”, I thought. “Or maybe they are reluctant to hire someone who is 4,000 kilometers and two time zones away.” The latter reason makes me feel better, so I conclude that must be it.
Two weeks ago, and about one month after I submitted my application, I got a call with area code 519 when I was on my way to the grocery store. I answered the call. It was RIM. The recruiter set up a time for the phone screening. The screening went smoothly. Some typical HR questions were asked, followed by some easy Java questions. The interviewer was a recruiter (not a developer), so I am amazed (and glad) that she asked technical questions. Not only did she asked those questions, she understood my answers as well. I think it is a hallmark of good software companies.
The second round of phone interview was with the team manager. He is a very nice guy, so nice that he didn’t bite my head off nor gave up on me, even though I missed his call the first time. (Well, it was not completely my fault. There was confusion about whether the interview time is Waterloo time or Edmonton time. I tried to get clarification, more than once, but there wasn’t any.) The second time he called, a few days later, we had a very good conversation about my background, the position I applied for, how the team fit into the company’s big picture, etc. He asked some technical questions, and I handled them pretty well. (Yeah, I am good.)
They flew me to Waterloo for the final round of interviews three days later. Technically, I flew to Toronto, and the a prearranged limo picked me up at the airport and took me to the Radisson Hotel in Kitchener. When I arrived at the airport, it was already 9PM and very dark, so I didn’t see much on the way. The trip took about 1 hour. The limo was a Lincoln Town Car. The seats are comfy. I am slightly disappointed that it was not a stretch, like the ones seen in gang movies, but since I am not paying for it, I should be more than happy.
Next morning, I woke up at 8, even before the alarm clock had a chance to do its duty. Very unusual, considering my body clock is still 6am Edmonton time. After breakfast, I took a cab to the RIM headquarter, which is in another city, Waterloo. There still was not much to see along the way, probably because Waterloo is a typical college town (i.e. boring, or to put it nicely, good for raising your family).
I arrived at building RIM 1 half an hour early, so I sat down and watched people coming in and out of the office. I noticed a high percentage of people are twenty somethings, and I had for a moment the delusion that I was in a university. And I like being in a university because it’s always energetic. Near 10’o clock there were still some more people coming to work. Flexible time, I said to myself. Good.
The interview took place in the manager’s office. Also present was another senior member of the team. They were very nice, and I felt right at home. The interview was going to be two hours. I was expected to solve some simple programming puzzles, like “writing programs in Java byte code and do arithmetic using hex”.
They began by asking questions about my last job, like what did the product do, what was my role, and the important projects I worked on. I used the whiteboard to draw some pictures to illustrate the concepts. (I like drawing the back end storage symbol BTW. But someone has told me I drew it like a crude oil bucket.) questions tend to be very detailed. I found myself using real examples several times in order to explain how things worked. After time spent on past experience, we switched topic to fundamental programming knowledge: the kind of things that you went through at school, but haven’t really used much in the job. The highlight of the interview was writing some code to solve a programming puzzle. It took me 0.57 second to figure out a naive solution. The naive solution has O(n) run time complexity, which is as good as it can get. However, it requires two pass of data structure, so there is room for improvement. I came up with a better solution in about a minute, which only needs one pass on the data structure. Although the solution is very simple logically, writing its code correctly on a whiteboard while standing up is more tricky. It took me about 10 minutes (Real time could differ from my estimate, since my mind went into a meditative state momentarily and must have lost track of time.) and many uses of the eraser to finish the task. The interviewer did not challenge my doodling, either because my whiteboard writing was so terrible that he couldn’t understand a word, or it was a good solution he was happy about. I tend to think it is the latter.
The rest of the interview seemed easier after the whiteboard programming part was over. There were more questions on advanced Java topics, like multi-threading and design patterns. I think I did well on those questions too. By the end of the interview, I knew my chance of getting an offer was better than 95%.
After finishing the interview, I had a short walk nearby. 20-odd buildings of similar size make up the RIM campus. Buildings are numbered: RIM 1, RIM 2, RIM 109, etc. Again, it really looked a university campus. It was lunch time and I felt a mix of excitement, exhaustion, and hunger. And hunger is getting its increasingly dominant share. I tried to find a place where I can sit down and eat. I walked up and down the street, but all I can find is an On-The-Run Tim Hortons, and an overly crowded cafe whose lineup could be seen from miles away. As I later found out, the location has a “car dependent” rating based on the Walk Score website.
Two days after the interview, I got a call from RIM’s HR and confirmed my guess. My interviews went well and they would like to move forward with reference checks and stuff. The recruiter tried hard to convince me to work at the Waterloo office, instead of the Ottawa branch I originally preferred. I agreed with most of his arguments, like Waterloo being the headquarter and has more actions taking place, having more opportunities to rub shoulders with managers, etc. But I somehow still feel Waterloo is too rural for me. On second thought, it should not matter much because I don’t have a life anyways.
Unfortunately, due to a family circumstance I am not able to relocate at this point, so I have to pass up their offer. I think RIM is a great company to work for. Lots of smart people work there, tons of things to learn, and many fasinating projects are available. The work environment may not be as sexy as Google’s, but still better than most. I am very happy I interviewed with them.