Напиши текст вакансии для должности "Software Developer (Razor/Blazor Support)". Название компании: "JetBrains". Расположение: Санкт-Петербург. График работы: Гибкий график. Опыт работы: Более 6 лет. Ключевые навыки: 'Git', 'C#', 'ASP.NET', '.NET Framework', 'SQL', 'Razor', 'Blazor'

Отдел 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 недель оплачиваемого отпуска, языковые курсы и многое другое (точный список зависит от конкретного офиса и/или режима работы).