Начну не с моего типичного “Привет, Хабр! У нас тут очередной крутой релиз”, а с “Привет, меня зовут Настя, я ПММ в JetBrains и я отвечаю за наши инструменты для C++”. Или нет, попробую еще раз, вот так: “Привет, пишет вам C++ разработчик с 8-летним стажем, который 5 лет назад нашел-таки себе применение в любимой и знакомой компании мечты – JetBrains, а потом в сутках внезапно закончились часы, а идеи всё прут”.
Нет, это не традиционный пост о поисках кандидатов на вакансию. Я попытаюсь рассказать про то, почему инструментов для C++ у нас несколько и какие есть идеи и планы у нас на их счет, а еще почему вы не забудете C++, если перестанете писать на нем как разработчик, а станете PMM-ом (спойлер, если вы не член комитета стандартизации языка C++, то у вас большие шансы узнать язык даже лучше). А если после этого вам захочется поучаствовать в этом в роли PMM-а, то я буду рада вашим резюме на anastasia.kazakova@jetbrains.com.
Многим кажется, что из компилятора языка C++ очень легко сделать парсер для IDE. На конференциях ACCU, C++Now и CppCon пару лет назад я стала рассказывать, почему все не так просто. Например, можно посмотреть записи с 2017 года с ACCU (A look at C++ through the glasses of a language tool) и CppCon (New standards to the rescue: the view through an IDE’s glasses). Основные тезисы: чем умнее среда, тем тяжелее в случае C++:
Так что в далеком 2014 году у нас зародились не одна, а целых 2 (или даже правильнее сказать 3) среды для разработки на C++. Причем все случилось довольно внезапно. Просто мы делали Objective-C в AppCode, а потом оказалось, что мы пишем парсер C++. И понеслась! Эту забавную историю, кстати, я рассказала в интервью на недавно прошедшей в Москве конференции C++ Russia 2019:
В итоге, часть команды решила делать IDE на основе платформы IntelliJ Platform — CLion. А другая часть стала реализовывать иной подход в другой архитектуре — ReSharper C++, расширение для Visual Studio. А потом еще появился дополнительный парсер на базе clangd. В общем, у нас и продуктов несколько, и парсеров много.
При этом у наших продуктов для C++ несколько разная аудитория.
CLion — ориентирован на кросс-платформенную разработку на C++, то есть на тех, кто хочет запускать IDE на нескольких платформах (включая Linux, где вариантов вообще немного). Это отдельностоящая полнофункциональная среда, в которой множество интеграций (напрямую и через плагины, как сторонние, так и наши) с другими инструментами (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) и языками (Python, Rust, Swift, Kotlin/Native). Именно в CLion мы сейчас работаем в сторону поддержки рынка Embedded-разработки. IDE популярна в финансовом секторе, на рынке разработки self-driving cars и других областях. Недавно нас даже показали в рекламе BMW.
ReSharper C++ — расширение для Visual Studio, предназначено для тех, кто занимается разработкой в Windows-окружении и ориентируется на соответствующий тулчейн (msbuild, MSVC). Здесь мы не пытаемся реализовывать те возможности, которые и так есть в Visual Studio, но стараемся сделать более удобной, быстрой и продуктивной работу с кодом, особенно с современным C++. Поэтому в продукте много классных гиковских фич, которые могут сделать вас гуру разработки на C++. Сейчас можно заметить активную работу, которую мы делаем в ReSharper C++ в сторону поддержки разработчиков игр на Unreal Engine. Это вполне логично, так как основная аудитория таких игр разрабатывает именно на Windows, в MS-окружении. Поэтому мы занялись оптимизацией производительности и специальными возможностями именно для игр на UE4.
Также C++ поддержка из CLion присутствует в AppCode (где она, собственно, и зародилась) и Android Studio (которую делает Google на основе нашей платформы IntelliJ Platform).
А чтобы это все как-то объяснять пользователям, мы придумали маркетинговую кампанию, которую назвали Because C++. Если вы хоть раз видели наш стенд на конференциях по C++, или смотрели записи с конференции C++Now (которую мы поддерживаем как видеоспонсоры), или брали в качестве раздатки зеленые бутылочки или значки C++, вы точно поймете, о чем речь:
Единорог на всем этом разнообразии сейчас один — это я. Если вы еще не знакомы с концепцией “единорог в JetBrains”, то вот вам пост от abreslav, в котором довольно точно описывается позиция PMM в JetBrains. А еще мы когда-то вложили много сил (душевных и физических) в PMM Summer School и осознали многое про себя, пока рассказывали другим, кто мы и что мы делаем. paullarionov вот тут на Хабре рассказывал, как это было (заодно есть ссылки на слайды лекций). Взгляд участника не из JetBrains, если кому интересно.
Я человек не из маркетинга изначально. Пришла в JetBrains из разработки на С/C++: 5 лет в embedded-аутсорсе, 3 года в Yota/Roox/Scartel (названий много, суть одна) делала PCRF и оптимизировала все, что плохо летало (а потом писала про это на Хабре), а потом вдруг… На самом деле, с C++ я меньше пересекаться не стала. Я, конечно, не пишу на нем готовые коммерческие системы, но копаюсь в тонкостях языка, ломаю поддержку в IDE вместе с нашими доблестными QA, потом описываю это все в блогах продуктов. Оцениваю, насколько технические писатели хорошо описали тот или иной сценарий использования очередной фичи, постоянно общаюсь с конечными пользователями (то есть разработчиками на C++) и показываю им всякие “интересные случаи”. Обсуждаю планы продукта и текущие проблемы с командой, работаю с девелопер-адвокатами и сообществом. К тому же, мы стали более тесно общаться с комитетом по стандартизации и ездить на его встречи. А еще я люблю поговорить про C++ и его экосистему на конференциях и организую встречи сообщества C++ в Питере.
Но на продуктах для PMM-а есть и менее технические задачи — рекламные кампании, подготовки конференций, различные маркетинговые материалы и прочее. Это все тоже сейчас в моем постоянно растущем TODO-листе.
Если вы дочитали до этого места и поняли, что работа мечты, вероятно, вот тут совсем рядом с вами, то у нас есть две вакансии, которые по сути про одно и тоже. Я не планирую покидать JetBrains, но время в сутках стремительно заканчивается, поэтому мне нужна еще одна голова, которая поможет мне реализовывать множество существующих идей и принесет нам новые идеи. Задачи будут во многом по ReSharper C++ и, конечно, общие тоже. Because C++, как у нас говорят ;)
P.S. Пишите смело вопросы в комментарии — я люблю отвечать на Хабре!
И приходите, будет весело! The Drive to Develop гарантирован!
Нет, это не традиционный пост о поисках кандидатов на вакансию. Я попытаюсь рассказать про то, почему инструментов для C++ у нас несколько и какие есть идеи и планы у нас на их счет, а еще почему вы не забудете C++, если перестанете писать на нем как разработчик, а станете PMM-ом (спойлер, если вы не член комитета стандартизации языка C++, то у вас большие шансы узнать язык даже лучше). А если после этого вам захочется поучаствовать в этом в роли PMM-а, то я буду рада вашим резюме на anastasia.kazakova@jetbrains.com.
Почему нельзя просто так взять и сделать IDE для C++?
Многим кажется, что из компилятора языка C++ очень легко сделать парсер для IDE. На конференциях ACCU, C++Now и CppCon пару лет назад я стала рассказывать, почему все не так просто. Например, можно посмотреть записи с 2017 года с ACCU (A look at C++ through the glasses of a language tool) и CppCon (New standards to the rescue: the view through an IDE’s glasses). Основные тезисы: чем умнее среда, тем тяжелее в случае C++:
- поддерживать хорошую производительность (и отзывчивость) редактора,
- уметь работать с некорректным кодом (компилятору-то что — он просто ошибку выдаст и прекратит работу), и
- “думать” не в единицах трансляции (TU), а в масштабах всего проекта (потому что Rename вы хотите именно контекстного символа, а не просто совпадающего по имени, и именно на всем проекте).
Так что в далеком 2014 году у нас зародились не одна, а целых 2 (или даже правильнее сказать 3) среды для разработки на C++. Причем все случилось довольно внезапно. Просто мы делали Objective-C в AppCode, а потом оказалось, что мы пишем парсер C++. И понеслась! Эту забавную историю, кстати, я рассказала в интервью на недавно прошедшей в Москве конференции C++ Russia 2019:
В итоге, часть команды решила делать IDE на основе платформы IntelliJ Platform — CLion. А другая часть стала реализовывать иной подход в другой архитектуре — ReSharper C++, расширение для Visual Studio. А потом еще появился дополнительный парсер на базе clangd. В общем, у нас и продуктов несколько, и парсеров много.
Трехголовый дракон, и как его продавать
При этом у наших продуктов для C++ несколько разная аудитория.
CLion — ориентирован на кросс-платформенную разработку на C++, то есть на тех, кто хочет запускать IDE на нескольких платформах (включая Linux, где вариантов вообще немного). Это отдельностоящая полнофункциональная среда, в которой множество интеграций (напрямую и через плагины, как сторонние, так и наши) с другими инструментами (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) и языками (Python, Rust, Swift, Kotlin/Native). Именно в CLion мы сейчас работаем в сторону поддержки рынка Embedded-разработки. IDE популярна в финансовом секторе, на рынке разработки self-driving cars и других областях. Недавно нас даже показали в рекламе BMW.
ReSharper C++ — расширение для Visual Studio, предназначено для тех, кто занимается разработкой в Windows-окружении и ориентируется на соответствующий тулчейн (msbuild, MSVC). Здесь мы не пытаемся реализовывать те возможности, которые и так есть в Visual Studio, но стараемся сделать более удобной, быстрой и продуктивной работу с кодом, особенно с современным C++. Поэтому в продукте много классных гиковских фич, которые могут сделать вас гуру разработки на C++. Сейчас можно заметить активную работу, которую мы делаем в ReSharper C++ в сторону поддержки разработчиков игр на Unreal Engine. Это вполне логично, так как основная аудитория таких игр разрабатывает именно на Windows, в MS-окружении. Поэтому мы занялись оптимизацией производительности и специальными возможностями именно для игр на UE4.
Также C++ поддержка из CLion присутствует в AppCode (где она, собственно, и зародилась) и Android Studio (которую делает Google на основе нашей платформы IntelliJ Platform).
А чтобы это все как-то объяснять пользователям, мы придумали маркетинговую кампанию, которую назвали Because C++. Если вы хоть раз видели наш стенд на конференциях по C++, или смотрели записи с конференции C++Now (которую мы поддерживаем как видеоспонсоры), или брали в качестве раздатки зеленые бутылочки или значки C++, вы точно поймете, о чем речь:
А что же единороги?
Единорог на всем этом разнообразии сейчас один — это я. Если вы еще не знакомы с концепцией “единорог в JetBrains”, то вот вам пост от abreslav, в котором довольно точно описывается позиция PMM в JetBrains. А еще мы когда-то вложили много сил (душевных и физических) в PMM Summer School и осознали многое про себя, пока рассказывали другим, кто мы и что мы делаем. paullarionov вот тут на Хабре рассказывал, как это было (заодно есть ссылки на слайды лекций). Взгляд участника не из JetBrains, если кому интересно.
Я человек не из маркетинга изначально. Пришла в JetBrains из разработки на С/C++: 5 лет в embedded-аутсорсе, 3 года в Yota/Roox/Scartel (названий много, суть одна) делала PCRF и оптимизировала все, что плохо летало (а потом писала про это на Хабре), а потом вдруг… На самом деле, с C++ я меньше пересекаться не стала. Я, конечно, не пишу на нем готовые коммерческие системы, но копаюсь в тонкостях языка, ломаю поддержку в IDE вместе с нашими доблестными QA, потом описываю это все в блогах продуктов. Оцениваю, насколько технические писатели хорошо описали тот или иной сценарий использования очередной фичи, постоянно общаюсь с конечными пользователями (то есть разработчиками на C++) и показываю им всякие “интересные случаи”. Обсуждаю планы продукта и текущие проблемы с командой, работаю с девелопер-адвокатами и сообществом. К тому же, мы стали более тесно общаться с комитетом по стандартизации и ездить на его встречи. А еще я люблю поговорить про C++ и его экосистему на конференциях и организую встречи сообщества C++ в Питере.
Но на продуктах для PMM-а есть и менее технические задачи — рекламные кампании, подготовки конференций, различные маркетинговые материалы и прочее. Это все тоже сейчас в моем постоянно растущем TODO-листе.
Если вы дочитали до этого места и поняли, что работа мечты, вероятно, вот тут совсем рядом с вами, то у нас есть две вакансии, которые по сути про одно и тоже. Я не планирую покидать JetBrains, но время в сутках стремительно заканчивается, поэтому мне нужна еще одна голова, которая поможет мне реализовывать множество существующих идей и принесет нам новые идеи. Задачи будут во многом по ReSharper C++ и, конечно, общие тоже. Because C++, как у нас говорят ;)
P.S. Пишите смело вопросы в комментарии — я люблю отвечать на Хабре!
И приходите, будет весело! The Drive to Develop гарантирован!