Software engineer's compulsory and elective

Source: Internet
Author: User

6 key points in the eyes of Google employees

    • Before I give you a list of courses, read the 12th
    • Full-time staff--based on your industry experience and academic background to selectively look at this answer
    • Quasi-college students-please skip to the 7th

Tag Description:

    • # Optional
    • * * Required
#第一点: Let's get back to the question itself, and how can we prepare ourselves to be "good" software engineers?

Yes! The remainder of this question is optional. Joining Google is not a lunar mission. Any good software engineer has the opportunity to become part of Google's work culture. The question is how you define "good".

* * 2nd: Adjust your attitude

Before you impress Google recruiters, let's take a look at whether Google's software engineer role is what you really want.

Software engineers are not as interesting as the general idea says. In addition to the user interface and user experience positions, generally speaking, no matter what text editor you use,--eclipse, vim, or emacs--your screen will be black, boring and boring. Full-time software engineers need not only the ability to engage in complex algorithms, but also the need to be tolerant and patient enough to pay attention to the details of large programs.

At Google, most software engineers usually have a role in dealing with math problems. It doesn't matter how many languages you have mastered or how much you have to play with Java, C, C + +, and so on.

It is important to have this four goals:

    • Your ability to create effective algorithms
    • You read the code written by someone else and discover the quality of any problems it has.
    • Your curiosity about learning and realizing new technology trends and adapting to demand
    • And last and foremost: what did you create and how did you create it?

What I have to do to achieve the above four goals is not easy. Most of our Google employees have a hard time trying to reach these goals, but we've tried, so you should try.

Everyone has a different way of learning. For me, I read a research paper I found on the Quora link every day (possibly and probably not related to computer science), a Google research article (internal record).

Once you join Google, you will have access to all of the code bases, databases, forums, research papers and projects that will give you great help when you learn and you can't find them on Wikipedia. But when you're on the road to join Google, there are a few things that are common in the learning process. In the 5th, you will learn more about how to achieve these four goals-but there are some prerequisites that need to be looked at before. So let's go to the next point. That is:

#第三点: 2014 Technical Development Guide-from Google

As a successful software engineer, it is important to have a solid computer base. Following this Google Guide is a suggested path for college students to develop their technical skills professionally or non-professionally through self-paced, hands-on learning.

    • Please weigh the use of this guide on your own
    • There may be other things you want to learn or want to do outside of this guide-just do it!
* * 4th: Advice on professional learning
    • Introductory Course in computer science

Note: The introductory course in computer science can provide some guidance on programming.

Online resources:

Udacity–intro to CS course,
Coursera–computer Science 101

* Translator Note: These online resources are mostly taught in English, so there is no translation course name (the same as the same), and as a programmer English must be good, you can see Bole online old code Nong wrote " Old yard teach you to learn English" article.

    • Write code at least in an 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-bookintermediate 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

Note: You can add these languages to your repository: Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.

Online Resources: w3school.com–html Tutorial *, learn to Code

    • Test your code

Note: Learn how to track bugs, create tests, and destroy your software

Online resources: Udacity–software testing Methods, Udacity–software debugging

    • Fostering logical thinking and accumulating discrete mathematics knowledge

Online resources:

MIT Mathematics for Computer Science,
Coursera–introduction to Logic,
Coursera–linear and discrete optimization,
Coursera–probabilistic Graphical Models,
Coursera–game theory.

The Translator notes: Most of the Coursera courses have Chinese subtitles, which will reduce the threshold of language learning, but it is still recommended to learn the original course.

    • Develop a deep understanding of algorithms and data structures

Note: Learn some basic data types (stacks, queues, and packages), sorting algorithms (quick, merge, heap sort) and data structures (binary lookup, red-black tree, hash table), large O notation, etc.

Online resources:

MIT Introduction to Algorithms,
Coursera–introduction to Algorithms Part 1 & Part 2,
Wikipedia-list of Algorithms,
Wikipedia-list of Data structures,
Book:the algorithm Design Manual

    • Develop a deep understanding of the operating system

Online Resources: UC Berkeley Computer Science 162*

* Translator Note: This link is YouTube on, the domestic has a lot of electric donkey resources, pro-test available (if not found available links, the translator can provide)

    • Learn the knowledge of AI

Online resources: Stanford university-introduction to robotics, Natural Language processing, machine learning*

* Translator Note: This machine learning course at Stanford Andrew Ng is highly recommended, and translators also have plenty of resources for the course.

    • Learn how to construct a compiler

Online Resources: coursera–compilers*

* The Translator notes: This course is also quite practical, preferably with a compiler project that can finish the course in a hands-on way.

    • Learning Cryptography

Online Resources: coursera–cryptography, udacity–applied cryptography

    • Learn Parallel programming

Online Resources: coursera–heterogeneous Parallel Programming

* * 5th: Advice on non-professional learning
    • Participate in projects outside the classroom

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

Online resources: Apache List of Projects, Google Summer of Code,google Developer Group

    • Participate in small snippets in large systems (code base), read and understand existing code, check documents, and track debugging.

Note: It's a good way to use GitHub to read someone's code or to contribute to a project.

