Back to Mexico
Jul 16, 2013
These past months have been rough. Changes, adjustments, moving, going, returning. At the end of 2012 I resigned from my job at INgrooves and went back to Mexico for the holidays not knowing for sure what to do next. I was torn between two choices: looking for a new job in the bay area, get an H-1B transfer and stay or go back to Mexico and do something different. Maybe something on my own.
Since my wife and I had only lived for one year in the bay area we decided that it was too short a time frame to live in such a place. We did many activities, went out and met people; it wasn’t enough. We felt like one year was not good enough and staying would bring more experiences and joys.
I started looking for a job.
Sometimes things just don’t work out.
I worked at Expensify for four months and nine days and then I quit. I love the product I think I really hit it off with a lot of the people and had a great time hanging out with them but I somehow never felt like I fitted in their engineering culture. I tried -and so did they- to make it work but we had some irreconcilable differences and I decided to part ways. It wasn’t fair for them or for me. I thank them all for the home they gave me in this tiny amount of time.
And now I was back to square one, what’s the next step?
I didn’t thought it that much but I decided to apply to Google.
This wasn’t actually my first rodeo. I interviewed with them about two years and a half ago and failed on the second phone interview. I had a severe gap in my graph theory knowledge and the question they happened to ask was very easily solvable with it. I took a few stabs in the dark but failed miserably. This was entirely my fault, I didn’t really prepare for said interviews even though they are famously hard.
After that I made sure I solved the problem they gave me in several ways and tried to fill the gaps I had, not only the graph one but all that I could find, which are many, on computer science that started rusting with the years. I am very happy, these past two years I’ve learned and re-learned many interesting and useful things. Plus some others that had been in my “I need to do that someday” list, like learning Lisp.
But I digress.
This time I prepared really hard for the interview. I went back to the basics. I took my algorithms books (this, this and this), and when through them. I also went through some other nice reading material like Operating Systems Design and Implementation and The art of multiprocessor programming, plus Wikipedia and whatever other helper material I found on Google. I spent two weeks of very intensive studying/rehearsing.
I produced a lot of artifacts during this sessions and I put a lot of effort into actually understanding exactly what was going on in everything I wrote as opposed to simply translating the code/pseudo-code from the books into my favorite language. I made sure I understood the why’s and the how’s, I cross referenced literature, tried different approaches, plus the years of experience under the belt kind of makes you see things in a new light.
And yet I failed. This time I didn’t even make it past the first phone technical interview.
The technical questions were really basic, or so I thought. I won’t disclose the exact problems but suffice to say they involved arrays and binary search trees. The interviewer asked me the question, I explained the straightforward solution, explained the complexity in the average case and the worst case, he then asked me for an improved solution that avoided the worst case and I came out with one fairly quickly, he said he liked that idea and asked me to implement it. I wrote an implementation of the binary search tree plus the functions needed for what we were discussing in C on a Google’s Doc document.
He then asked for the complexity of the solution which I responded and he seemed satisfied and he asked me how could we improve it even further, I made a quick suggestion that would make each insertion into the tree O( 1 ), in the context of this specific problem, and I modified the code to implement the suggested change. That was the last question.
I have to say here that I had a few typos in the code which I compiled after the interview. Things like sarch instead of search, ndoe instead of node, tre instead of tree and missed a condition in one of the functions I wrote.
if (left > right) return; which I assume is the thing that made him decide not to proceed further.
The recruiter called me and said he couldn’t give much feedback so I will never be sure what was it that the interviewer didn’t like and this time around is not really clear what was it. I probably need to improve my Google Doc’s coding abilities.
The end result: I am probably not Google material.
Mexico it is.
And I don’t mean it in a bad way. I actually want to go back to Mexico. I know I could easily find a job here that would gladly get me an H-1B transfer but I am not really sure that is what I want to do and I do not want to rush into things. I cannot stay in the US for very long because of the revocation of my current H-1B, although I still have my visitor’s visa, and because living in San Francisco without having a job is almost next to impossible.
I want to go back, relax, do some fun stuff, write code just for the kicks of it, read as many books from my ever growing queue as I can and then figure out what is it that I want to do next. Find another job? a job outside Mexico? Work as a contractor and travel the world working from the remotest of locations? Start my own thing?
Who knows, only time will tell (and this blog when such time arrives).