Recently on Google a separate page has appeared , which shows the courses and tools for online education, that necessary to know for all the engineers and programmers.

Passage of educational programs does not guarantee a job at Google, as the company said in a separate footnote. But it is very interesting  to know what courses according to Google every self-respecting programmer and engineer must pass.

The list of courses in the original you can find here.

Recommendations on the education

  1. Go through the introductory course of Computer Science: Udacity, Coursera.
  2. Learn how to program at least one OOP language: C ++, Java, Python:

For beginners: Coursera - Programming training, MIT course on Java, Google course on Python , Coursera course on Python.
For Intermediate level: Udacity - design of computer programs, Coursera - creation of high-quality code, Coursera - programming languages, Brown University Сourse - an introduction to programming.

  1. Expand your repertoire: JavaScript, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme: tutorial on HTML, codeacademy.com.
  2. Learn how to test code: Udacity - testing methods, Udacity - program debugging.
  3. Knowledge of discrete mathematics: mathematics course for programmers MIT.
  4. Understanding of algorithms and data structures: MIT introductory course about algorithms, Coursera - introductory course about algorithms (part 1 and part 2), the list of algorithms, the types of data structures, the book about algorithms.
  5. Understanding the work of operating systems: Berkeley course.
  6. Explore artificial intelligence: the entry into robotics, Stanford course, machine learning.
  7. Compiler creation: Coursera сourse.
  8.  Knowledge of cryptography: Coursera course about cryptography, Udacity course about cryptography.
  9.  Knowledge of parallel programming: Coursera course

Recommendations on the work

  1. Create a site, construct your own server, or create a robot: a list of Apache projects, Google Summer of Code, a team of Google developers.
  2. Develop a small part of a large system, read and understand the code, learn the program documentation, debug your program. Supporting Resources: GitHub, Kiln.
  3. Work on the project in team. You will learn from others and learn teamwork.
  4. Upgrade your programming skills and knowledge of algorithms: CodeJam, ACM ICPC.
  5. Teach others.
  6. Become an intern: google.com/jobs.

Company provides such recommendations for all programmers and engineers.