1. Mastering the foundation. You have to be able to get through an introduction to CS course, like the ones from Udacity or Coursera.
2. Learn to code in at least one object-oriented programming language. Like C++, Java, or Python. Consult MIT or Udacity.
3. Learn other programming languages. Add Java Script, CSS, Ruby, and HTML to your skillset. W3school and CodeAcademy are there to help.
4. Test your code. Because Google wants you to be able to "catch bugs, create tests, and break your software." Udacity, once again.
5. Have some background in abstract math. Like logical reasoning and discrete math, which lots of computer science draws on. MIT can help you with mathematics for computer science.
6. Understand algorithms and data structures. Google wants you to learn about fundamental data types like stacks, queues, and bags, as well as grasp sorting algorithms like quicksort, mergesort, and heapsort. MIT provides the recommended online resources, and the book "The Algorithm Design Manual" is super helpful, too.
7. Get to know operating systems. Because they'll be where you do much of your work. The University of California, Berkeley, provides a primer.
8. Become familiar with artificial intelligence. Google loves robots. Stanford has the knowledge.
9. Learn how to build compilers. Stanford says that when you do that, "you will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines." Head to Coursera for the learning.
10. Learn cryptography. Because cybersecurity is crucial. Coursera andUdacityhttps://www.udacity.com/course/cs387 provide courses.
11. Learn parallel programming. Because being able to carry out tons of computations at the same time is super powerful. The University of Illinois can help you out.
Source: 11 Skills You Need To Master To Land A $100,000 Engineering Job At Google