Technical Development Guide

This guide provides tips and resources to help you develop your technical skills (academically and non-academically) through self-paced, hands-on learning.

This guide is intended for Computer Science students seeking an internship or university grad role at Google.

What this guide is for

Note: Following the recommendations in the guide does not guarantee a job at Google.

How to use this guide

Recommendations and Resources

Take an “Introduction to CS” course Focus on basic coding instructions.

Online resources:

Learn to code in (at least) one object-oriented programming language (C++, Java®, Python®) Online resources for beginning programmers:

Online resources for more experienced programmers:

Learn other programming languages Add to your repertoire:
  • JavaScript®
  • CSS & HTML
  • Ruby®
  • PHP®
  • Perl®
  • Shell® script
  • Lisp®
  • Scheme®

Online resources:

Test your code Learn how to catch bugs, create tests, and break your software.

Online resources:

Develop logical reasoning and knowledge of discrete math Online resources:
Develop a strong understanding of algorithms and data structures Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), data structures (binary search trees, red-black trees, hash tables), and Big O.

Online resources:

Develop a strong knowledge of operating systems Online resources:

Computer Science 162, UC Berkeley, YouTube

Learn artificial intelligence and machine learning Online resources:
Learn Android development Online resources:
Learn web development Online resources:
Learn other developer skills Online resources:
Learn cryptography Online resources:
Work on projects outside of the classroom Create and maintain a website, build your own server, or build a robot.

Online resources:

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

Online resources:

Work on projects with other programmers 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 Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.

Online resources:

Become a teaching assistant Helping to teach other students will help enhance your knowledge of the subject matter.
Gain internship experience in software engineering Find Google’s internships in Engineering and Technology on our Students site.

Online resource to prepare to interview for software engineering positions, including for internships: