May 23, 2015

Google’s advice to become a great software engineer

Google
Google’s Guide for Technical Development provides tips on how to become a successful software engineer.

Google is known for employing some of the world’s best software engineers, and the company’s guidelines are therefore of great value.

The guide from Google is a “suggested path for university students to develop their technical skills academically and non-academically through self-paced hands-on learning”.

“You may use this guide to determine courses to take, but please make sure you are taking courses required for your major in order to graduate,” said Google.

“The online resources provided in this guide are not meant to replace courses available at your university. However, they may help supplement your learning or provide an introduction to a topic.”

The section below is a summary of Google’s advice on how to become a successful software engineer.

Google’s recommendations for academic learning

According to Google, having a solid foundation in computer science is important to become a successful software engineer.

Google advises budding software engineers to use the guide at their discretion, and advises users to also learn things outside of this guide.

Introduction to CS Course

Take Introduction to Computer Science courses that provide basic instructions for coding.

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 – JavaScript, CSS & HTML; Ruby; PHP; C; Perl; shell script; Lisp; and Scheme.

w3school.com – HTML Tutorial
Codecademy
Udacity – Mobile Web Development
Udacity – HTML5 Game Development
Test Your Code

Notes: Learn how to catch bugs, create tests, and break your software.

Udacity – Software Testing Methods
Udacity – Software Debugging
Develop logical reasoning and knowledge of discrete math

MIT Mathematics for Computer Science
Coursera – Introduction to Logic
Coursera – Linear and Discrete Optimization
Coursera – Probabilistic Graphical Models
Coursera – Game Theory
Develop a strong understanding of Algorithms and Data Structures

Notes: 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.

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

UC Berkeley Computer Science 162
Learn UX Design

Udacity – UX Design for Mobile Developers
Learn Artificial Intelligence

Stanford University – Introduction to Robotics
Natural Language Processing
Machine Learning
Learn how to build compilers

Coursera – Compilers
Learn cryptography

Coursera – Cryptography
Udacity – Applied Cryptography
Learn Parallel Programming

Coursera – Heterogeneous Parallel Programming
Work on projects outside of the classroom.

Notes: Create and maintain a website, build your own server, or build a robot.

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.

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.

CodeJam
ACM ICPC
Become a Teaching Assistant

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. Applications are usually accepted several months in advance.

Source: http://mybroadband.co.za

No comments:

Post a Comment