I often like to read through some of Google careers information for insight into what I should be focusing on learning while still in school. Recently, I stumbled upon Google’s Technical Development Guide, targeted towards Computer Science students that are looking to get a job at Google. This guide gives online supplemental resources for students. In my opinion, this guide is intended to ensure that CS students understand that they will not likely be successful while relying solely on school curriculum to gain the knowledge necessary to be a developer.
Let’s take a peek at what they suggest…
To say the very least, this guide is extensive with action items ranging from taking an Introduction to CS course to learning Artificial Intelligence, to learning Parallel Programming. Their list seems to approach being a well-rounded developer from two angles: 1) Gathering technical skills and broadening programming language knowledge and 2) Gaining experience working in team environments and on teams outside of usual school structure.
What does this list entail?
- Take an Into to CS Course
- Code in (at least) ONE object-oriented programming language (C++, Java, Python)
- Test Your Code
- Develop logical reasoning and knowledge of Discrete Math
- Develop a strong understanding of algorithms and data structures.
- Develop a strong understanding of operating systems.
- Learn UX design
- Learn Artificial Intelligence
- Learn how to build compilers
- Learn Cryptography
- Learn Parallel Programming
- Work on projects outside of the classroom
- Work on projects with other developers
- Practice your algorithmic knowledge and coding skills
- Work on a small piece of a large system (code base), read and understand existing code, track down documentation, and debug
- Become a Teaching Assistant
- Gain internship experience in software engineering
You may be thinking, “this list would take a life time to master”. In many cases, that is the truth, but I think the goal is to have a decent understanding of all of these areas then use that knowledge determine an area to master. For instance, I plan to specialize in Artificial Intelligence in grad school, but it’s still important for me to understand the other areas because they all work together. Regardless, this list gives us a glimpse into what Google expects from future Software Engineer applicants. Google accompanies their list with links to online resources that students can use to accomplish these tasks. I’ve highlighted in blue the tasks that I have worked on since beginning my CS degree program. I did this to demonstrate just how obtainable this list is, especially when tackled over time.
I believe the biggest takeaway in this situation is that students shouldn’t rely solely on their school’s curriculum to give them all of the knowledge they need. I have been an advocate of supplemental learning and have mentioned it in many blog posts before this one. What’s more interesting is that supplemental learning has gone from being a way to be competitive while job hunting, to being an expectation for many successful organizations. As technology advances, developers will need to have a broader skill baseline in order to be successful. Personally, I believe this Technical Development Guide is a tool that any aspiring developer should use, not just ones that want to snag a job at Google!