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)
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.
felipe kendall
micro solar