¿Cuáles son las habilidades necesarias para ser ingeniero de Google?

Es lo mismo que cualquier otra compañía, de verdad. Debes ser bueno en algoritmos, pero quizás la habilidad más importante para cualquier buen programador es lo que yo llamo “navegar por capas de abstracción”. Debe poder comprender una capa de abstracción, y todo lo que implica, y luego poder saltar a la implementación para poder ver cómo se proporciona la abstracción. Es posible que la abstracción no esté bien documentada, por lo que a menudo tendrá que ver cómo se usa (es decir, las capas por encima de la cual se llama abstracción) y cómo se implementa.

Pero, por supuesto, la implementación probablemente llamará a otras abstracciones que a menudo tampoco están bien documentadas, por lo que deberá razonar sobre las abstracciones subyacentes, descifrarlas, observando sus llamadores y las capas de abstracción que llama, y luego vea si puede construir su propio modelo mental de cómo se supone que debe funcionar.

En algunos casos, habrá documentación, pero la documentación puede no ser correcta, especialmente en los casos de esquina. Por lo tanto, debe ser capaz de resolverlo a partir de la implementación y de los llamadores de la abstracción.

Los verdaderamente capacitados podrán hacer esto para múltiples capas de abstracción al mismo tiempo, y podrán saltar entre diferentes capas de abstracciones de forma rápida y fácil. Por eso me gusta la frase, “navegar por las capas de abstracción”. Al igual que un surfista que tiene que saltar de ola en ola, un buen programador necesitará saltar de una capa de abstracción a otra.

Esto es especialmente importante para los programadores de Java; si no sabe cómo se implementan varias bibliotecas Java, arruinará los problemas de rendimiento; Está prácticamente garantizado. Por otro lado, si está tratando de mejorar el rendimiento, a menudo la mejor manera de hacerlo es tener al menos 3-4 capas de la definición e implementación de la interfaz de una pila de software en particular al mismo tiempo, y luego preguntar usted mismo, “¿esto tiene sentido”? Si no es así, muy a menudo has encontrado una oportunidad de optimización. 🙂

Google tiene una pila de software muy complicada internamente y, como todas las empresas, algunas capas que parecen estar bien documentadas y realmente lo están; otros parecen estar bien documentados, pero la documentación puede estar desactualizada, tal vez por un poco o tal vez por mucho; y algunos están documentados principalmente por el código fuente.

¿La línea de fondo? Sé un buen programador y un buen ingeniero.

La mayoría de los programadores usan cajas negras. La base de datos es un cuadro negro: aliméntelo con SQL y obtendrá respuestas. El compilador en sí es un recuadro negro: aliméntalo con el código fuente y obtendrás un ejecutable (o una serie de mensajes de error semi útiles).

Muchos programadores están felices de tomar estos cuadros como obsequios. Los mejores se preguntan qué está pasando dentro de ellos, y luego se abren para echar un vistazo.

Diría que el conjunto principal de habilidades necesario para ser un ingeniero de Google es la capacidad de saber algo sobre lo que está sucediendo dentro de las cajas negras. No solo necesita poder escribir código: necesita saber por qué funciona.

En general, cuanto mejor es el ingeniero, más profundo pueden llegar y más entienden sobre la tecnología que están utilizando. El resumen más corto que se me ocurre es decir que Google (como cualquier buena compañía de tecnología) espera una cierta profundidad.

Estado de CENG para uno 🙂 o que RR.HH. ponga ‘Ingeniero’ en su cargo

More Interesting

¿Debería haber el mismo plan de estudios para todas las universidades de ingeniería en India como el de la junta de CBSE? ¿Qué pros y contras pueden resultar?

¿Cuáles son las diversas formas de disfrutar la vida universitaria junto con los estudios de equilibrio?

¿Cómo funciona un motor SI?

Si construyeras un acueducto de estilo romano desde la cima del Monte Everest, ¿hasta dónde llegaría antes de llegar al nivel del mar?

¿Por qué algunas bombillas tienen un retraso desde el momento en que enciende la luz hasta que se encienden?

¿Qué debe hacer un ingeniero mecánico para obtener una buena ubicación y un buen paquete?

¿Qué avances importantes se esperan en este campo?

¿Qué es mejor, mecánica en Thapar o ingeniería química de la Universidad de Panjab? ¿Cuál sería mejor?

¿Qué deben saber todos antes de estudiar ciencias de la computación / ingeniería?

¿Por qué los aspirantes a IIT están tan obsesionados con CS? Además de su pasión, ¿no son sus ingenieros mecánicos exitosos?

¿Pasar de la informática a la ingeniería informática sería un movimiento inteligente / bueno?

¿Cuál software es más importante para los estudiantes de ingeniería civil, Stadd.Pro o Primavera?

¿Será seguro unirse a las nuevas IIT que se abrirán en 2016?

He sido diseñador mecánico de climatización y fontanería durante 8 años. ¿Puedo ser ingeniero sin una licenciatura en ingeniería?

¿Cuáles son los problemas con los cohetes de fragmentos de fisión?