Ищем людей в Рослин
Пару лет назад я написал пост с названием «Команда управляемых языков ищет людей», всего за пару часов до того, как наше руководство объявило о том, что все люди набраны, и мы прекращаем поиск людей. Мне было немного стыдно. Теперь меня уверили, что у нас на самом деле есть открытые позиции в нашей команде.
Это дает мне возможность более точно рассказать о том, что до этого было лишь слухами. Да, как многие из вас догадались, команда разработки управляемых языков разделилась на две команды. Одна команда сосредоточена на разработке возможности “async”, уже доступной в виде CTP, а также на исследовании и разработке других новых возможностей. Вторая команда, с кодовым названием «Рослин», работает над более долговременными задачами, которые заключаются в серьезной переработке архитектуры компиляторов языков C# и VB для реализации возможности «компилятор как сервис» (compiler as a service, CaaS). Я работаю именно во второй команде, вместе с другими разработчиками и архитекторами (такими как Нил Гафтер (Neal Gafter), Мэтт Варрен (Matt Warren), Питер Голд (Peter Golde) и, конечно же, Андерс Хейлсберг (Anders Hejlsberg)). Мы в меньшей степени сосредоточены на конкретных возможностях языка, а в большей степени на создании архитектуры компилятора, который можно будет использовать совместно с другими современными инструментами.
Когда я присоединился к команде C#, мы работали над языком C# 3, и в то время у команды разработчиков компилятора C# было две версии исходников: у команды разработчиков компилятора и у команды разработчиков IDE была собственная версия семантического анализатора. (Хотя они совместно использовали логику лексического и синтаксического анализатора). Мы поняли, что сложность семантического анализа, вызванная появлением LINQ, будет слишком высока и идея реализации этой логики дважды не является такой уж хорошей идеей. Мы сделали серьезные вложения, позволив IDE использовать семантический анализатор компилятора, в результате чего получили один лексический анализатор, синтаксический анализатор и семантический анализатор, подходящий как для «пакетной», так и для «интерактивной» компиляции. Это было серьезным достижением.
Однако интерфейс семантического анализатора компилятора C# 3 был чрезвычайно сложным и узкоспециализированным для конкретных нужд нашей IDE. И он не был согласованным с аналогичной системой компилятора VB. И написан он был на неуправляемом C++, а не на C# или VB, что делало сложным его использование из управляемого кода. Создание службы семантического анализатора с согласованным интерфейсом для двух основных языков программирования на платформе .NET, который можно было бы легко использовать из других управляемых языков и, который мог бы применяться не только нашей IDE, открывает серьезные возможности для разработчиков инструментов.
Это серьезная задача, принимая во внимание небольшой размер нашей команды; некоторое время мы уже работаем над этой задачей, но нам еще многое нужно сделать. Сейчас в команде Рослин не хватает людей, и мы хотим найти кое-кого уровня “Developer 2”. Мы будем рассматривать кандидатов «сразу после колледжа», но в идеале мы ищем кандидата с серьезным опытом использовании и написании кода инструментов семантического анализа. Мы ищем людей, безумно увлеченных компиляторами, с серьезными знаниями языков программирования C# и/или VB, желающих работать с уже существующей командой ведущих архитекторов и инженеров.
Текст этой позиции приведен ниже; если вы заинтересованы в этой вакансии, пожалуйста, не присылайте свое резюме напрямую мне и не публикуйте его здесь в виде комментария; вместо этого используйте механизм нашего сайта о работе, чтобы удостоверится в том, что информация о вас попала в нашу базу. Если вы хотите упомянуть о том, что вы узнали об этой вакансии здесь, это будет здорово, но это не обязательно.
И напоследок, почему «Рослин»? Я был одним из тех, кто придумал это глупое имя. Практически все кодовые имена продуктов компании Microsoft носят имена городов. И очень маловероятно, что милый исторический городок Рослин, штат Вашингтон, будет против того, что мы воспользуемся его именем. Но использование имен персонажей, выдуманных мест из книг или кинофильмов, и, очевидно, имена уже существующих продуктов, могут привести к проблемам с авторскими правами.
Но самое главное, мой офис выходит на северную сторону.
Ха-ха-ха-ха-ха!!! Как я себя расхвалил.
Job Category: Software Engineering: Development
Location: United States, WA, Redmond
Job ID: 734698 28776
Division: Server & Tools BusinessC# and VB are the flagship languages targeting the .NET platform. The overwhelming majority of code running on .NET is written in VB or C# using Visual Studio. The C# and VB team build both the language compilers and the Visual Studio editing experience around those languages, and the compiler team is looking for a new team member to help us deliver on a bold, new undertaking.
Until now, the VB and C# compilers have been used as black boxes. You put text in, and you get out a binary file. In our long-lead project, code name Roslyn, we’re changing that dynamic by building an API that exposes compilers’ analysis engines. Exposing parse trees and types, expression binding, and assembly production through an API enables a world of new scenarios including REPL, C# and VB as scripting languages, and more. In order to do this right, we’re re-examining the compilation pipeline at the most fundamental level and designing an immutable model written top to bottom in managed code.
Technical challenges on the Roslyn compiler team come in many forms. Ever noticed how fast the C# compiler is? It’s not an accident. What about lambda functions? How do those things work under the covers? If you were on the Roslyn compiler team, you’d be developing high performance implementations of C# and VB language features that developers use every day. How does Visual Studio produce such accurate and quick IntelliSense? It’s the compiler guts back there, and you could help build the foundation that enables scenarios like that.
As a developer on the Roslyn compiler team, you’ll work in an environment filled with smart, industry-recognized folks working on a next-generation product that directly affects the experience of thousands of developers like yourself every day. And if you’re seeking a more direct interaction with customers, on the Roslyn compiler team you will develop an in-demand expertise in the compiler implementation that allows you to speak as a domain expert in online forums and at conferences.
We’re looking for a developer who wants to be challenged, has sharp intellect, and possesses solid collaboration skills. The ideal candidate will have a strong architectural sense, a history of producing robust and maintainable solutions, and a passion for delivering genuine customer value. Knowledge of the .NET managed execution environment is a big plus and the ability to drive open issues to resolution is a must. We program in VB and C#.