👀 Дизайнеры, какая команда подходит вам по вайбам? Проверяйте на Вайб-чеке→ vibe.habr.com

Software Developer (Razor/Blazor Support)

Местоположение и тип занятости

Москва, Санкт-Петербург, НовосибирскМожно удаленно

Компания

Делаем эффективные инструменты для разработчиков

Описание вакансии

Условия работы

Отдел JetBrains .NET насчитывает более 130 человек, среди которых разработчики, тестировщики, технические писатели, инженеры поддержки, маркетинговые специалисты и девелопер-адвокаты. Вместе они работают над линейкой продуктов для .NET: ReSharper, Rider, профилировщики dotTrace и dotMemory, инструмент для оценки покрытия кода dotCover и декомпилятор dotPeek.

Продукты тесно интегрированы, и у них много общего кода. Например, все, что касается языковой поддержки, принадлежит продуктам ReSharper и Rider, но также используется декомпилятором dotPeek и профилировщиками dotTrace и dotMemory, позволяя им отображать код с привлечением множества умных возможностей. Декомпилятор, в свою очередь, встроен почти во все продукты, а профилировщики все больше и больше интегрируются в IDE.

Эти взаимосвязи отразились и на наших процессах. Весь исходный код лежит в одном репозитории (Git, размещенный в Space). Большая часть кода написана на C#, ядро профилировщиков написано на C++. Есть код на VB. NET, Managed C++ и F# — для «‎догфудинга»‎ соответствующей языковой поддержки. Интеграция Rider и IntelliJ IDEA написана на Kotlin. У нас большая команда, и прямые коммиты в master запрещены. Поэтому мы написали робота, который берет готовую ветку, пробует слить ее с master и запустить все тесты (более полумиллиона штук) и, если все хорошо, — вливает ветку в master. CI, естественно, организован с помощью TeamCity. В качестве CD мы используем Toolbox.

Кого мы ищем:

Одно из важных направлений развития продуктов ReSharper и Rider — поддержка веб-программирования с использованием ASP.NET Core Razor/Blazor. Есть задачи, общие для обоих продуктов (поддержка языковых конструкций Razor/Blazor, анализ кода, автодополнение, рефакторинги и все остальное, к чему привыкли пользователи современной IDE), и задачи, специфичные для Rider (встроенный отладчик для Blazor WebAssembly, интеграция с языками, поддерживаемыми в IntelliJ). Опыт создания веб-приложений будет плюсом, но главное — ваше желание разбираться в современных технологиях и стремление делать жизнь веб-программистов лучше.

Чуть более формальные требования:

  • Навык многопоточного программирования. Анализ кода у нас обычно выполняется в фоновых потоках, которые прерываются, чтобы не мешать пользователю печатать в редакторе.
  • Эрудированность в алгоритмах и структурах данных, привычка и умение оценивать сложность программы. Каждая веб-страница вместе с файлом code-behind компилируется в отдельную сборку, из-за чего в код-модели появляются сотни «‎проектов» (по количеству файлов). В результате, любой анализ, имеющий квадратичную сложность, начинает работать слишком долго.
  • Желание и готовность принимать решения в своей зоне ответственности — от продуктовых до архитектурных. Мы формулируем задачи в терминах пользовательской проблемы, а не готового решения. Более опытные коллеги, наши продуктовые менеджеры и техлиды всегда смогут подсказать вам, как сделать лучше, но они не будут загонять вас в рамки своего видения.

Что еще:

  • Вы сможете воплощать свои собственные идеи (мы ожидаем, что они у вас будут), улучшая свою жизнь (и жизнь других программистов). Многие возможности продуктов JetBrains появились именно потому, что их не хватало кому-то из наших разработчиков.
  • Плюсом будет опыт разработки компиляторов или IDE.

У нас хорошо:

Мы предлагаем вам присоединиться к нашей команде, чтобы вместе разрабатывать продукты, которыми ежедневно пользуются сотни тысяч человек. В JetBrains плоская (горизонтальная) организационная структура, и должностной рост практически отсутствует, но есть возможности профессионального и зарплатного роста.

Компания также предлагает целый ряд преимуществ, включая гибкий график работы, ДМС, 5 недель оплачиваемого отпуска, языковые курсы и многое другое (точный список зависит от конкретного офиса и/или режима работы).