How to get an engineer position at Google without a higher education?
Here is a little story for you.
Like everything, I was going to go to university. My choice fell on the University of California at Los Angeles. Unfortunately at school I had a small average score (2.45 on a four-point scale) and I could not go there. Instead, I attended computer science courses at a local university.
Step # 1: Cheat while you do it
')
While studying for courses, I simultaneously worked in a small company in Griffith, Indiana. Created sites for local small businesses for $ 12 / hour. The work, of course, was not exactly the one that I had imagined for myself in the future, but it could be worse.
I tried not to stick out, I made promises with a margin, while fulfilling them a little earlier. He worked in different projects. The company has earned me well.
In the meantime, I tried to create a game, in my free time, which I had a little bit.
And somehow having the courage, I went to the management and asked for 3 months at their expense, in order to finish my game, and start selling it online. I made tables and colorful graphics how the shareware model will work and how much profit you can get. I had a vague idea of ​​all this, but by some miracle they believed in me, perhaps thanks to the colorful graphics. After two months of development, I launched the online demo.
At some point, a young startup in California, supported by CodeFire, sent a notification stating that they were making the same game! Space-shooter with a top view, like SubSpace, only in 3D. In their notice, they demanded to remove my game.
To this I could answer only one thing: Of course, if you hire me to work.
And they responded with a job offer! I went to them.
The company retained the rights to the original game. I announced my departure in three weeks and we broke up on good terms.
Step number 2: Make friends with professionals.
This is probably one of the most important things you can do. Find someone who is professional in their field, make him your mentor. And never stop learning. While working at Double Helix, I had mentor Nathan Hunt, one of the smartest and most modest guys I've ever met. And he was very patient, despite my elementary questions. I guess I went to his office a thousand times to answer the next stupid question. Years later, he will join Google a month after me.
Each of my mentors changed something in me and in my vision of the world. And this is only a small part of what they gave me.
Step # 3: Fill in the knowledge gaps.
Since I did not have a higher education, I did not know many fundamental things.
I, for example, implemented a physics engine, but at the same time I never encountered dynamic programming (a way to solve complex problems by splitting them into simpler subtasks). To fill these gaps, I implemented almost all of the most common algorithms and data structures that I heard or read. The necessary information can be found in abundance, but there is a huge gap between seeing how something works and understanding the essence of this work.
In time, you need to do the following:
1. Become a professional in at least one of these languages: C, C ++, Objective-C, Java, PHP, Python or
Ruby Fluent in at least one other language and get acquainted with languages ​​such as Scala, Haskell or Lisp.
2. Study data structures. Make the implementation of most of them. You also need to understand the time complexity of the algorithms (O is the notation of the estimation of the complexity of the algorithms).
3. Solve puzzles for programming. Read
this and try to solve the problems
from here .
4. Create your portfolio. (for example, the frameworks you wrote, various applications, small games, etc.)
Step # 4: Gain confidence.
Six years after moving from Indiana, I made six games on different platforms. I was bored, I needed something new. I sent a resume to Google and thought that if I had been taken, I would have become a real engineer, since “I considered myself inferior” due to the lack of the desired paper. But I never got an answer, which I was not really surprised by.
A year later, I sent my resume again. Only this time I removed the “Education” section in it completely. Ironically, the recruiter called me to arrange a preliminary interview on Skype. I asked to postpone the interview two weeks later, and he agreed. I needed this time. I used these two weeks to push as many algorithms and data structures as possible into my head. I programmed 12-14 hours a day and solved hundreds of tasks during this time. I was literally obsessed and did not stop until my fear of being interviewed by Google turned into confidence.
I remember each of my interviews with Google. It was overwhelming. It was quite interesting to talk with interviewers. They saw my excitement and were friendly with me.
Some of the tasks that were given to me are:
- Given a set of two-dimensional points, you need to calculate the horizon . It was easy. I used a data structure known as the binary heap. Here is one solution to this problem.
- Design Microsoft Paint.
It was the most fun task. I started by creating interfaces and class diagrams. I mentioned the fill tool and the interviewer asked me to implement it. Fortunately, I knew how to do it with my eyes closed.
- Describe your opinion on good programming.
It was an open discussion. I talked about what methods of testing exist and when they need to be used (for example: Unit testing, Integration testing, Acceptance testing). I talked about a single code style. And so on. This can be found in the Code Complete and Effective Java books.
I sincerely enjoyed each round of the interview. If I hadn’t prepared, I’m sure everything would be completely different. After the interview, I had a very good feeling, I was pleased. But, I heard that even if the recruiters gave the go-ahead, Larry should approve the candidate himself. I was afraid that as soon as he saw my ignorance, then that would be the end of it.
But this did not happen, and one day, when I ate sushi at a dinner in Santa Claire, they called me and I enthusiastically accepted a job offer. That day, I knew for sure that I would never go back to school.
“The winners first seek victory, and then go to war, while the vanquished go first to war, and then seek to win.”
PS Unfortunately there is not enough karma yet to place the topic in the respective hubs, do not kick much please because of this)