Cómo prepararme para ser ingeniero de software en Google

6 puntos importantes desde la perspectiva de un Googler.

  • Antes de proporcionarle la lista de cursos, lea los puntos 1 y 2.
  • Profesionales que trabajan a tiempo completo: lea esta respuesta “selectivamente” sobre la base de su experiencia en la industria y su conocimiento académico.
  • Estudiantes preuniversitarios: omita todo y salte al punto 7.

# Punto 1 : Vayamos a la pregunta real, es decir

¿Cómo puedo prepararme para ser un “buen” ingeniero de software?

¡Sí! El resto de la pregunta es opcional. Unirse a Google no es un tiro a la luna. Cualquier buen ingeniero de software tiene buenas posibilidades de ser parte de la cultura laboral de Google.
El problema es cómo define “Bueno”.


** Punto 2 : Ajuste de actitud.

Antes de impresionar a los reclutadores en Google, veamos si una función de ingeniería de software en Google es algo que realmente desea.

La ingeniería de software no es tan divertida como la noción popular dice al respecto. Además de las posiciones UI / UX, en general, no importa qué editor de texto use (Eclipse, Vim o Emacs). Su pantalla será Negra, Aburrida y Aburrida. Una función de ingeniería de software a tiempo completo no solo requiere la capacidad de trabajar en algoritmos complejos sino también suficiente tolerancia y paciencia para centrarse en los detalles meticulosos de un programa grande.

En Google, en general, la mayoría de las funciones de ingeniería de software se reduce a las matemáticas . No importa cuántos lenguajes conozcas o cuán genial seas con Java, C, C ++, etc.

Lo que importa son estos cuatro objetivos :

  • Tu habilidad para crear algoritmos eficientes .
  • Sus habilidades meticulosas para leer códigos escritos por otros y detectar problemas, si los hay.
  • Su curiosidad por aprender e implementar nuevas tendencias tecnológicas y adaptarse a la demanda.
  • Último pero más importante: ¿Qué construyes, cómo construyes ?

Debo señalar que alcanzar estos cuatro objetivos no es fácil. La mayoría de nosotros en Google tiene dificultades para alcanzar estos objetivos, pero lo intentamos , tú también deberías hacerlo .

Todos tienen un enfoque diferente hacia el aprendizaje. Para mí, leí los enlaces de un trabajo de investigación que encuentro en Quora (mayo / mayo no está relacionado con CS) y un trabajo de investigación en Google (registros internos) todos los días.

Cuando te unas a Google, tendrás acceso a toda la base de códigos, bases de datos, foros, trabajos de investigación y proyectos que te proporcionarán un gran apoyo para aprender cosas que no encontrarás en Wikipedia …

… Pero mientras se prepara para estar en Google, hay algunas cosas que son comunes en el proceso de aprendizaje. En el punto 5 , aprenderá más sobre esto, cómo alcanzar estos cuatro objetivos, pero antes de que haya algunos requisitos previos que deben considerarse. Entonces, vamos al siguiente paso. es decir


# Punto 3 : Guía para el desarrollo técnico en 2014: de Google.

Tener una base sólida en informática es importante para ser un ingeniero de software exitoso. La siguiente guía de Google es un camino sugerido para que los estudiantes universitarios desarrollen sus habilidades técnicas académica y no académicamente a través del aprendizaje práctico a su propio ritmo. Puede usar la siguiente guía de cursos para determinar los cursos a tomar, pero asegúrese de tomar los cursos requeridos por su especialidad o facultad para graduarse. Los recursos en línea proporcionados en esta guía no están destinados a reemplazar los cursos disponibles en su universidad. Sin embargo, pueden ayudar a complementar su aprendizaje o proporcionar una introducción al tema.
Usando esta guía:

  • Utilice esta guía a su discreción.
  • Puede haber otras cosas que quiera aprender o hacer fuera de esta guía, ¡adelante!

** Punto 4 : Recomendaciones para el aprendizaje académico.

  • Curso de Introducción al CS
    Notas: Curso de Introducción a la Informática que proporciona instrucciones sobre codificación.
    Recursos en línea:
    Udacity – introducción al curso de CS,
    Coursera – Informática 101
  • Código en al menos un lenguaje de programación orientado a objetos: C ++, Java o Python
    Recursos en línea para principiantes:
    Coursera – Aprender a programar: los fundamentos,
    Introducción del MIT a la programación en Java,
    Python Class de Google,
    Coursera – Introducción a Python,
    Libro electrónico de código abierto de Python

    Recursos en línea intermedios:
    Diseño de programas informáticos de Udacity,
    Coursera – Learn to Program: Crafting Quality Code,
    Coursera – Lenguajes de programación,
    Brown University – Introducción a los lenguajes de programación

  • Aprende otros lenguajes de programación
    Notas: Agregue a su repertorio: Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.
    Recursos en línea: w3school.com – Tutorial HTML, Aprenda a codificar
  • Prueba tu código
    Notas: aprenda a detectar errores, crear pruebas y romper su software
    Recursos en línea: Udacity – Métodos de prueba de software, Udacity – Depuración de software
  • Desarrollar razonamiento lógico y conocimiento de matemáticas discretas.
    Recursos en línea:
    MIT Matemáticas para Informática,
    Coursera – Introducción a la lógica,
    Coursera – Optimización lineal y discreta,
    Coursera – Modelos gráficos probabilísticos,
    Coursera – Teoría de juegos.
  • Desarrollar una sólida comprensión de los algoritmos y las estructuras de datos.
    Notas: Aprenda sobre los tipos de datos fundamentales (pila, colas y bolsas), algoritmos de clasificación (clasificación rápida, combinación combinada, clasificación múltiple) y estructuras de datos (árboles de búsqueda binarios, árboles rojo-negros, tablas hash), Big O.
    Recursos en línea:
    Introducción a los algoritmos del MIT,
    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
  • Desarrollar un sólido conocimiento de los sistemas operativos.
    Recursos en línea: UC Berkeley Computer Science 162
  • Aprenda recursos de inteligencia artificial en línea:
    Stanford University – Introducción a la robótica, procesamiento del lenguaje natural, aprendizaje automático
  • Aprende a construir compiladores
    Recursos en línea: Coursera – Compiladores
  • Aprende criptografía
    Recursos en línea: Coursera – Criptografía, Udacity – Criptografía aplicada
  • Aprender programación paralela
    Recursos en línea: Coursera – Programación paralela heterogénea

** Punto 5 : Recomendaciones para el aprendizaje no académico.

  • Trabajar en proyectos fuera del aula.
    Notas: Cree y mantenga un sitio web, cree su propio servidor o cree un robot.
    Recursos en línea: Lista de proyectos de Apache, Google Summer of Code, Google Developer Group
  • Trabaje en una pequeña parte de un sistema grande (base de código), lea y comprenda el código existente, rastree la documentación y depure cosas.
    Notas: Github es una excelente manera de leer el código de otras personas o contribuir a un proyecto.
    Recursos en línea: Github, Kiln
  • Trabaja en proyectos con otros programadores.
    Notas: Esto lo ayudará a mejorar su capacidad para trabajar bien en equipo y le permitirá aprender de los demás.
  • Practica tus conocimientos algorítmicos y habilidades de codificación
    Notas: Practique su conocimiento algorítmico mediante competencias de codificación como CodeJam o el Concurso internacional de programación colegiada de ACM.
    Recursos en línea: CodeJam, ACM ICPC
  • Conviértete en asistente de enseñanza
    Notas: Ayudar a enseñar a otros estudiantes ayudará a mejorar su conocimiento en el tema.
  • Prácticas en ingeniería de software.
    Notas: Asegúrese de solicitar pasantías con bastante anticipación al período en que se realizan las pasantías. En India y EE. UU., Las pasantías se realizan durante el verano, de mayo a septiembre, y las solicitudes suelen abrirse con varios meses de anticipación.
    Recursos en línea: google.com/jobs

# Punto 6 : Programas y grupos recomendados / patrocinados por Google.

