Ser un especialista, particularmente en áreas de gran demanda como aprendizaje automático, búsqueda / IR o sistemas distribuidos abre puertas. Sin embargo, la especialización no debería tener el costo de la excelencia general en ingeniería de software. Lo que he encontrado es que la combinación de profundidad en una o más áreas, combinada con la amplitud general parece ser una gran combinación: este tipo de ingenieros han sido los más difíciles de encontrar; cuando son contratados, tienden a tener el mayor impacto en una organización.
En particular, he visto que la combinación de especialización algorítmica (búsqueda o análisis de datos), programación de sistemas (computación distribuida, programación de red, concurrencia / multihilo, componentes internos de bases de datos) y experiencia con programación en grande (diseño orientado a objetos limpios , colaborar en grandes bases de código y gestionar la complejidad en general) es particularmente valioso.
Para los ingenieros de sistemas distribuidos (que generalmente escriben servidores en Java o C ++), la comprensión de la administración de sistemas UNIX y las secuencias de comandos Python / Ruby / Perl también es invaluable: la parte más difícil en la construcción de este tipo de sistemas es la depuración, y estas herramientas ayudan a hacer la depuración / solución de problemas menos propenso a errores y tedioso.
- ¿Cuál es la mejor manera de poner al día a un nuevo empleado en una startup?
- ¿Cómo BMW, Audi, GM, Nissan, etc. reclutan ingenieros mecánicos en India?
- ¿Cómo sueles encontrar y contratar pasantes?
- ¿Cómo gestionan el reclutamiento las startups de <50 personas?
- ¿Cuál es la práctica típica para los reclutadores de tecnología que colocan miembros de la junta y asesores en las primeras etapas de inicio?
Poder moverse de un área de especialización a otra, mientras aprende en el trabajo, también parece ser una habilidad valiosa. Por ejemplo, muchos ingenieros de alto nivel en Google (Jeff Dean, Urs Holze) tenían experiencia en compiladores / lenguajes de programación, pero cambiaron a dominios completamente diferentes. El profesor Ousterhout (un informático y un emprendedor) es conocido por su trabajo en lenguajes de script (Tcl), herramientas de software (Electric Fence), sistemas operativos (Log Structured Filesystems con Mendel Rosenblum) y sistemas distribuidos más recientemente (RAMCloud).