Cómo planear convertirse en ingeniero de software de Google después de tres años de estudios de posgrado
Seis puntos clave desde la perspectiva de los empleados de Google
Antes de darte la lista de cursos, lee primero los puntos 1 y 2
Empleados a tiempo completo: basados en en Trate esta respuesta de forma selectiva según su experiencia en la industria y su formación académica
Estudiantes universitarios potenciales: vaya directamente al punto siete
Marque las instrucciones:
# Opcional
**Obligatorio
#Primer punto: Volvamos a la pregunta en sí, es decir, ¿cómo prepararse para convertirse en un "excelente" ingeniero de software?
¡Sí! El resto de esta pregunta es opcional. Unirse a Google no es una hazaña. Cualquier buen ingeniero de software tiene muchas posibilidades de formar parte de la cultura laboral de Google. La pregunta es cómo se define "excelente".
**Punto 2: Ajusta tu actitud
Antes de impresionar a los reclutadores de Google, echemos un vistazo a si el puesto de ingeniero de software en Google es lo que realmente deseas.
Los ingenieros de software no son tan interesantes como la creencia popular los hace parecer. Dejando a un lado las publicaciones de UI y UX, en términos generales, no importa qué editor de texto use (Eclipse, Vim o Emacs), su pantalla será negra, aburrida y aburrida. Un ingeniero de software de tiempo completo no sólo necesita tener la capacidad de trabajar en algoritmos complejos, sino que también debe ser lo suficientemente tolerante y paciente como para prestar atención meticulosa a los detalles de programas grandes.
En Google, la función habitual de la mayoría de los ingenieros de software es ocuparse de problemas matemáticos. No importa cuántos idiomas sepas ni cuánto juegues con Java, C, C, etc.
Lo que importa son estos cuatro objetivos:
Tu capacidad para crear algoritmos efectivos
Tu calidad de atención al leer código escrito por otros y detectar cualquier problema en él.
Tu curiosidad por aprender e implementar nuevas tendencias tecnológicas y adaptarte a las necesidades
Por último y más importante: ¿Qué creaste y cómo lo creaste?
No es fácil lograr los cuatro objetivos anteriores donde tengo que hacerlo. A la mayoría de nosotros en Google nos cuesta alcanzar estos objetivos, pero lo intentamos, así que tú también deberías intentarlo.
Cada uno tiene una forma diferente de aprender. Para mí, leo todos los días un trabajo de investigación que encontré en un enlace de Quora (que puede estar relacionado o no con la informática) y un artículo de investigación de Google (registro interno).
Una vez que te unas a Google, tendrás acceso a todos los repositorios de códigos, bases de datos, foros, trabajos de investigación y proyectos que pueden ser de gran ayuda en tus estudios y que no puedes encontrar en Wikipedia. Pero mientras te preparas para unirte a Google, hay algunas cosas que son comunes en el proceso de aprendizaje. En el punto 5, aprenderá más sobre cómo lograr estos cuatro objetivos, pero hay algunos requisitos previos que deben tenerse en cuenta antes de hacerlo. Entonces, pasemos al siguiente punto. Es decir:
#El tercer punto: Guía de desarrollo tecnológico 2014 - de Google
Como ingeniero de software exitoso, es importante tener una base informática sólida. Para los estudiantes universitarios que buscan desarrollar sus habilidades técnicas de manera profesional o no profesional a través del aprendizaje práctico a su propio ritmo, seguir esta guía de Google es un camino sugerido.
Utilice esta guía a su propia discreción
Es posible que haya otras cosas que quiera aprender o hacer fuera de esta guía. ¡Continúe y hágalo!
**Punto 4: Sugerencias para el aprendizaje profesional
Cursos de introducción a la informática
Nota: Los cursos de introducción a la informática pueden proporcionar alguna orientación sobre programación.
Recursos en línea:
Udacity – curso de introducción a la informática,
Coursera – Ciencias de la computación 101
*Nota del traductor: estos están en línea La mayoría de los recursos se imparten en inglés, por lo que no hay traducción de los nombres de los cursos (lo mismo a continuación). Además, como programador, debes ser bueno en inglés. Puedes consultar el artículo "Old Coders Teach You to". Aprenda inglés", escrito por los programadores experimentados de Bole Online.
Escribe código en al menos un lenguaje de programación orientado a objetos: C, Java o Python
Recursos en línea para principiantes:
Coursera – Aprende a programar: Los fundamentos,
Introducción del MIT a la programación en Java,
Clase Python de Google,
Coursera – Introducción a Python,
Python Open Fuente E-BookRecursos intermedios en línea:
Diseño de programas informáticos de Udacity,
Coursera – Aprenda a programar: elaboración de códigos de calidad,
Coursera – Lenguajes de programación,
Brown University – Introducción a los Lenguajes de Programación
Aprende otros lenguajes de programación
Nota: Puedes agregar estos lenguajes a tu repositorio: Java Script, CSS , HTML, Ruby, PHP, C, Perl, Shell Lisp, Scheme.
Recursos en línea: w3school.com – Tutorial HTML*, ?Aprende a codificar
Prueba tu código
p>
Nota: aprenda cómo rastrear errores, crear pruebas y romper su software
Recursos en línea: Udacity – Métodos de prueba de software, Udacity – Depuración de software
Cultivo del pensamiento lógico y acumulación de conocimientos matemáticos discretos
Recursos en línea:
MIT Mathematics for Computer Science,
Coursera – Introducción a la lógica, p>
Coursera: optimización lineal y discreta,
Coursera: modelos gráficos probabilísticos,
Coursera: teoría de juegos.
Nota del traductor: la mayoría de los cursos de Coursera tienen subtítulos en chino, el umbral para aprender el idioma se reducirá, pero aún así se recomienda estudiar el curso original.
Desarrollar una comprensión profunda de los algoritmos y las estructuras de datos
Nota: comprender algunos tipos de datos básicos (pilas, colas y paquetes), algoritmos de clasificación (clasificación rápida, clasificación por combinación, clasificación en montón) y estructuras de datos (búsqueda binaria, árbol rojo-negro, tabla hash), notación O grande, etc.
Recursos en línea:
MIT Introducción a los algoritmos,
Coursera – Introducción a los algoritmos Parte 1 y Parte 2,
Wikipedia – Lista de algoritmos,
Wikipedia – Lista de estructuras de datos,
Libro:?El Manual de diseño de algoritmos
Desarrolle una comprensión profunda de los sistemas operativos
Recursos en línea: UC Berkeley Computer Science 162*
*Nota del traductor: este enlace está en YouTube. Hay muchos recursos de eMule en China que se pueden utilizar para pruebas personales (si no se puede encontrar un enlace disponible, el traductor puede proporcionárselo)
Aprenda los conocimientos de la inteligencia artificial
Recursos en línea: Universidad de Stanford: ?Introducción a la robótica, ?Procesamiento del lenguaje natural, ?Aprendizaje automático*
*Nota del traductor: este curso de aprendizaje automático impartido por Stanford Andrew Ng es muy recomendable y el traductor también tiene una gran número de este recurso del curso.
Aprenda a construir un compilador
Recursos en línea: Coursera – Compiladores*
*Nota del traductor: este curso también es bastante práctico, por lo que es mejor seguirlo. adelante y comience Complete el proyecto compilador del curso.
Aprenda Criptografía
Recursos en línea: Coursera – Criptografía, Udacity – Criptografía aplicada
Aprenda programación paralela
Recursos en línea: Coursera – Heterogéneo Programación Paralela
**Punto 5: Sugerencias para el aprendizaje no profesional
Participa en proyectos fuera del aula
Nota: Crea y mantén un sitio web, construye tu propio servidor, o crear un bot.
Recursos en línea: Lista de proyectos de Apache, Google Summer of Code, Grupo de desarrolladores de Google
Participe en pequeños fragmentos de código en sistemas más grandes (bases de código), lea y comprenda el código existente, verifique documentación y depuración de seguimiento.
Nota: Usar GitHub es una excelente manera de leer el código de otras personas o contribuir a un proyecto.
Recursos online: Github, Kiln
Participa en proyectos con otros programadores
Nota: Esto te ayudará a mejorar tu capacidad para trabajar en equipo, y también Le permite aprender de los demás.
Ejercite sus conocimientos de algoritmos y habilidades de programación
Nota: ejercite sus conocimientos de algoritmos a través de concursos de programación como CodeJam o ACM ICPC
Recursos en línea: CodeJam,?ACM ICPC*
*Nota del traductor: hay muchos OJ en China que también pueden desempeñar esta función, como POJ, Jiudu, etc.
Conviértete en un asistente docente
Nota: Ayudar a enseñar a otros estudiantes le ayudará a aumentar su conocimiento del tema
Experiencia de pasantía en ingeniería de software
Nota: asegúrese de estar listo antes del período de reclutamiento de pasantías Solicitó una pasantía. En India y Estados Unidos, el periodo de prácticas es durante las vacaciones de verano, de mayo a septiembre, y el proceso de solicitud suele abrirse con meses de antelación.
Recursos online: google.com/jobs
#Sexto punto: Proyectos y equipos recomendados/patrocinados por Google
En tu campo de interés, puedes Allí Hay pocos cursos para elegir y suscribirse. Estos cursos y proyectos son excelentes lugares para aprender, pero no aumentarán ni disminuirán sus posibilidades de ingresar a Google; no equivalen a una pasantía. (Más información de Robert Love)
Curso de Google: Cómo entender los datos
Este curso en línea a su propio ritmo es para cualquiera que quiera aprender más sobre estructura y visualización, preparado por aquellos quienes operan los datos.
2. Curso de Google: BOLD Discovery
Esta sesión interactiva de dos días brindará a los estudiantes universitarios de primer y segundo año una introducción a la cultura de Google y las perspectivas profesionales en la empresa. .
3.?Google Summer of Code
Un proyecto global en línea que proporciona subsidios a estudiantes desarrolladores que hayan completado la escuela secundaria y sean mayores de 18 años, permitiéndoles contribuir a una Variedad de código abierto. Escribir código para proyectos de software.
4. Política de becas de Google
Este programa brinda a los estudiantes la oportunidad de trabajar en Internet y proponer políticas tecnológicas en organizaciones de interés público durante el verano.
5. Cumbre de estudiantes veteranos de Google
La Cumbre de estudiantes veteranos de Google incluye cursos de desarrollo profesional para preparar a los veteranos para el entorno laboral. Ver también: La perspectiva de Ellen Spertus sobre ¿Cómo puedo utilizar eficazmente mis dos últimos años de universidad para prepararme para un excelente trabajo de ingeniería de software en Google/FB o en una startup? *
*Nota del traductor: Esta es la respuesta de Ellen Spertus a otra pregunta en Quora (¿Cómo utilicé efectivamente mis últimos dos años de universidad para conseguir un buen puesto de ingeniero de software en Google/Facebook o en una startup? preparado) respuesta.
**Punto 7: Sugerencias para cursos de Matemáticas
(para futuros estudiantes universitarios)
Opinión personal: Cualquier intento de ignorar estas materias te hará entrar en el reino de programadores mediocres que aprenden de manera totalmente equivocada. Cuanto más preparado esté, más divertido será escribir código. Estos son varios requisitos previos para la ingeniería de software. Para la ingeniería de software, es necesario comprender la esencia de los algoritmos. La mayoría de los errores que cometen los ingenieros de software podrían evitarse si pudieran recordar cosas simples que aprendieron en la escuela.
A medida que estudies matemáticas o informática en profundidad, te darás cuenta de la importancia de las "estructuras de datos que aprendiste como estudiante universitario" y el "aprendizaje automático que aprendiste como estudiante de posgrado". Entonces, para diseñar algoritmos complejos, aquí hay una lista de cursos que debes dominar. Para los estudiantes de posgrado en la universidad, si han descuidado estos temas, les recomiendo encarecidamente que los revisen de la mejor manera posible.
Después de estudiar el esquema introductorio de su libro de texto escolar, practique las siguientes lecciones para profundizar su comprensión.
La mayoría de los estudiantes universitarios (e incluso los empleados que trabajan) subestiman estos cursos y se convierten en otro tipo de programador mediocre;
Álgebra lineal
1.?Matemáticas lineales | MIT OpenCourseWare? yo)
2. Codificación de la matriz: ¿álgebra lineal mediante una aplicación informática? (Recomendado por un colega)
Aprender esto le ayudará a comprender el modelo de regresión posterior. Un paso básico. en el aprendizaje automático. Ninguna escuela, universidad, laboratorio o institución le enseñará estos cursos de álgebra lineal. Ve y aprendelo tú mismo.
Cálculo
1.?Cálculo 1?– Ohio State University
2.?Cursos de Pre-Cálculo?–Universitat Autonoma de Barcelona
3. Cálculo para principiantes y artistas – MIT
Estadística y probabilidad
Nota: cuando vas a la universidad y a la escuela de posgrado, el programa de estudios se convierte en un algoritmo de aprendizaje automático. Para la mayoría de los estudiantes universitarios, las matemáticas los hacen sentir miserables en los primeros tres meses de los cursos de aprendizaje automático, y cuando finalmente se ponen al día, el plan de estudios avanza a áreas más complejas del aprendizaje automático, como el aprendizaje profundo, las redes neuronales y las redes neuronales. tratamiento.
# Futuros estudiantes universitarios: proyectos recomendados/patrocinados por Google
Proyecto Code-in de Google (GCI)
Este concurso es para estudiantes prospectivos de 13 a 17 años Los estudiantes universitarios describen las diversas contribuciones que hacen posible el desarrollo de software de código abierto.
Premio RISE
Google RISE es una recompensa para los socios que promueven y apoyan iniciativas de educación informática y STEM* para estudiantes de primaria y secundaria K12* en todo el mundo.
*K12, desde jardín de infantes hasta 12º grado
*STEM, Ciencia, Tecnología, Ingeniería, Matemáticas, Ciencia, Tecnología, Ingeniería, Matemáticas
Vanguardia informática LEAD-CSI
Este programa conecta a estudiantes de secundaria de diversas comunidades con la universidad y carreras en los campos STEM.
Crear con código
La programación es una nueva habilidad: conlleva el potencial de creación, innovación y civilización para transformar el mundo. Esta iniciativa tiene como objetivo inspirar a millones de niñas a experimentar la magia del código.
Simposio de Escuelas Secundarias
Este programa de un día está diseñado para brindar a estudiantes destacados de último año de secundaria valiosas habilidades comerciales antes de asistir a la universidad.
Pioneros
El Proyecto Pioneros es una red global de líderes, defensores y embajadores de la educación informática que involucran a jóvenes y educadores de todo el mundo. Estén conectados e inspirados a través de la informática.
Google Tech Expo
La Google Tech Expo es una competición global abierta a adolescentes de entre 13 y 18 años. Los estudiantes envían proyectos en línea para tener la oportunidad de ganar grandes premios.
Instituto de Verano de Ciencias de la Computación (CSSI)
CSSI es un programa de verano de tres semanas para estudiantes de primer año con destino a la universidad interesados en estudiar ciencias de la computación.
Proyecto Google Camping
30 días de actividades de bricolaje y manualidades. Maker Camp es un campamento de verano virtual gratuito abierto a todos en Google
Connected Classroom
Colabora con profesores y organizaciones educativas en Google para brindar aprendizaje experiencial a los estudiantes de K12. Oportunidades de aprendizaje.
Referencia:
/79736/