¿Consejos para encontrar trabajo escribiendo compiladores y/o sistemas operativos? y, ¿los salarios de las personas con estos trabajos son de conocimiento abierto?

En el espacio tecnológico, el trabajo de mis sueños es escribir compiladores para lenguajes nuevos y variados en diferentes paradigmas (piense en todo entre Haskell, C#, C++, Smalltalk, JavaScript, prolog y LISP). También tengo una pasión relacionada con los sistemas operativos y el diseño de procesadores (desde los transistores, las puertas lógicas y los flip-flops hasta el kernel, el espacio de usuario, el shell y luego la GUI, etc.).

Sin embargo, durante toda la década que he estado trabajando en Tech, nunca he visto un anuncio para este tipo de trabajos (aunque es cierto que Google ha sido una excepción reciente en el sentido de que están reclutando explícitamente para el desarrollo de Fuschia).

Tengo el presentimiento de que esos trabajos son raros sobre el terreno. Los lenguajes de programación a menudo comienzan a partir de un solo nerd tecnológico famoso o de un par de ellos (cf, C, C ++, Python). De vez en cuando, un comité puede producir una especificación de lenguaje y una pila tecnológica (por ejemplo, Ada, COBOL, Haskell). Tengo el presentimiento de que en realidad es bastante raro que una empresa de tecnología decida directamente gastar su talento tecnológico en el desarrollo de tales cosas, porque es un poco una lotería en cuanto a si el resultado será rentable o no (es decir, solo porque usted gastar tiempo y dinero en crear una marca que azote un nuevo lenguaje/pila tecnológica elegante, no significa que toda la industria renunciará de inmediato a sus formas paganas de C#/Java y migrará en masa a su nuevo producto).

También tengo la corazonada de que, por poner un ejemplo, solo hay dos o tres personas que mantienen actualizado el estándar del lenguaje C# y mantienen los compiladores. ¿Cómo se consigue ese trabajo? ¿Es similar al Colegio de Cardenales donde Anders Hejlsberg tiene que fallecer antes de que alguien más pueda ascender?

Entonces, con eso fuera del camino, mi pregunta real: ¿Cómo se las arregla uno para conseguir un trabajo escribiendo compiladores y/o manteniendo la especificación/estándar de idioma relevante? ¿Estos trabajos están anunciados en alguna parte? ¿O simplemente tienes que estar increíblemente bien conectado?

Finalmente, tengo el presentimiento de que esos roles pagan muy por encima del promedio: ¿Alguien tiene datos concretos sobre los salarios de las personas que inventan idiomas y mantienen los compiladores? (Nuevamente sospecho que es una gran dicotomía: el mantenedor del último dialecto Lisp podría estar haciendo maní mientras que los mantenedores de Java, C #, C ++ presumiblemente están acumulando M $ y Googlebucks)

Ingeniero compilador principal, Arm . Ingeniero de software asociado, herramientas de desarrollo C/C++, Red Hat . Ingeniero de software principal, compiladores de GPU, Microsoft <- todos los que se encuentran simplemente buscando "compilador" en la página principal de trabajos de algunas compañías obvias. ¿Dónde has estado buscando?
¿Se trata de estar "conectado", rentable, código pagano o simplemente tu corazonada?

Respuestas (2)

En pocas palabras, su comprensión de la complejidad de una cadena de herramientas de compilación de optimización moderna está errada en al menos dos órdenes de magnitud.

También tengo el presentimiento de que, por poner un ejemplo, solo hay dos o tres personas que mantienen actualizado el estándar del lenguaje C# y mantienen los compiladores.

Absolutamente no. No tengo información privilegiada, pero el equipo compilador de C#/.NET en Microsoft será del orden de cientos de personas. Del mismo modo, cientos de personas contribuyen a las cadenas de herramientas GNU C/C++ y Clang/LLVM.

Del mismo modo, ningún individuo mantiene el estándar de las principales bibliotecas; todos son mantenidos por un comité; en el caso de C#, este es ECMA TC49-TG2 . Si bien puede reconocer un nombre familiar como el coordinador de ese comité, las decisiones sobre el idioma las toma la comunidad, no una o dos personas.

Dado esto, creo que el resto de sus preguntas se vuelven discutibles en gran medida: hay muchos trabajos en equipos de herramientas de compilador/desarrollador, y estos están disponibles desde el nivel de entrada hacia arriba. ¿Están mejor pagados que otros roles de desarrollo de software con una antigüedad similar? No significativamente, una vez que se toman en cuenta otros factores como la ubicación.

Si no ha comenzado a escribir sus propios compiladores, es poco probable que obtenga ese trabajo. Lo que descubrirá es que escribir compiladores no se trata solo del compilador, sino también del entorno de tiempo de ejecución. En segundo lugar, escribir compiladores también es una parte importante de las pruebas. Los compiladores modernos tienen que pasar un conjunto de pruebas muy serio para ser liberados. Es posible que se ponga más esfuerzo en crear y mantener el conjunto de pruebas que en el compilador.

Para obtener experiencia escribiendo compiladores, le sugiero que se ofrezca como voluntario en uno de los proyectos de compiladores de código abierto. Luego, cuando solicite un trabajo de redacción de compiladores, puede aportar su experiencia.

Contrapunto: el trabajo de ingeniero de software asociado vinculado en mi comentario. Tenga en cuenta que todos los requisitos de "experiencia con cosas del compilador" son opcionales, no obligatorios.
@PhilipKendall Ciertamente, pero esta publicación se lee como alguien que simplemente tomó un curso y quiere conseguir un trabajo sin conocer todas las ramificaciones de la escritura del compilador. Por lo tanto, la sugerencia de ser voluntario en un proyecto de código abierto podría darle una mejor idea de lo que está preguntando.
Claro, hay muchas suposiciones erróneas en la publicación original, pero creo que la declaración de que no puedes conseguir un trabajo escribiendo compiladores, o al menos en el equipo que escribe los compiladores, sin haber trabajado en tu propio compilador es un un poco exagerado
@PhilipKendall Dije, "no es probable", no "no puedo". Creo que tu respuesta comienza mejor que la mía, pero ambos estamos tratando de decir lo mismo. Si estuviera mirando una pila de currículums y alguien se ha ofrecido como voluntario en un proyecto de compilación en comparación con alguien que no sabe nada, me quedo con la persona con experiencia. Tuve la suerte de tener la oportunidad de trabajar un poco en el tiempo de ejecución de un compilador y eso se debió a que formaba parte de un pequeño equipo de programación de sistemas cuando 64K RAM era una gran computadora.
Dijiste "muy poco probable", que es bastante parecido a "no puedo" en mi libro. ¿Es eso posiblemente un error tipográfico para "no muy probable"?