Tech Skills And Courses Google Recommends For Software Engineers
GS 1163 Times 600 People

The lack of skilled IT workers is hurting the deployment of emerging technology, according to a new survey from Gartner. In areas from cloud to cybersecurity, this crisis is expected to last for years to come.

Please use this guide at your discretion

- There may be other things you want to learn or do outside of this guide - go for it!
- Checking off all items in this guide does not guarantee a job at Google
- This guide will evolve or change - check back for updates
- Follow our Google for Students +Page to get additional tips, resources, and other students interested in development.

Recommendations for Academic Learnings

- Introduction to CS Course
Notes: Introduction to Computer Science Course that provides instructions on coding Online Resources: Udacity - intro to CS course, Coursera - Computer Science 101

- Code in at least one object oriented programming language: C++, Java, or Python
Beginner Online Resources: Coursera - Learn to Program: The Fundamentals, MIT Intro to Programming in Java, Google's Python Class, Coursera - Introduction to Python, Python Open Source E-Book
Intermediate Online Resources: Udacity's Design of Computer Programs, Coursera - Learn to Program: Crafting Quality Code, Coursera - Programming Languages, Brown University - Introduction to Programming Languages

- Learn other Programming Languages
Notes: Add to your repertoire - Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.
Online Resources: - HTML Tutorial,

- Test Your Code
Notes: Learn how to catch bugs, create tests, and break your software
Online Resources: Udacity - Software Testing Methods, Udacity - Software Debugging

- Develop logical reasoning and knowledge of discrete math
Online Resources: MIT Mathematics for Computer Science, Coursera - Introduction to Logic, Coursera - Linear and Discrete Optimization, Coursera - Probabilistic Graphical Models, Coursera - Game Theory

- Develop strong understanding of Algorithms and Data Structures
Notes: Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), and data structures (binary search trees, red-black trees, hash tables), Big O.
Online Resources: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2, List of Algorithms, List of Data Structures, Book: The Algorithm Design Manual

- Develop a strong knowledge of operating systems
Online Resources: UC Berkeley Computer Science 162

- Learn Artificial Intelligence Online Resources:
Stanford University - Introduction to Robotics, Natural Language Processing, Machine Learning

- Learn how to build compilers
Online Resources: Coursera - Compilers

- Learn cryptography
Online Resources: Coursera - Cryptography, Udacity - Applied Cryptography

- Learn Parallel Programming
Online Resources: Coursera - Heterogeneous Parallel Programming

Recommendations for Non-Academic Learnings

Work on project outside of the classroom.
Notes: Create and maintain a website, build your own server, or build a robot.
Online Resources: Apache List of Projects, Google Summer of Code, Google Developer Group

Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.
Notes: Github is a great way to read other people’s code or contribute to a project.
Online Resources: Github, Kiln

Work on project with other programmers.
Notes: This will help you improve your ability to work well in a team and enable you to learn from others.

Practice your algorithmic knowledge and coding skills
Notes: Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.
Online Resources: CodeJam, ACM ICPC

Become a Teaching Assistant
Notes: Helping to teach other students will help enhance your knowledge in the subject matter.

Internship experience in software engineering
Notes: Make sure you apply for internships well in advance of the period internships take place. In the US, internships take place during the summer, May-September, and applications are usually open several months in advance.


Leave a Reply