Online resources: Github, Kiln

    • Participate in the project with other programmers

Note: This will help you improve your ability to work in a team and also enable you to learn from others.

    • Exercise your algorithmic knowledge and programming skills

Note: Use these programming contests like Codejam or ACM ICPC to exercise your algorithmic knowledge

Online resources: Codejam, ACM icpc*

* Translator Note: There are many OJ in China can also play this role, such as POJ, nine degrees, etc.

    • Become a teaching assistant

Note: Helping to teach other students will help increase your knowledge in this subject

    • Internship experience in software engineering

Note: Make sure you apply for an internship before the internship period arrives. In India and the United States, internship in summer, 5 to September, and the application channel is usually open several months in advance.

Online resources: Google.com/jobs

#第六点: Google's recommended/sponsored projects and teams

Within your area of interest, you may choose to subscribe to a few courses. These programs and programs are great places to study, but they don't increase or decrease your chances of entering Google-they don't wait for internships. ( more information from RobertLove)

    1. Google course--making sense of Data

This self-paced online course is intended for anyone who wants to learn more about structure, visualization, and manipulation of data.

2. Google Course--bold Discovery

The two-day interactive meeting will give one or two grade students a few introductions about Google culture and the company's career prospects.

3. The summer of Google programming

A global online project that provides developers with 18 or more years of high school support to write code for a wide variety of open source software projects.

4. Google Scholarship Policy

This project provides students with the opportunity to work for the internet during the summer vacation and the technical policies proposed in the Public interest organization.

5. Google Student Veterans Summit

The Google Student Veterans Summit includes vocational training courses for veterans adapting to the work environment. You can also see:Ellen spertus in how can I effectively used my last II years of college to prepare for a great software Engineering job at GOOGLE/FB or a startup? the point of view on this issue. *

* Translator Note: This is Quora Ellen Spertus on another question (how do I efficiently use the university's last two years to prepare for a job as a good software engineer for Google/facebook or startups).

* * 7th: Recommendations for the mathematics curriculum

(For college students)

Personal point of view: Any neglect of these disciplines will allow you to enter the category of mediocre programmers who learn completely in the wrong way. The more you prepare, the more you enjoy writing code. These are some of the prerequisites for Software engineering, and you need to understand the essence of the algorithm. If software engineers can recall the simple knowledge of learning in school, most of the mistakes they made could have been avoided.

As you delve into math or computer science, you will be aware of the importance of your "data structures you learned during your undergraduate studies" and "machine learning from graduate school." So, to design a complex algorithm, you have to be proficient in the list of courses. For university graduate students, if you neglect these disciplines, I strongly suggest that you should review them in the best way you can.

After you have studied the introductory syllabus in your school textbooks, practice the following lessons to deepen your understanding. Most college students (even incumbents) underestimate these courses and then become another kind of mediocre programmer;

    • Linear algebra

1. Linear Algebra | Mathematics | MIT OpenCourseWare (I recommend)
2. Coding the Matrix:linear Algebra Through Computer Science application (recommended by colleagues)

Learning these will help you understand the following regression model-a basic step in machine learning. No school, university, lab or institution will teach you these linear algebra courses. Go learn it yourself.

    • Calculus

1. calculus 1-ohio State University
2. Pre-Calculus courses-universitat Autonoma de Barcelona
3. Calculus for Beginners and Artists–mit

    • Statistics & probability

Note: When you go to college and graduate school, the syllabus becomes a machine learning algorithm. For most college students, the first three months of the machine learning program have made them miserable, and when they finally catch up, the syllabus advances to more machine-learning complex areas such as deep learning, neural networks, and neural network flow processing.

#准大学生: Google recommended/Sponsored projects

    • Google's Code-in project (GCI)

This competition introduces a variety of contributions that make open source software development possible for prospective college students aged 13-17.

    • Rise bonuses

Google Rise is a partner award that rewards programs designed to promote and support stem* and computer education initiatives for k12* primary and secondary school students around the world.

*k12, from kindergarten to Grade 12

*stem,science,technology,engineering,math, science, technology, engineering, mathematics

    • Frontier Computer Science Research Institute (LEAD-CSI)

This project enables secondary school students from different communities to reach universities and careers in the stem field.

    • Create with Code

Programming is a new capability-it carries the potential to create, innovate, and transform the world in a civilized way. The move aims to inspire millions of girls to experience the magic of code.

    • High School Symposium

This one-day project aims to provide valuable business skills to high school seniors before they get to college.

    • Pioneer

The Pioneer project is a global network of leaders, advocates and computer education ambassadors who are responsible for connecting and motivating young people and educators around the world through computer science.

    • Google Technology Expo

The Google Tech Fair is a global competition for teens aged 13-18. Students submit projects online and get the chance to win prizes.

    • Summer Institute of Computer Science (CSSI)

CSSI is a three-week summer program for new students who are interested in learning computer science and are about to enter the university.

    • Google + Camping projects

30 days of DIY and production activities. Maker Camp is a free virtual summer camp that's open to everyone on Google +

    • Connected classrooms

Collaborate with teachers and educational organizations on Google + to provide experiential learning opportunities for K12 students.

Software engineer's compulsory and elective (turn)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.