Pocos cursos adicionales puede optar por suscribirse con respecto a su dominio o interés. Estos cursos y programas son un excelente lugar para aprender, pero no aumentan ni disminuyen sus posibilidades de unirse a Google: no son equivalentes a las prácticas. ( Más información de Robert Love )

  1. Curso de Google: sentido de los datos
    Este curso en línea a su propio ritmo está destinado a cualquier persona que quiera aprender más sobre cómo estructurar, visualizar y manipular datos.
  2. Curso de Google: BOLD Discovery
    Esta conferencia interactiva de dos días brindará a los estudiantes entre su primer y segundo año universitario una introducción a la cultura de Google y las posibles carreras en la empresa.
  3. Google Summer of Code
    Google Summer of Code (GSoC)
    Un programa global en línea que ofrece a los desarrolladores de estudiantes postsecundarios mayores de 18 estipendios para escribir código para varios proyectos de software de código abierto.
  4. Beca de política de Google
    Este programa ofrece a los estudiantes la oportunidad de pasar el verano trabajando en temas de políticas de Internet y tecnología en organizaciones de interés público.
  5. Cumbre de estudiantes veteranos de Google
    La Cumbre de Veteranos para Estudiantes de Google incluye un plan de estudios de desarrollo profesional orientado a la transición de los veteranos al lugar de trabajo.

Lea también: Las opiniones de Ellen Spertus sobre ¿Cómo puedo usar de manera efectiva mis últimos dos años de universidad para prepararme para un excelente trabajo de Ingeniería de Software en Google / FB o una startup?


** Punto 7 : Recomendación para cursos en matemáticas.
(Para estudiantes preuniversitarios)

Vista personal: cualquier intento de ignorar estos temas lo colocará en la categoría de programadores promedio que aprenden cosas de manera completamente incorrecta.

Mantenerse preparado mucho antes haría que la codificación fuera mucho más divertida. Hay pocos requisitos previos, para la ingeniería de software, que necesita para comprender el núcleo del algoritmo. La mayoría de los errores creados por los ingenieros de software podrían haberse evitado si hubieran recordado las cosas simples de la educación escolar.

En sus estudios posteriores en Matemáticas o Ciencias de la Computación, se dará cuenta de la importancia de la “Estructura de datos en sus días universitarios” y la importancia del “Aprendizaje automático en sus días de posgrado”. Entonces, a continuación hay una lista detallada de cursos que debe dominar para diseñar algoritmos complejos. Para los graduados universitarios, si ha ignorado estas materias, le recomiendo que las revise de la mejor manera posible.

Una vez que haya terminado con el programa introductorio de sus libros escolares, practique los siguientes cursos para una comprensión más profunda. La mayoría de los estudiantes universitarios (incluso los profesionales que trabajan) subestiman la importancia de estos cursos y terminan siendo solo otros programadores promedio:

  • Álgebra lineal
    1. Álgebra lineal | Matemática | MIT OpenCourseWare (recomendado por mí)
    2. Codificación de la matriz: álgebra lineal a través de la aplicación informática (recomendado por un compañero de trabajo)

    Aprenderlos lo ayudará a comprender el modelo de regresión en el futuro: el paso básico del aprendizaje automático. No se le enseñarán estos cursos de álgebra lineal en ninguna escuela, universidad, laboratorio de investigación o institución. Aprende por tu cuenta.

  • Cálculo
    1) Cálculo 1 – Universidad Estatal de Ohio
    2. Cursos de Precálculo – Universitat Autonoma de Barcelona
    3. Cálculo para principiantes y artistas – MIT
  • Estadística y probabilidad
    1. Estadísticas uno
    2. RNG, Colocación avanzada – stattrek.com

Nota: Para cuando llegues a la universidad y te gradúes, el plan de estudios se habrá movido hacia los algoritmos de Machine Learning. Para la mayoría de los estudiantes universitarios, las matemáticas les hacen pasar un mal momento durante los primeros 3 meses de los cursos de Aprendizaje Automático y cuando se ponen al día, el programa de estudios se traslada a áreas más sofisticadas de ML, como Aprendizaje profundo, Redes neuronales y NNSP.

# Preuniversitario: Programas recomendados / patrocinados por Google.

  • Google Code-in (GCI)
    Un concurso que presenta a los estudiantes preuniversitarios, de entre 13 y 17 años, a los muchos tipos de contribuciones que hacen posible el desarrollo de software de código abierto.
  • Premios RISE
    Google RISE es un programa de asociación y premios diseñado para promover y apoyar iniciativas de educación STEM e Informática para estudiantes de K-12 / Primaria y Secundaria / Clase 10 y 12 en todo el mundo.
  • Instituto de Informática LEAD (LEAD-CSI)
    Este programa expone a estudiantes de secundaria y preparatoria de diversas comunidades a universidades y carreras en los campos de Ciencia, Tecnología, Ingeniería y Matemáticas (STEM).
  • Hecho con código
    La codificación es la nueva alfabetización: tiene el potencial de crear, innovar y, literalmente, cambiar el mundo. Esta iniciativa está diseñada para inspirar a millones de niñas a experimentar el poder del código.
  • Simposio de secundaria
    Este es un programa de un día diseñado para proporcionar a los estudiantes de último año de secundaria de alto rendimiento habilidades empresariales valiosas antes de comenzar la universidad.
  • Trailblazer
    Trailblazer es una red global de líderes, defensores y embajadores de la educación en informática que se encargará de capacitar a los jóvenes y educadores de todo el mundo para que se conecten e inspiren con la informática.
  • Feria de Ciencia de Google
    Google Science Fair es una competencia global abierta a 13-18 años. Los estudiantes envían un proyecto en línea para tener la oportunidad de ganar increíbles premios.
  • Computer Science Summer Institute (CSSI)
    CSSI es un programa de verano de 3 semanas para estudiantes universitarios de primer año (estudiantes de último año de secundaria) que estén interesados ​​en estudiar ciencias de la computación.
  • Campamento de creadores en Google+
    30 días de hágalo usted mismo y haciendo. Maker Camp es un campamento de verano virtual gratuito en Google+, abierto a todos
    Maker Camp 2013: ¡Recargue su verano!
  • Aulas conectadas
    Colabora con maestros y organizaciones educativas para ofrecer oportunidades de aprendizaje experimental para estudiantes de K-12 en Google+.

Campos marcados con asterisco.
# Opcional.
** Obligatorio.

Próximamente en esta respuesta:

  • Estudiantes de posgrado (con especialización en cualquier campo relacionado con Física, Matemáticas, CS): la respuesta se actualizará este viernes.
  • Estudiantes de doctorado (Investigación en el campo de Física, C-Neurociencia, Matemáticas, CS): la respuesta se actualizará este viernes.

