Technical Development Guidejava
This guide provides tips and resources to help you develop your technical skills (academically and non-academically) through self-paced, hands-on learning.node
This guide is intended for Computer Science students seeking an internship or university grad role at Google.python
What this guide is forandroid
Note: Following the recommendations in the guide does not guarantee a job at Google.git
How to use this guide github
Recommendations and Resourcesweb
Take an 「Introduction to CS」 course spring |
Focus on basic coding instructions.apache
Online resources:app |
|||
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:
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:
|