¿Todos los ingenieros de software de Google necesitan tener conocimiento de sus lenguajes principales, C ++ y Java, o pueden ser simplemente expertos en su propio campo, digamos Python / Swift, etc.?

Para fines de entrevistas, no importa qué idiomas conozca a menos que la descripción del puesto solicite específicamente algo en particular; no tiene sentido solicitar un puesto de equipo compilador de C ++ si no conoce C ++ realmente bien, por ejemplo.

En términos de su trabajo continuo, conocer dos de los cinco grandes (C ++, Java, Python, Go y Javascript) es suficiente para comenzar, pero siempre se recomienda aprender más. Yo mismo, soy experto en C ++ y Python, intermedio en Javascript, y puedo leer Go pero aún no he escrito ninguno en producción.

Los lenguajes de especialidad adicionales, más comúnmente R y Kotlin, también se usan en algunos roles.

La otra cosa es que Google tiene una cantidad considerable de idiomas internos con fines especiales, y en muchos roles se espera que los aprenda. Para un SRE, por ejemplo, básicamente no se puede hacer nada sin conocer el lenguaje de configuración de Google (GCL), que es algo muy extraño, pero práctico en su nicho. Si desea ver algo así, eche un vistazo a The Data Templating Language.

Existe una expectativa general de que los ingenieros de Google sean lo suficientemente competentes como para leer la mayor parte del código en la base de código de Google, independientemente del idioma. Google también intenta hacer esto más fácil; Los requisitos de estilo impuestos en varios idiomas tienen la intención parcial de hacer que el código sea más fácil de leer para los no expertos. Si eres lo suficientemente bueno como para pasar una entrevista de Google, es probable que tengas la capacidad de hacerlo, o al menos lo retomarás en unos pocos meses. Así que no me preocuparía demasiado por eso.

Cuando se trata de escribir código, ni siquiera necesita ser especialmente bueno en un idioma cuando se une. Después de todo, Google contrata a muchos recién graduados. Eventualmente, debe tener la capacidad de diseñar e implementar proyectos no triviales, que, por supuesto, estarán en algún lenguaje de programación, pero antes de llegar a ese punto, se le dará mucho tiempo para acelerar y trabajar en proyectos más fáciles. usando ese lenguaje que desarrollará tu habilidad. Por otro lado, no hay garantía de que ese idioma sea el único en el que tendrá que escribir código.

Sí, experto en Python / Swift está bien. aunque google no necesariamente busca experiencia en idiomas. sus entrevistas enfatizan el diseño de algoritmos y el diseño general de sistemas, que son cosas que se pueden hacer en casi cualquier idioma.

Hasta donde yo sé, la respuesta es no.

Los grandes gigantes te contratan en función de tus habilidades, independientemente del lenguaje de programación que uses.

Si eres lo suficientemente brillante como para resolver algoritmos y problemas de estructura de datos, has terminado. Debería estar lógicamente un paso por delante de lo que son los ingenieros en otras compañías. Uno debe tener profundidad y amplitud de lo que él y su organización o proyecto hace. Debe ser un maestro, es decir, un conocimiento profundo de su propia tecnología o lenguaje, pero amplitud de todo.

Espero que hayas recibido tu respuesta.

Nunca he escrito código de producción en C ++ o Java en mi vida. Puedo leer un programa C ++ o Java, o al menos el tipo de C ++ y Java escrito por otros Googlers, que a menudo me permite descubrir cómo funciona algo sin pedir ayuda. Si lo tuviera, tendría perspectivas de trabajo algo más amplias, pero ahora hay muchos equipos trabajando en Go y equipos que buscan ingenieros experimentados de Go para ayudarlos a hacer la transición de Python y Java, por lo que no me duele.