Se trata casi de las habilidades que traes a la mesa. Enfóquese primero en desarrollar sus habilidades, luego muéstrelas de la mejor manera posible y, finalmente, deje que las empresas se comuniquen con usted. Las empresas que llegan a usted deberían ser el paso final.

  1. Desarrollo de habilidades: si puede mostrar sus habilidades más allá de su título, sus posibilidades aumentarán aún más. Los siguientes son algunos ejemplos de formas de hacerlo.
  1. Cree algunas aplicaciones / proyectos útiles y muéstrelos en GitHub. Participa en hackatones. Haga un trabajo increíble en un nicho particular, como CNN, sistemas distribuidos, kernel, etc.
  2. Contribuir a código abierto.
  3. Estructuras de datos maestros y algoritmos. En cualquier caso, debe aclarar sus entrevistas, lo que hace hincapié en esto. Recursos útiles: descifrar la entrevista de codificación, InterviewBit, CareerCup, Topcoder, Codeforces, Codechef, etc.
  4. Aprenda tecnologías, software, idiomas utilizados o creados por Google, como Go, AngularJS, Firebase, BigTable, etc.
  5. Participe en concursos organizados o patrocinados por Google, como Kickstart, CodeJam, SRM patrocinados en TopCoder u otros sitios, Google CTF, GSoC, etc.
  6. Solicite programas relevantes de Google en Google for Education. Google for Education: una solución creada para profesores y estudiantes, Google for Education: Programas, Estudiantes: carreras profesionales de Google, Google for Education: Becas para estudiantes.
  7. Siempre puede consultar la guía técnica para estudiantes de Google. Estudiantes – Guía para el desarrollo técnico – Google Careers
  8. Encuentra errores en diferentes softwares o reclama una recompensa por errores.
  9. Blog sobre tu trabajo, lecturas y proyectos.
  • La presentación también es inmensamente importante cuando se postula para compañías de ensueño como Google, donde el listón y la competencia son demasiado altos. Google mismo presenta una guía aquí Estudiantes: postulando a Google – Google Careers. Realice una búsqueda rápida en Google y encontrará muchas formas de mejorar su currículum. LMGTFY
  • Solicitud : Otra acción útil debería ser contactar a los empleados en Google para obtener referencias o reclutadores que busquen candidatos exactamente como usted. Si tiene algunas referencias, quién puede garantizar su solicitud, sus aplicaciones se vuelven más creíbles. Si encuentra un reclutador, aún mejor. Respuesta detallada: Respuesta del usuario de Quora a ¿Cómo solicito pasantías en Google si soy un estudiante universitario en India?
  • Contestaré teniendo en cuenta el punto de vista de un CS más novedoso que busca un trabajo en una empresa de alta tecnología. En caso de que se enfrente a las entrevistas pronto, siéntase libre de saltar hacia el final de la respuesta.

    La mayoría de mis consejos se basan en las entrevistas que he enfrentado (específicamente Microsoft, Google y Uber ). El plan provisto aquí me ayudó a aclarar sus entrevistas, espero que también les sea útil. Podemos dividir la etapa de preparación en aproximadamente cuatro etapas.

    Construyendo los cimientos:

    • El primer paso es familiarizarse con un lenguaje de programación. Recomendaría Python debido a su flexibilidad y compatibilidad con la biblioteca, lo que hace que sea mucho más fácil comenzar con diferentes proyectos. Aquí hay algunos enlaces para comenzar,
    • Clase Python de Google
    • Coursera: Introducción a la programación en Python
  • El siguiente paso es enfocarse en sus fundamentos teóricos. Esté muy atento en los cursos básicos de CS que se imparten en su universidad. En caso de que no tenga acceso a sus cursos universitarios, pruebe estas alternativas igualmente beneficiosas.
    • Udacity: introducción a la informática
    • Coursera: Algoritmos – Parte 1
    • MIT: Introducción a los algoritmos
  • Preste especial atención a las estructuras de datos y los algoritmos estándar y concéntrese en los paradigmas algorítmicos estándar, incluidos los algoritmos codiciosos, la programación dinámica, dividir y conquistar , etc.
  • Explore múltiples campos:

    Después de enfocarse en sus fundamentos, ahora debería comenzar a sumergirse en algunos temas centrales. Esta etapa implicaría ser parte de cursos avanzados y realizar varios proyectos.

    • Comience a explorar diferentes campos, a continuación se ofrecen algunos cursos obligatorios para un graduado de CS.
    • Coursera: Aprendizaje automático – Universidad de Stanford
    • Udacity: Introducción a los sistemas operativos
    • Stanford Online: compiladores
  • Mientras tanto, siga trabajando en proyectos paralelos, ya que le brindan experiencia que los cursos normales no pueden proporcionar. Si le faltan ideas para proyectos, puede consultar mi respuesta sobre posibles proyectos paralelos.
  • Desarrollando su perfil:

    Muchos estudiantes están confundidos con respecto a esta etapa debido a su vaguedad inherente. ¿Deberíamos centrarnos en la programación competitiva o en proyectos paralelos? He cubierto esto en otra respuesta, pero la conclusión es tener resultados concretos. Resultados que demuestran sus habilidades y competencia para el trabajo. Ellos pueden ser,

    • Un controlador GitHub activo con repositorios de calidad.
    • Buen desempeño en concursos de programación competitiva
    • Diversos proyectos que demuestran su destreza
    • Documentos de investigación : su importancia en las entrevistas tecnológicas es discutible, pero seguramente demuestran su capacidad para desempeñarse en proyectos a largo plazo.

    Preparación para las entrevistas:

    Has fortalecido tus cimientos, ahora es el momento de desafiar la parte más crítica. Esta etapa se puede dividir en lo siguiente,

    • Kick Off: esta es la etapa inicial donde investigas principalmente sobre el proceso de la entrevista y te familiarizas con él. La revisión de estructuras de datos y algoritmos debería ser su enfoque principal en este momento. Unos pocos recursos útiles,
    • Sitio oficial de Google , Blogs
    • Libros de ayuda de la entrevista (por ejemplo, descifrar la entrevista de codificación )
  • Práctica: Aquí es donde ocurre la preparación real. Debe elegir un idioma y comenzar a codificarlo. Este es un buen momento para comenzar la codificación de pizarra. También debe comenzar a practicar preguntas específicas de la entrevista ahora. Aquí hay algunos recursos para ayudarlo a practicar.
    • EntrevistaBit
    • LeetCode
    • GeekForGeeks
  • Consolidación: Estamos en las etapas finales antes de las entrevistas reales, ahora es el momento de consolidar lo que sabemos. Una cosa importante en las últimas semanas sería practicar la resolución de preguntas ‘en voz alta’. Hacer entrevistas simuladas también puede ayudarlo a desempeñarse mucho mejor en el negocio real.
  • La duración de esta etapa puede variar de meses a semanas . Originalmente había construido lo anterior para mis entrevistas en Google (Detalles extensos en otra respuesta).

  • Si ha completado todos los pasos anteriores, todo lo que queda es sentarse y disfrutar del increíble hotel reservado para sus entrevistas en el lugar. ¡Todo lo mejor!

    No te prepares para convertirte en ingeniero de software en Google.

    En cambio, prepárate para ser un gran desarrollador de software en 2017 . Google lo encontrará en el camino y le pedirá un aventón.

    Aquí hay un curso de acción simple de 7 pasos que tendrá no solo las puertas de Google abiertas para usted, sino también en cualquier otro lugar.

    1. Aprende a codificar

    Los ingenieros de software de Google escriben software, por lo que se deduce que si quieres ser uno, deberías poder codificar y hacerlo realmente bien.

    Dependiendo de su preferencia, puede comprar algunos de la serie de libros “OReilly Teach Yourself (inserte su idioma aquí) en 24 horas” y comenzar a aprender.

    Alternativamente, puede saltar a un curso en línea en plataformas como Udemy y comenzar.

    2. red

    Puede ser un buen desarrollador encerrándose en su cubículo y codificando su camino hacia el éxito.

    Pero si realmente quieres ser un gran desarrollador, debes atraer a otras personas para que te ayuden a que esto suceda.

    Son las conexiones que haces con otros desarrolladores senior que te abrirán más puertas.

    3. Construir una cartera

    Nadie quiere contratar a un ingeniero mediocre.

    Entonces, para poder tener la oportunidad, incluso para una entrevista en compañías como Google, necesita tener una buena muestra de credibilidad de que puede construir software.

    Y la mejor credibilidad es demostrar que lo ha hecho antes.

    Hay varias formas de crear una cartera para mostrar sus habilidades de codificación

    1. Asuma proyectos independientes y comience desde allí
    2. Comience su propio proyecto de software para mascotas y ponga todo en él
    3. Contribuya a proyectos de código abierto que le darán exposición

    4. Obtenga recomendaciones

    Bueno, alguien necesita saber lo que estás haciendo.

    Sin alguien que te diga una palabra fuerte, incluso si eres un programador de rockstar, algunas puertas permanecerán cerradas para ti. Así que realmente necesitas recomendaciones fuertes o es un voto de desconfianza.

    Cuando comencé mi carrera de desarrollo de software, fue tres veces más fácil para mí obtener nuevos clientes cuando mostraba recomendaciones de clientes anteriores que cuando no lo hacía.

    5. Solicite los trabajos.

    Si ya tienes

    1. Aprendí a codificar
    2. Conexiones hechas
    3. Construye algunos proyectos fuertes
    4. Recomendaciones recopiladas

    ¡entonces dale un pulgar hacia arriba!

    Solo los grandes desarrolladores lo hacen en este orden.

    Si en este momento todavía tiene ganas de darle una oportunidad a Google, es el momento de comenzar a verificar dentro de sus conexiones si tiene alguien directamente vinculado a Google.

    Si hace todo esto, a menudo otras compañías se acercarán con ofertas, pero en el caso de que no suceda, salga y solicite los puestos de trabajo.

    6. Descifra la entrevista técnica

    La mayoría de los desarrolladores se asustan en este punto debido a la supuesta intimidación que anticipan.

    No siempre es tan malo, especialmente si tienes en cuenta estos pocos consejos

    • Práctica
    • Duerme un poco
    • Hacer preguntas
    • Toma tu tiempo
    • No apunte a las soluciones más eficientes.
    • Diviértete y aprende

    7. Realizar

    Bueno, el último paso para ser un gran desarrollador es realizar una vez que tenga la oportunidad.

    ¡No hay exhibiciones aquí porque su código se enviará mañana!

    Así es como ruedas a partir de ahora.

    ¡Feliz codificación!

    Estas son las habilidades que Google quiere que domine su talento tecnológico, junto con recursos en línea para comenzar:
    1. Dominar los cimientos. Debe poder completar una introducción al curso de CS, como los de Udacity o Coursera.
    2. Aprenda a codificar en al menos un lenguaje de programación orientado a objetos. Como C ++, Java o Python. Consulte a MIT o Udacity.
    3. Aprende otros lenguajes de programación. Agregue Java Script, CSS, Ruby y HTML a su conjunto de habilidades. W3school y CodeAcademy están ahí para ayudar.
    4. Prueba tu código. Porque Google quiere que puedas “detectar errores, crear pruebas y romper tu software”. Udacity, una vez más.
    5. Tener experiencia en matemática abstracta. Al igual que el razonamiento lógico y las matemáticas discretas, en las que se basa mucha informática. MIT puede ayudarlo con las matemáticas para la informática.
    6. Comprender algoritmos y estructuras de datos. Google quiere que aprenda sobre los tipos de datos fundamentales, como pilas, colas y bolsas, así como que comprenda algoritmos de clasificación como clasificación rápida, combinación combinada y clasificación múltiple. MIT proporciona los recursos en línea recomendados, y el libro “The Algorithm Design Manual” también es muy útil.
    7. Conozca los sistemas operativos. Porque estarán donde haces gran parte de tu trabajo. La Universidad de California, Berkeley, proporciona una cartilla.
    8. Familiarícese con la inteligencia artificial. Google ama a los robots. Stanford tiene el conocimiento.
    9. Aprende a construir compiladores. Stanford dice que cuando haces eso, “aprenderás cómo un programa escrito en un lenguaje de alto nivel diseñado para humanos se traduce sistemáticamente en un programa escrito en ensamblaje de bajo nivel más adecuado para máquinas”. Dirígete a Coursera para el aprendizaje.
    10. Aprende criptografía. Porque la ciberseguridad es crucial. Coursera yUdacity ofrecen cursos.
    11. Aprende programación paralela. Porque poder realizar toneladas de cálculos al mismo tiempo es súper poderoso. La Universidad de Illinois puede ayudarlo.
    Pero Google no solo mira las habilidades en sus candidatos seleccionados
    Fuente: -http: //www.businessinsider.in/11…

    El éxito es un plato que contiene muchos ingredientes pero tiene una receta simple. Aún así, la mayoría de nosotros nunca preparamos bien ese plato, tal vez porque nos gusta complicar las cosas. Aunque hay muchas cosas que se requieren para ser un ingeniero exitoso, algunos de los puntos principales que he mencionado a continuación:

    1. La curiosidad.

    Esto es lo que define a un buen ingeniero. Recuerde siempre que puede saber muchas cosas, pero nunca lo sabrá todo. Así que sigue haciendo preguntas. Solo sigue aprendiendo cosas nuevas.

    2. Capacidad para trabajar solo y en grupo.

    Este es un rasgo importante. La ingeniería tiene una buena parte del tiempo trabajando solo, ya sea en una estación CAD, etc. Un ingeniero tiene que sentirse cómodo con esto.

    Sin embargo, el ingeniero también debe poder trabajar en grupo. Esos dibujos serán presentados a gerentes y colegas. Intrínsecamente es de confrontación. El ingeniero debe ser capaz de comprender sus posiciones y alimentarse de ellas, sin sentirse atacado.

    3. Una comprensión de cuándo ser práctico.

    No todas las soluciones requieren la reinvención de la rueda. Los ingenieros no son artistas. Son contratados para resolver problemas y crear productos. Si un producto se retrasa debido a un riesgo irrazonable, la carrera de esa persona se verá truncada. La sabiduría para saber cuándo “ir a por ello” y cuándo “ir a lo seguro” no puede ser subestimada.

    4. Capacidad de soñar.

    Le he dicho a muchas personas que soñé con los diseños que hice. Se presentó un problema y muchas veces la mejor manera de resolverlo era irme a dormir.

    Ahora echemos un vistazo a las habilidades técnicas requeridas, que podrían conseguirle un trabajo en Google. Afortunadamente, hay una muy buena respuesta ya escrita por un ingeniero de Google: Gaurav Jha. Así que solo copiaré y pegaré su respuesta a continuación, ya que no creo que pueda presentarla de una mejor manera.

    Fuente: respuesta de Gaurav Jha a ¿Cómo puedo prepararme para ser ingeniero de software en Google?

    6 puntos importantes desde la perspectiva de un Googler.

    • Antes de proporcionarle la lista de cursos, lea los puntos 1 y 2.
    • Profesionales que trabajan a tiempo completo: lea esta respuesta “selectivamente” sobre la base de su experiencia en la industria y su conocimiento académico.
    • Estudiantes preuniversitarios: omita todo y salte al punto 7.

    # Punto 1 : Vayamos a la pregunta real, es decir

    ¿Cómo puedo prepararme para ser un “buen” ingeniero de software?

    ¡Sí! El resto de la pregunta es opcional. Unirse a Google no es un tiro a la luna. Cualquier buen ingeniero de software tiene buenas posibilidades de ser parte de la cultura laboral de Google.
    El problema es cómo define “Bueno”.


    ** Punto 2 : Ajuste de actitud.

    Antes de impresionar a los reclutadores en Google, veamos si una función de ingeniería de software en Google es algo que realmente desea.

    La ingeniería de software no es tan divertida como la noción popular dice al respecto. Además de las posiciones UI / UX, en general, no importa qué editor de texto use (Eclipse, Vim o Emacs). Su pantalla será Negra, Aburrida y Aburrida. Una función de ingeniería de software a tiempo completo no solo requiere la capacidad de trabajar en algoritmos complejos sino también suficiente tolerancia y paciencia para centrarse en los detalles meticulosos de un programa grande.

    En Google, en general, la mayoría de las funciones de ingeniería de software se reduce a las matemáticas . No importa cuántos lenguajes conozcas o cuán genial seas con Java, C, C ++, etc.

    Lo que importa son estos cuatro objetivos :

    • Tu habilidad para crear algoritmos eficientes .
    • Sus habilidades meticulosas para leer códigos escritos por otros y detectar problemas, si los hay.
    • Su curiosidad por aprender e implementar nuevas tendencias tecnológicas y adaptarse a la demanda.
    • Último pero más importante: ¿Qué construyes, cómo construyes ?

    Debo señalar que alcanzar estos cuatro objetivos no es fácil. La mayoría de nosotros en Google tiene dificultades para alcanzar estos objetivos, pero lo intentamos , tú también deberías hacerlo .

    Todos tienen un enfoque diferente hacia el aprendizaje. Para mí, leí los enlaces de un trabajo de investigación que encuentro en Quora (mayo / mayo no está relacionado con CS) y un trabajo de investigación en Google (registros internos) todos los días.

    Cuando te unas a Google, tendrás acceso a toda la base de códigos, bases de datos, foros, trabajos de investigación y proyectos que te proporcionarán un gran apoyo para aprender cosas que no encontrarás en Wikipedia …

    … Pero mientras se prepara para estar en Google, hay algunas cosas que son comunes en el proceso de aprendizaje. En el punto 5 , aprenderá más sobre esto, cómo alcanzar estos cuatro objetivos, pero antes de que haya algunos requisitos previos que deben considerarse. Entonces, vamos al siguiente paso. es decir


    # Punto 3 : Guía para el desarrollo técnico en 2014: de Google.

    Tener una base sólida en informática es importante para ser un ingeniero de software exitoso. La siguiente guía de Google es un camino sugerido para que los estudiantes universitarios desarrollen sus habilidades técnicas académica y no académicamente a través del aprendizaje práctico a su propio ritmo. Puede usar la siguiente guía de cursos para determinar los cursos a tomar, pero asegúrese de tomar los cursos requeridos por su especialidad o facultad para graduarse. Los recursos en línea proporcionados en esta guía no están destinados a reemplazar los cursos disponibles en su universidad. Sin embargo, pueden ayudar a complementar su aprendizaje o proporcionar una introducción al tema.
    Usando esta guía:

    • Utilice esta guía a su discreción.
    • Puede haber otras cosas que quiera aprender o hacer fuera de esta guía, ¡adelante!

    ** Punto 4 : Recomendaciones para el aprendizaje académico.

    • Curso de Introducción al CS
      Notas: Curso de Introducción a la Informática que proporciona instrucciones sobre codificación.
      Recursos en línea:
      Udacity – introducción al curso de CS,
      Coursera – Informática 101
    • Código en al menos un lenguaje de programación orientado a objetos: C ++, Java o Python
      Recursos en línea para principiantes:
      Coursera – Aprender a programar: los fundamentos,
      Introducción del MIT a la programación en Java,
      Python Class de Google,
      Coursera – Introducción a Python,
      Libro electrónico de código abierto de Python

      Recursos en línea intermedios:
      Diseño de programas informáticos de Udacity,
      Coursera – Learn to Program: Crafting Quality Code,
      Coursera – Lenguajes de programación,
      Brown University – Introducción a los lenguajes de programación

    • Aprende otros lenguajes de programación
      Notas: Agregue a su repertorio: Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.
      Recursos en línea: w3school.com – Tutorial HTML, Aprenda a codificar
    • Prueba tu código
      Notas: aprenda a detectar errores, crear pruebas y romper su software
      Recursos en línea: Udacity – Métodos de prueba de software, Udacity – Depuración de software
    • Desarrollar razonamiento lógico y conocimiento de matemáticas discretas.
      Recursos en línea:
      MIT Matemáticas para Informática,
      Coursera – Introducción a la lógica,
      Coursera – Optimización lineal y discreta,
      Coursera – Modelos gráficos probabilísticos,
      Coursera – Teoría de juegos.
    • Desarrollar una sólida comprensión de los algoritmos y las estructuras de datos.
      Notas: Aprenda sobre los tipos de datos fundamentales (pila, colas y bolsas), algoritmos de clasificación (clasificación rápida, combinación combinada, clasificación múltiple) y estructuras de datos (árboles de búsqueda binarios, árboles rojo-negros, tablas hash), Big O.
      Recursos en línea:
      Introducción a los algoritmos del MIT,
      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
    • Desarrollar un sólido conocimiento de los sistemas operativos.
      Recursos en línea: UC Berkeley Computer Science 162
    • Aprenda recursos de inteligencia artificial en línea:
      Stanford University – Introducción a la robótica, procesamiento del lenguaje natural, aprendizaje automático
    • Aprende a construir compiladores
      Recursos en línea: Coursera – Compiladores
    • Aprende criptografía
      Recursos en línea: Coursera – Criptografía, Udacity – Criptografía aplicada
    • Aprender programación paralela
      Recursos en línea: Coursera – Programación paralela heterogénea

    ** Punto 5 : Recomendaciones para el aprendizaje no académico.

    • Trabajar en proyectos fuera del aula.
      Notas: Cree y mantenga un sitio web, cree su propio servidor o cree un robot.
      Recursos en línea: Lista de proyectos de Apache, Google Summer of Code, Google Developer Group
    • Trabaje en una pequeña parte de un sistema grande (base de código), lea y comprenda el código existente, rastree la documentación y depure cosas.
      Notas: Github es una excelente manera de leer el código de otras personas o contribuir a un proyecto.
      Recursos en línea: Github, Kiln
    • Trabaja en proyectos con otros programadores.
      Notas: Esto lo ayudará a mejorar su capacidad para trabajar bien en equipo y le permitirá aprender de los demás.
    • Practica tus conocimientos algorítmicos y habilidades de codificación
      Notas: Practique su conocimiento algorítmico mediante competencias de codificación como CodeJam o el Concurso internacional de programación colegiada de ACM.
      Recursos en línea: CodeJam, ACM ICPC
    • Conviértete en asistente de enseñanza
      Notas: Ayudar a enseñar a otros estudiantes ayudará a mejorar su conocimiento en el tema.
    • Prácticas en ingeniería de software.
      Notas: Asegúrese de solicitar pasantías con bastante anticipación al período en que se realizan las pasantías. En India y EE. UU., Las pasantías se realizan durante el verano, de mayo a septiembre, y las solicitudes suelen abrirse con varios meses de anticipación.
      Recursos en línea: google.com/jobs

    # Punto 6 : Programas y grupos recomendados / patrocinados por Google.

    Pocos cursos adicionales puede optar por suscribirse con respecto a su dominio o interés. Estos cursos y programas son un excelente lugar para aprender, pero no aumentan ni disminuyen sus posibilidades de unirse a Google: no son equivalentes a las prácticas. ( Más información de Robert Love )

    1. Curso de Google: sentido de los datos
      Este curso en línea a su propio ritmo está destinado a cualquier persona que quiera aprender más sobre cómo estructurar, visualizar y manipular datos.
    2. Curso de Google: BOLD Discovery
      Esta conferencia interactiva de dos días brindará a los estudiantes entre su primer y segundo año universitario una introducción a la cultura de Google y las posibles carreras en la empresa.
    3. Google Summer of Code
      Google Summer of Code (GSoC)
      Un programa global en línea que ofrece a los desarrolladores de estudiantes postsecundarios mayores de 18 estipendios para escribir código para varios proyectos de software de código abierto.
    4. Beca de política de Google
      Este programa ofrece a los estudiantes la oportunidad de pasar el verano trabajando en temas de políticas de Internet y tecnología en organizaciones de interés público.
    5. Cumbre de estudiantes veteranos de Google
      La Cumbre de Veteranos para Estudiantes de Google incluye un plan de estudios de desarrollo profesional orientado a la transición de los veteranos al lugar de trabajo.

    Lea también: Las opiniones de Ellen Spertus sobre ¿Cómo puedo usar de manera efectiva mis últimos dos años de universidad para prepararme para un excelente trabajo de Ingeniería de Software en Google / FB o una startup?


    ** Punto 7 : Recomendación para cursos en matemáticas.
    (Para estudiantes preuniversitarios)

    Vista personal: cualquier intento de ignorar estos temas lo colocará en la categoría de programadores promedio que aprenden cosas de manera completamente incorrecta.

    Mantenerse preparado mucho antes haría que la codificación fuera mucho más divertida. Hay pocos requisitos previos, para la ingeniería de software, que necesita para comprender el núcleo del algoritmo. La mayoría de los errores creados por los ingenieros de software podrían haberse evitado si hubieran recordado las cosas simples de la educación escolar.

    En sus estudios posteriores en Matemáticas o Ciencias de la Computación, se dará cuenta de la importancia de la “Estructura de datos en sus días universitarios” y la importancia del “Aprendizaje automático en sus días de posgrado”. Entonces, a continuación hay una lista detallada de cursos que debe dominar para diseñar algoritmos complejos. Para los graduados universitarios, si ha ignorado estas materias, le recomiendo que las revise de la mejor manera posible.

    Una vez que haya terminado con el programa introductorio de sus libros escolares, practique los siguientes cursos para una comprensión más profunda. La mayoría de los estudiantes universitarios (incluso los profesionales que trabajan) subestiman la importancia de estos cursos y terminan siendo solo otros programadores promedio:

    • Álgebra lineal
      1. Álgebra lineal | Matemática | MIT OpenCourseWare (recomendado por mí)
      2. Codificación de la matriz: álgebra lineal a través de la aplicación informática (recomendado por un compañero de trabajo)

      Aprenderlos lo ayudará a comprender el modelo de regresión en el futuro: el paso básico del aprendizaje automático. No se le enseñarán estos cursos de álgebra lineal en ninguna escuela, universidad, laboratorio de investigación o institución. Aprende por tu cuenta.

    • Cálculo
      1) Cálculo 1 – Universidad Estatal de Ohio
      2. Cursos de Precálculo – Universitat Autonoma de Barcelona
      3. Cálculo para principiantes y artistas – MIT
    • Estadística y probabilidad
      1. Estadísticas uno
      2. RNG, Colocación avanzada – stattrek.com

    Nota: Para cuando llegues a la universidad y te gradúes, el plan de estudios se habrá movido hacia los algoritmos de Machine Learning. Para la mayoría de los estudiantes universitarios, las matemáticas les hacen pasar un mal momento durante los primeros 3 meses de los cursos de Aprendizaje Automático y cuando se ponen al día, el programa de estudios se traslada a áreas más sofisticadas de ML, como Aprendizaje profundo, Redes neuronales y NNSP.

    # Preuniversitario: Programas recomendados / patrocinados por Google.

    • Google Code-in (GCI)
      Un concurso que presenta a los estudiantes preuniversitarios, de entre 13 y 17 años, a los muchos tipos de contribuciones que hacen posible el desarrollo de software de código abierto.
    • Premios RISE
      Google RISE es un programa de asociación y premios diseñado para promover y apoyar iniciativas de educación STEM e Informática para estudiantes de K-12 / Primaria y Secundaria / Clase 10 y 12 en todo el mundo.
    • Instituto de Informática LEAD (LEAD-CSI)
      Este programa expone a estudiantes de secundaria y preparatoria de diversas comunidades a universidades y carreras en los campos de Ciencia, Tecnología, Ingeniería y Matemáticas (STEM).
    • Hecho con código
      La codificación es la nueva alfabetización: tiene el potencial de crear, innovar y, literalmente, cambiar el mundo. Esta iniciativa está diseñada para inspirar a millones de niñas a experimentar el poder del código.
    • Simposio de secundaria
      Este es un programa de un día diseñado para proporcionar a los estudiantes de último año de secundaria de alto rendimiento habilidades empresariales valiosas antes de comenzar la universidad.
    • Trailblazer
      Trailblazer es una red global de líderes, defensores y embajadores de la educación en informática que se encargará de capacitar a los jóvenes y educadores de todo el mundo para que se conecten e inspiren con la informática.
    • Feria de Ciencia de Google
      Google Science Fair es una competencia global abierta a 13-18 años. Los estudiantes envían un proyecto en línea para tener la oportunidad de ganar increíbles premios.
    • Computer Science Summer Institute (CSSI)
      CSSI es un programa de verano de 3 semanas para estudiantes universitarios de primer año (estudiantes de último año de secundaria) que estén interesados ​​en estudiar ciencias de la computación.
    • Campamento de creadores en Google+
      30 días de hágalo usted mismo y haciendo. Maker Camp es un campamento de verano virtual gratuito en Google+, abierto a todos
      Maker Camp 2013: ¡Recargue su verano!
    • Aulas conectadas
      Colabora con maestros y organizaciones educativas para ofrecer oportunidades de aprendizaje experimental para estudiantes de K-12 en Google+.

    Campos marcados con asterisco.
    # Opcional.
    ** Obligatorio.

    Todos tienen la percepción de que uno debe ser tan bueno para ingresar a Google que debe ser mejor que el resto del mundo. Bueno, eso sería increíblemente tonto si fuera cierto, ¿no? De acuerdo, a Google le gusta tener la crema de la cosecha, pero no se equivoque, eso no tiene mucho que ver con los académicos (tal vez un poco, pero sobre todo no). Todo lo que tiene que ver es con un conjunto bastante específico de cosas, en las que claramente te estaré educando.

    De vez en cuando, hay excepciones como estas que suceden cuando las personas tienen mucha suerte. Pero no se engañe, probablemente hay más de 3 mil millones de personas que usan Google, y seamos sinceros, esta persona es la única que se ha informado para hacer las cosas, pero incluso el afortunado tuvo que pasar por el el resto del proceso de la entrevista de todos modos, así que no nos hagamos ilusiones de todos modos y centrémonos en los métodos más convencionales, que tienen mucho menos que ver con la Suerte (a menos que tenga una poción de Felix Felicis con usted)

    Entonces, Laszlo Bock , quien fue el jefe de Operaciones y Administración de Personas en Google durante la última década, (quien recientemente se retiró para asumir un papel de asesor) ha tenido voz en cada una de las personas que se agregan a su equipo. Tanto que Google estaba en la lista de los empleadores más favorables para cada uno de los últimos 10 años, y encabezó la lista 7 de esas 10 veces.

    No es ningún secreto cuáles son las cuatro cosas que él había codificado como las necesidades de una persona para ser elegible para convertirse en un noogler (una nueva contratación de Google, sí, los nombres son tales).

    Pero sí, Laszlo Bock ha hablado bastante sobre las 4 cualidades que busca en cualquier persona antes de hacer una posible contratación. En una entrevista reciente después del lanzamiento de su libro, “Reglas de trabajo”, donde establece las prácticas más fundamentales seguidas por su equipo al hacer una nueva contratación

    “Cuatro cosas:

    1. Capacidad cognitiva general : no solo cruda (inteligencia) sino la capacidad de absorber información.

    2. Liderazgo emergente : la idea es que cuando ve un problema, interviene e intenta abordarlo. Luego sales cuando ya no eres necesario. Esa disposición a renunciar al poder es realmente importante.

    3. Ajuste cultural – lo llamamos ‘Googleyness’ – pero se reduce a humildad intelectual. No tienes que ser cálido o confuso. Solo tienes que ser alguien que, cuando los hechos muestran que estás equivocado, puede decir eso.

    4. Experiencia en el trabajo para el que te vamos a contratar.

    Y no se equivoque, está en el orden de prioridad, y sí, como puede ver, la experiencia en el dominio es lo último. Es una cuestión de qué tan bien encajas y qué tan buenas son tus otras habilidades, porque las personas con habilidades se pueden encontrar fácilmente, las correctas son las que pueden encajar sin problemas y trabajar sin esfuerzo.

    Google, al ser Google, tiene una página que explica el procedimiento para solicitar un puesto en su empresa, pero tampoco es una guía de “Cómo”. Ese es solo el procedimiento completo para solicitar un trabajo. Probablemente deberías continuar y echarle un vistazo, solo para que todo salga bien.

    Así que ahora veamos la parte difícil (y esto es estrictamente solo para desarrolladores).

    1. Debe ser exhaustivo con su conocimiento de algoritmos. No es broma, no importa lo que digan, las estructuras de datos son la parte más importante de la informática y ninguna compañía lo toma a la ligera. Asegúrese de enfrentar una gran cantidad de preguntas al respecto, y esto se produce antes y durante el proceso de la entrevista. Así que asegúrese de que todos los algoritmos (los más importantes) y las estructuras de datos sean perfectos en teoría.
    2. Ahora, eso no significa que vaya con toda la teoría y ninguna aplicación, claro, algunas estructuras de datos como los árboles son largas, pero cuando se le pide que programe, no continúa y define toda la estructura, sino que usa lo que se supone que debe hacer. durante una implementación práctica, por ej. de modo que si necesita usar un montón, en realidad no comenzará a codificar uno durante una entrevista (solo use un mapa o una cola de prioridad). También necesita saber cómo implementar una lista vinculada, BST y un trie en 5 minutos, lo que es mucho más fácil de lo que parece (solo cree una clase de nodo y una función de inserción y para fines de entrevista, está bien. )
    3. Desarrollar su perfil utilizando varios sitios de programación competitivos o sitios que lo prueban en sus habilidades laborales (¿recuerda el punto 4 de las 4 cosas fundamentales de Bock?) Intente mantenerse involucrado en varias plataformas, portales como Hackerrank , HackerEarth y la nueva competencia para el reclutamiento convencional, que es Xobin . Los primeros dos le ponen a prueba sus habilidades competitivas de programación, y Xobin va un paso más allá y le pone a prueba su conocimiento de dominio y la aplicación práctica del mismo, con varios métodos de prueba no convencionales.
    4. Mantenga su interés en un idioma principal. Sí, es bueno conocer muchas tecnologías, pero debes ser dueño de una antes de ser un experto en todos los oficios. Es el caso de tener el pastel y comerlo. Claro, tener un conocimiento práctico de muchas cosas suena emocionante y puede hacerte sonar genial, pero cualquier compañía no requiere que sepas todas esas cosas a la vez. Por lo tanto, se prefiere tener el conocimiento al máximo en un idioma al menos, con suficiente conocimiento práctico en otros.

    En general, algunas personas podrían pensar que solo lo extraordinario logrará superar todas esas rondas y procesos. Pero tenga esto en cuenta, mientras que el mundo entero está tratando de demostrar que son extraordinarios, ser ordinario es lo mejor que puede pedir.

    Como lo afirman muchos reclutadores en Google, el hecho de que no haya llegado a Google no significa que no esté en condiciones de trabajar en Google. Es solo que hay muchas otras cosas en juego, y principalmente incluso la suerte juega un papel en estas cosas. Así que recuerda, si no es Google, siempre hay Facebook, Soul-Cycle y varias otras compañías igualmente interesantes para trabajar.

    Como dijo Moody, “Vigilancia constante”, y la perseverancia sin fin es todo lo que se interpone entre usted y el trabajo en Google.

    Mientras tanto, si buscas conseguir un trabajo de la mejor manera y más efectiva, te sugiero que vayas a Xobin y eches un vistazo a la plataforma. Todo lo que uno tiene que hacer es hacer tareas relacionadas con el trabajo que abarcan un par de horas, y ¡boom! Llega su entrevista de video, una plataforma de entrevistas de video de próxima generación (que pronto se integrará) que incluso le permite realizar todo el proceso en la comodidad de su hogar.

    Si sueña con ser ingeniero de software en Google, haga lo siguiente (suponiendo que aún no haya ingresado a la universidad o que esté al día en un programa de ciencias de la computación).

    1. Aprende sobre Google . Cambia tu ambición de una general a una específica. “Quiero trabajar en redes de Android” en lugar de “Quiero trabajar en Google”. Google / Alphabet es demasiado grande, tendrá que elegir, al menos para comenzar.
    2. Identificar las habilidades necesarias . ¿Quieres trabajar en infraestructura distribuida? Luego C / C ++ y sistemas distribuidos. Videoconferencia móvil? Aprenda sobre Android, Java y WebRTC. Si Google tiene trabajo de código abierto en el área, comience a leer parte del código y a comprenderlo mejor.
    3. Elija una universidad de Google recluta . Cuando solicite la universidad, mire para ver cuáles visitan Google (y, por extensión, otros buenos empleadores) para reclutar. Reclutar campus para pasantes e ingenieros a tiempo completo es, con mucho, la forma más fácil de obtener una entrevista. Hacer informática o un título relacionado.
    4. Programa, programa, programa . No tienes que leer este libro o eso, o hacer tele-cursos. Debe programar lotes, hacerlo por pasatiempos y hacerlo en el área en la que desea trabajar. Haga utilidades, juegos, aplicaciones, lo que sea. Pero código. Cada hora gastada debe ser una hora de diversión y una hora más de experiencia. Aprenda las bibliotecas y extensiones estándar para su idioma además del idioma en sí. Y aprenda las complejidades del lenguaje que le permiten escribir un mejor código.
    5. Conoce tus algoritmos . Mentí sobre lo de ‘no hay libros’. Debe leer partes de al menos un libro: Introducción a los algoritmos de Cormen et. Alabama. Aprenda las estructuras de datos y algoritmos estándar para la clasificación, selección, hash, colas, organización de datos, etc.
    6. Practica entrevistas . La forma más fácil de hacer esto es postularse en otras compañías que tienen entrevistas similares a google. También busque en Google ‘Preguntas de la entrevista de Google’ y vea si puede resolver esas preguntas. Acostúmbrate a pensar en voz alta mientras resuelves problemas. Pídale a un amigo que le pregunte un problema verbalmente de una lista grande que le dé, luego resuélvalo en una pizarra blanca o posiblemente en un editor de texto mientras explica lo que está haciendo y por qué.
    7. Hacer pasantías Si es posible, realice una pasantía en google o en otras compañías importantes. Una pasantía bien hecha casi garantiza una oferta del anfitrión de la pasantía.
    8. Si no vive en los EE. UU. Y desea trabajar en los EE. UU., Obtenga al menos una maestría. Esto ayuda a justificar la contratación de alguien del extranjero y facilita el proceso de visa.

    Cuando entreviste en Google, asegúrese de entrevistar otros lugares también, idealmente al mismo tiempo. Esto puede llevarlo a tener más opciones y obtener mejores ofertas.

    Uh Bueno, eres como yo XD

    De todos modos … Sé que Quora va a rechazar esto, así que sí, adelante.

    En primer lugar, debes ser tú mismo, okie. Solo porque quieres unirte a Google, no tienes que pasar por las grandes universidades y obtener altas calificaciones y esas cosas. Detente allí y sé tú mismo. ¿Qué te gusta hacer?

    Soy estudiante de informática y tengo un sueño similar. La diferencia aquí es que me di cuenta de que hay muchos otros graduados que son mejores e inteligentes que yo para Google. ¿Entonces qué hago? Pensé en seguir lo que amo y eso es diseñar. Entonces comencé a prepararme para los exámenes de diseño. Pronto llegué a saber que Google tiene una gran demanda de diseñadores de interacción, experiencia de usuario, etc., de hecho, necesitan personas de todos los dominios. ¡Incluso ingenieros de audio! Así que omita todo ese pequeño – hablar y extenuante sobre el largo camino! Solo sé quien eres y haz lo que amas y mantente enfocado. Google te encontrará 😛

    Si tuviera que decir un incidente similar. Muchos diseñadores aplican a Nike. Pero Nike, por otro lado, busca talento en lugar de tomarlo de entrevistas y carteras. Déjame saber en qué camino quieres entrar y puedo ayudarte más en eso. ¡Prestigio!

    No solo google, sino que para ser un buen ingeniero de software, te sugiero que hagas lo siguiente:
    1) Conviértase en un maestro de cualquier lenguaje de programación y en algunos otros lenguajes de programación populares (esto lo ayudará a comprender los programas escritos por otra persona en otro idioma que no sea el que usted dominó).

    2) Sea parte de algunos proyectos de código abierto. Puede consultar GitHub, Sourceforge, etc., descargar algún proyecto y dar su opinión. Después de obtener suficiente conocimiento, también puede cargar un proyecto de código abierto iniciado por usted. Google prefiere esas personas en lugar de los ratones de biblioteca.

    3) Desempeña un papel activo en los sitios de preguntas y respuestas como Quora, StackOverflow, etc. Comparte tus conocimientos y, por lo tanto, mejora tus habilidades.

    4) Ir a cursos de algoritmo. Puedes codificar durante 2 años y convertirte en un buen programador, pero solo un curso de un año en Algorithm puede convertirte en un gran programador. Un buen ingeniero de software es un maestro en algoritmos y matemáticas.

    5) Participa en concursos de codificación en línea. Puedes visitar sitios como codechef, topcoder, codejam by google, techgig, hackerrank, etc.

    6) Por último pero no menos importante, dedicación 🙂

    Las 10 preguntas principales de la entrevista de Google para el ingeniero de software: libros, recursos

    Estas preguntas de la entrevista de Google son algunas de mis favoritas recopiladas de diferentes fuentes. Todos los programadores saben que Google es una de las mejores empresas de tecnología y su sueño es que muchos desarrolladores de software trabajen para Google, pero al mismo tiempo el proceso de entrevista en Google es muy difícil y solo Algunos programadores inteligentes genuinos pasan por su proceso de entrevista. Las preguntas de la entrevista de Google siempre han sido un buen tema de discusión cuando pocos desarrolladores jóvenes de software se reunieron, todavía puedo recordar cuando uno de mis amigos recibió una llamada de google para una entrevista y luego cómo se entusiasmó todo el grupo. Hemos buscado mucho en Internet en las preguntas y respuestas de la entrevista de Google para él y para nosotros y luego tomamos nota de algunas de las mejores preguntas para la preparación. Estoy enumerando algunas preguntas de la entrevista de Google de esa lista.

    Además de las preguntas populares formuladas en varias entrevistas de Google para ingenieros o desarrolladores de software, los libros sobre algoritmos y estructura de datos juegan un papel mucho más importante. Los libros como Algorithms for Interviews andIntroduction to Algorithms deben leerse para cualquier programador que se tome en serio la conversión de entrevistas de Google o compañías similares como Facebook, Amazon y Microsoft. Una vez que comienzas a prepararte para Google, el resto se vuelve muy fácil.

    http://javarevisited.blogspot.in

    Los trabajos de Ingeniería de Software son uno de los trabajos más buscados en el mercado. Están bien pagados y tienen una gran demanda continua. En esta era de digitalización, numerosos sitios web y material en línea están disponibles para usted desde el principio. Nunca ha sido más fácil seguir tus sueños. Todo lo que necesitas es poner un esfuerzo y dedicación.

    Para convertirse en un ingeniero de software competente, necesita mejorar y trabajar en la escritura de algoritmos eficientes, ya que esto ahorraría mucha memoria. Debe tener un ojo para leer y encontrar errores y códigos de depuración de otros codificadores. Debe ser adaptable y tener curiosidad por probar cosas nuevas.

    Le recomendaría la Escuela Holberton de Ingeniería de Software en San Francisco que está capacitando a Ingenieros de Software Full-Stack. Tiene uno de los programas más completos y está muy bien planificado y organizado. Le ayudará a convertirse en un ingeniero de software y le recomiendo que lo considere.

    Es un programa ideal para personas que no tienen antecedentes en codificación y se pone énfasis en una educación saludable. Muchos de sus graduados trabajan para gigantes de software. El programa también desarrolla habilidades sociales de las personas, ya que el trabajo en equipo es una parte esencial de los ingenieros de software, ya que tienen que trabajar en equipos para depurar o desarrollar un nuevo software.

    Te animo a que sigas tu pasión ya que el software ahora está en todas partes. Si eres lo suficientemente hábil, no tendrás problemas para conseguir un buen trabajo. El software ahora se ha incorporado en muchas industrias, desde finanzas, comercio minorista, transporte, salud, fabricación, educación. Estas industrias están buscando individuos con talento. Las empresas anhelan los talentos tecnológicos, y también tiene la opción de trabajar de forma remota o donde quiera (siempre que pueda obtener una visa, puede visitar este sitio web que podría ser útil para esto).

    Con el uso de software en una gran cantidad de industrias, el trabajo de una persona de software se está volviendo muy diverso dependiendo del tipo de industria. Conocer el software no necesariamente te llevará a un puesto de programación. Dicho esto, conocer el software puede abrir nuevas puertas y muchas oportunidades para usted. Puede comenzar su propia empresa, ser un reclutador de tecnología o ser un programador estelar para una empresa multinacional. El futuro es brillante para ti y espero que lleves y persigas tu objetivo de convertirte en una persona de software.

    Básicamente, se necesitan 3 cualidades para conseguir un trabajo en Google:

    • Talento
    • Conocimiento y ética relacionados con el trabajo (por ejemplo, persistencia, curiosidad general)
    • Suerte. Por ejemplo, incluso un solo entrevistador que tenga un mal día puede arruinarte por completo.

    Tener estos 3 componentes le garantizará un trabajo en Google o prácticamente en cualquier otra empresa de tecnología de primer nivel (FANG y otros). Teniendo solo 2, creo que todavía es posible. Pero una cualidad no es suficiente. Supongo que lo que intento decir es que a veces estudiar no es suficiente, no importa cuánto lo intentes.

    1. Sea bueno en estructuras de datos y algoritmos (descifre la entrevista de codificación / Manual de diseño de algoritmos). Debería poder codificarlos en cualquier lenguaje de programación. Cuando elija cualquier lenguaje de programación para las entrevistas de Google, asegúrese de entrar y salir de él.
    2. Vaya a Conceptos básicos del sistema operativo, Conceptos de red, Bits / Bytes, Administración de memoria.
    3. También revise algunas preguntas de diseño (como implementar acortador de URL, etc.)
    4. Aprenda también algunos conceptos de la base de datos.
    5.Código de escritura práctica en Black Board y también en google doc (si su entrevista telefónica aún no se ha realizado)
    5. La práctica te hace perfecto o al menos cercano. Así que sigue resolviendo problemas de hackerrank / codechef / spoj, etc.
    6. Finalmente “Todo lo mejor” 🙂

    Se estima que hay 5k candidatos con un perfil similar como usted en India.

    Recientemente, Google Education reveló una guía para aclarar más los dominios de experiencia que Google prefiere.

    Google en educación

    Con una experiencia decente, habilidades para descifrar sus pruebas escritas y un currículum perfecto para que coincida con el perfil aplicado, usted es un candidato decente y elegible para su trabajo.

    PD: Me pregunto por qué quieres trabajar solo con Google y no crear tu propia startup después de tanta experiencia. Haga algo para que Google lo busque a usted en lugar de buscar a Google.
    El equipo oportuno de Bitspin fue uno de esos ejemplos.

    1. Solicite en Google, asegúrese de que su currículum esté listo y / o tenga personas internas que puedan recomendarlo (esta es probablemente la parte más difícil y requiere mucho tiempo para crear un buen currículum que valga la pena el tiempo) Google para mirar; concéntrate en proyectos paralelos, construyendo cosas y obteniendo buenos resultados en tus cursos si todavía estás en la escuela)
    2. Esperemos escuchar y programar entrevistas con su reclutador
    1. Comience a prepararse para las entrevistas mucho antes de este paso, pero aumente su preparación una vez que esté programado. ¡Todo lo que lo separa de un trabajo genial son algunas preguntas extrañas sobre algoritmos y algunas conversaciones!
  • Entrevistas! Haz tus entrevistas y espero que les vaya bien en ellas.
  • ¡Oferta! ¡Felicitaciones, recibió una oferta de Google!
  • Los expertos ya han escrito muchas buenas respuestas. Yo mismo no había logrado atravesar los muros de Google en 2014. Pero más tarde, he visto a algunos de mis amigos descifrarlo.

    Las 2 similitudes principales que he notado entre los seleccionados fueron:

    1. Programación y habilidad de IA
    2. Exposición a productos en vivo realmente geniales , y más importante en startups porque eso te da la oportunidad de experimentar e innovar.

    Dos de mis amigos que fueron seleccionados en Google (en el pasado reciente) tenían excelentes habilidades de programación e inteligencia artificial. Uno de ellos había trabajado ~ 2 años en Zomato – Restaurant Finder y otro por ~ 1 año con FinArt – Secure Money Manager

    Te aconsejaría que eches un vistazo a las reseñas de Google en #Glassdoor. Glassdoor es una plataforma donde las personas pueden compartir comentarios anónimos. Tienen secciones que puede leer específicamente relacionadas con las entrevistas, incluidos los tipos de preguntas que hacen. Si ya tiene el trabajo en Google (¡en primer lugar, felicidades!), Algunas de las otras secciones en las que las personas comparten información sobre cómo es trabajar allí y cómo han visto el éxito dentro de la compañía también podrían ser beneficiosas.

    Hay dos maneras :

    • O bien, debe tener un fondo realmente impresionante con una capacidad de codificación fuerte (quiero decir, muy fuerte … como increíblemente rápida), debe ser impecable en conocimiento algorítmico y matemáticas. [¡Porque la suerte no favorece a todos, créeme, podrías ser bueno en cosas pero si no haces clic en esos 45 minutos, a nadie le importa quién eres o qué eres! ]
    • O bien, si ha trabajado / está trabajando en una aplicación que tiene / tiene más de un millón de usuarios, entonces ni siquiera necesitará entrevistas, ¡a los Gigantes de la tecnología que no sean Google les encantaría tenerte en su Equipo!

    PD: ¡Sé exagerado y estarás en condiciones de rechazar Google!

    Respuesta más corta para aquellos que ya son buenos en CS y matemáticas:

    1. Resuelva todos los problemas en matemáticas discretas del libro: Math for CS, de Lehman Meyer, MIT.
    2. Capaz de codificar, usar y explicar la mayoría de los algoritmos en el texto de Cormen; Lectura adicional: manual de diseño de algoritmos.
    3. Capacidad para codificar en un lenguaje con punteros (C o C ++) y depurar a asm usando gdb.
    4. Dominio de scripting y herramientas de Unix. Incluso las ventanas SWE son buenas en esto.
    5. Autor de algunos componentes de código abierto ampliamente utilizados.
    6. Bien leído, pensador práctico y original.
    7. Buen comunicador.

    Correcciones a la otra respuesta: la mayoría de SWE no tiene acceso a todo el código fuente.

    More Interesting

    Veo a muchas personas con títulos en algo más que ciencias de la computación o ingeniería de software, ¿cómo y por qué se convirtieron en desarrolladores?

    ¿Hay alguien que renunció a un trabajo de software sin ninguna razón válida y consiguió un trabajo nuevamente después de un año de diferencia?

    ¿Cómo o cuándo comenzó que los 'programadores' y 'programadores' son considerados menos valiosos que los 'ingenieros' y 'desarrolladores'?

    Cómo comenzar a aprender los cursos estudiados por graduados en informática para que finalmente me convierta en ingeniero de software

    Si quiero ser ingeniero de software en Facebook, ¿necesito saber programar en PHP?

    ¿Cuál es una buena manera de lidiar con altos costos operativos como ingeniero de software?

    Si la ingeniería de software o cualquier otra ingeniería no es una buena idea (lo peor que se puede hacer con su vida), ¿qué se debe elegir como carrera?

    ¿Es cierto que los ingenieros de software indios se consideran contrataciones muy malas en los Estados Unidos? Planeo ir a los Estados Unidos el próximo año para una maestría en informática; ¿Ser de India afectará mis perspectivas laborales allí?

    Uber (empresa): ¿Cómo solicito en línea una pasantía de ingeniería de software en Uber?

    ¿Un B.tech en ingeniería de software me convierte en ingeniero con el título de Ing.?

    ¿Cómo puede crecer un ingeniero de software asociado en Robert Bosch? ¿Cuáles son los pasos que pueden llevarlo a ese éxito?

    ¿Qué carrera debo elegir? BS informática, ingeniería de software o ingeniería informática?

    ¿Qué consejo le darías a un equipo de ingeniería de software en una startup?

    ¿Qué debería importarle en un primer trabajo a tiempo completo como ingeniero de software?

    Como estudiante de informática, ¿cómo me convierto en un colaborador de código abierto?