Francisco Soto Ramblings about code, life and stuff.

Back to Mexico
Jul 16, 2013

Graphs, graphs, graphs!!!!

The whirlwind

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.

But…

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.

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).

Go up.


comments powered by Disqus