Советы по поиску работы по написанию компиляторов и/или операционных систем? и являются ли зарплаты людей с этими работами общеизвестными?

В технической сфере работа моей мечты — писать компиляторы для новых и разных языков в разных парадигмах (думаю, что угодно между Haskell, C#, C++, Smalltalk, JavaScript, prolog и LISP). У меня также есть связанная с этим страсть к операционным системам и дизайну процессоров (на всем пути от транзисторов, логических элементов и триггеров до ядра, через пространство пользователя, оболочку, а затем до графического интерфейса и т. д.).

Однако за все десятилетие или около того, что я работаю в сфере технологий, я никогда не видел рекламы такого рода вакансий (хотя, по общему признанию, Google был недавним исключением, поскольку они явно набирают сотрудников для разработки Fuschia).

У меня есть предчувствие, что такие работы редкость на местах. Языки программирования часто зарождаются благодаря либо одному знаменитому технару, либо паре из них (cf, C, C++, Python). Время от времени комитет может создавать спецификацию языка и технический стек (например, Ada, COBOL, Haskell). У меня есть внутреннее ощущение, что на самом деле технологическая компания довольно редко сразу решает потратить свой технический талант на разработку таких вещей, потому что это немного лотерея относительно того, будет ли результат прибыльным (то есть только потому, что вы тратить время и деньги на создание бренда, шлепающего по шикарному новому языку/технологическому стеку, не означает, что вся индустрия немедленно откажется от своих языческих способов C#/Java и массово перейдет на ваш новый продукт).

У меня также есть подозрение, что, например, только два или три человека поддерживают стандарт языка C# в актуальном состоянии и поддерживают компиляторы. Как устроиться на эту работу? Это похоже на Коллегию кардиналов, где Андерс Хейлсберг должен скончаться, прежде чем кому-либо еще будет позволено подняться?

Итак, с учетом этого, мой актуальный вопрос: как можно найти работу по написанию компиляторов и/или поддержанию соответствующей языковой спецификации/стандарта? Эти вакансии где-нибудь рекламируются? Или вы просто должны быть невероятно хорошо связаны?

Наконец, у меня есть подозрение, что такие роли оплачиваются намного выше среднего: есть ли у кого-нибудь достоверные данные о зарплатах людей, которые изобретают языки и поддерживают компиляторы? (Я снова подозреваю, что это довольно дихотомия: сопровождающий последнего диалекта Лиспа может делать арахис, в то время как сопровождающие Java, C#, C++ предположительно загребают M$ и Googlebucks)

Главный инженер-компилятор, Arm . Младший инженер-программист, Инструменты разработчика C/C++, Red Hat . Главный инженер-программист, компиляторы графических процессоров, Microsoft <- все те, кого можно найти, просто выполнив поиск «компилятор» на главной странице вакансий некоторых очевидных компаний. Где вы искали?
Это о том, чтобы быть «связанным», прибыльным, языческим кодом или просто вашей догадкой?

Ответы (2)

Проще говоря, ваше понимание сложности современной цепочки инструментов оптимизирующего компилятора отличается как минимум на два порядка.

У меня также есть подозрение, что, например, только два или три человека поддерживают стандарт языка C# в актуальном состоянии и поддерживают компиляторы.

Точно нет. У меня нет инсайдерской информации, но команда компилятора C#/.NET в Microsoft будет состоять из сотен человек. Точно так же сотни людей вносят свой вклад в цепочки инструментов GNU C/C++ и Clang/LLVM.

Точно так же ни один человек не поддерживает стандарты для каких-либо крупных библиотек; все они поддерживаются комитетом — в случае с C# это ECMA TC49-TG2 . Хотя вы можете узнать знакомое имя организатора этого комитета, решения о языке принимаются сообществом, а не одним или двумя людьми.

Учитывая это, я думаю, что остальные ваши вопросы в значительной степени становятся спорными: есть много рабочих мест в командах инструментов компилятора/разработчика, и они доступны от начального уровня и выше. Оплачиваются ли они лучше, чем другие должности разработчиков программного обеспечения с аналогичным стажем работы? Незначительно, если принять во внимание другие факторы, такие как местоположение.

Если вы не начали писать собственные компиляторы на стороне, то вряд ли вы получите такую ​​работу. Вы обнаружите, что написание компиляторов касается не только компилятора, но и среды выполнения. Во-вторых, написание компиляторов также связано с тестированием. Современные компиляторы должны пройти очень серьезный набор тестов, чтобы быть выпущенными. На создание и поддержку набора тестов может быть затрачено больше усилий, чем на компилятор.

Чтобы получить опыт написания компиляторов, я предлагаю вам принять участие в одном из проектов компиляторов с открытым исходным кодом. Затем, когда вы подаете заявку на работу по написанию компилятора, вы можете поделиться своим опытом.

Контрпункт: ссылка на вакансию младшего инженера-программиста в моем комментарии. Обратите внимание, что все требования «опыт работы с компилятором» являются необязательными, а не обязательными.
@PhilipKendall Конечно, да, но этот пост читается как человек, который просто прошел один курс и хочет получить работу, не зная всех последствий написания компилятора. Таким образом, предложение стать волонтером в проекте с открытым исходным кодом может дать ему лучшее представление о том, о чем он спрашивает.
Конечно, в оригинальном посте много ошибочных предположений, но я думаю, что утверждение о том, что вы не можете получить работу по написанию компиляторов — или, по крайней мере, в команду, которая пишет компиляторы — не поработав над собственным компилятором, является немного завышено.
@PhilipKendall Я сказал «маловероятно», а не «не могу». Я думаю, что ваш ответ начинается лучше, чем мой, но мы оба пытаемся сказать одно и то же. Если бы я просматривал стопку резюме и кто-то добровольно вызвался в проекте компилятора по сравнению с кем-то, кто ничего не знает, я бы взял человека с опытом. Мне посчастливилось немного поработать над временем выполнения одного компилятора, потому что я был частью небольшой группы системных программистов, когда 64 КБ ОЗУ были большим компьютером.
Вы сказали «очень маловероятно», что довольно близко к «не может» в моей книге. Возможно, это опечатка в слове «маловероятно»?