
A bit of technical lyrics about C ++ Tools from JetBrains, and what do unicorns have to do with it
I’m not starting with my typical “Hello, Habr! We have another cool release here, ”and with“ Hello, my name is Nastya, I’m PMM at JetBrains and I am responsible for our C ++ tools. ” Or not, I’ll try again, like this: “Hello, a C ++ developer with 8 years of experience writes to you, who 5 years ago found the same application in his beloved and familiar dream company - JetBrains, and then the clock suddenly ran out in a day, and ideas all stick. ”
No, this is not a traditional post about searching for candidates for a vacancy. I’ll try to talk about why we have several C ++ tools and what ideas and plans we have for them , and why you won’t forget C ++ if you stop writing on it as a developer, and become PMM (spoiler, if you are not a member of the C ++ language standardization committee, then you have a good chance of learning a language even better). And if after that you want to participate in this as a PMM, then I will be glad to have your resume at anastasia.kazakova@jetbrains.com .
It seems to many that it is very easy to make a parser for an IDE from a C ++ language compiler. At the ACCU, C ++ Now and CppCon conferences a couple of years ago, I began to talk about why things are not so simple. For example, you can see records from 2017 with ACCU ( A look at C ++ through the glasses of a language tool ) and CppCon ( New standards to the rescue: the view through an IDE's glasses ). Key points: the smarter the environment, the harder it is with C ++:
So back in 2014, not one, but as many as 2 (or even more correctly 3) environment for C ++ development was born. And it all happened quite suddenly. We just did Objective-C in AppCode, and then it turned out that we were writing a C ++ parser. And away we go! By the way, I told this funny story in an interview at the recent C ++ Russia 2019 conference in Moscow:
As a result, part of the team decided to make an IDE based on the IntelliJ Platform - CLion. And the other part began to implement a different approach in a different architecture - ReSharper C ++, an extension for Visual Studio. And then another clangd-based parser appeared. In general, we have several products and many parsers.
At the same time, our products for C ++ have a slightly different audience.
CLion is focused on cross-platform development in C ++, that is, for those who want to run IDE on several platforms (including Linux, where there are not many options). This is a freestanding full-featured environment in which many integrations (directly and through plug-ins, both third-party and ours) with other tools (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) and languages (Python, Rust, Swift, Kotlin / Native ) It is in CLion that we are now working towards supporting the Embedded development market . IDE is popular in the financial sector, in the development market of self-driving cars and other areas. We were even recently shown in a BMW ad .
ReSharper C ++- An extension for Visual Studio, designed for those who are developing in a Windows environment and focus on the appropriate toolchain (msbuild, MSVC). Here we are not trying to implement the features that are already in Visual Studio, but we are trying to make working with code more convenient, fast and productive, especially with modern C ++. Therefore, the product has a lot of cool geek features that can make you a C ++ development guru. Now you can see the active work that we are doing in ReSharper C ++ towards supporting developers of games on the Unreal Engine. This is quite logical, since the main audience of such games is developed on Windows, in MS-environment. Therefore, we took up the performance optimization and special features specifically for games on UE4 .
Also, C ++ support from CLion is present in AppCode (where it, in fact, originated) and Android Studio (which Google does based on our IntelliJ Platform).
And in order to somehow explain this to users, we came up with a marketing campaign, which we called Because C ++ . If you have ever seen our stand at C ++ conferences, or watched recordings from the C ++ Now conference (which we support as video sponsors), or took green bottles or C ++ icons as a handout, you will understand exactly what this is about:

The unicorn on all this diversity is now one - it's me. If you are not familiar with the concept of “unicorn in JetBrains”, then here's a post from abreslav , which pretty accurately describes the position of PMM in JetBrains . And we once invested a lot of energy (mental and physical) in PMM Summer School and realized a lot about ourselves while telling others who we are and what we do. paullarionov 's here Habré told how it was (at the same time contains links to lecture slides). The viewer is not from JetBrains, if anyone is interested.
I am not a person from marketing initially. I came to JetBrains from C / C ++ development: 5 years in embedded outsourcing, 3 years in Yota / Roox / Scartel (there are a lot of names, basically one) did PCRF and optimized everything that flew badly (and then wrote about it on Habré), and then suddenly ... In fact, with C ++ I did not intersect less. Of course, I don’t write ready-made commercial systems on it, but delve into the intricacies of the language, break the support in the IDE along with our valiant QA, then describe it all in product blogs. I evaluate how well technical writers have described this or that scenario of the next feature well, constantly communicate with end users (that is, C ++ developers) and show them all kinds of “interesting cases”. I discuss product plans and current problems with the team, I work with developer lawyers and the community. In addition, we began to communicate more closely with the standardization committee and go to his meetings. I also like to talk about C ++ and its ecosystem at conferences and organize meetings of the C ++ community in St. Petersburg.
But the products for PMM have less technical tasks - advertising campaigns, conference preparation, various marketing materials and more. This is all on my ever-growing TODO list too.
If you read up to this place and realized that the dream job is probably right here next to you, then we have two vacancies , which are essentially about the same thing. I do not plan to leave JetBrains, but the time in days is rapidly running out, so I need another head that will help me realize many existing ideas and bring us new ideas. Tasks will be largely based on ReSharper C ++ and, of course, common too. Because C ++, as we say;)
PS Feel free to write questions in the comments - I like to answer to Habré!
And come, it will be fun! The Drive to Develop guaranteed!
No, this is not a traditional post about searching for candidates for a vacancy. I’ll try to talk about why we have several C ++ tools and what ideas and plans we have for them , and why you won’t forget C ++ if you stop writing on it as a developer, and become PMM (spoiler, if you are not a member of the C ++ language standardization committee, then you have a good chance of learning a language even better). And if after that you want to participate in this as a PMM, then I will be glad to have your resume at anastasia.kazakova@jetbrains.com .
Why can't you just get and make an IDE for C ++?
It seems to many that it is very easy to make a parser for an IDE from a C ++ language compiler. At the ACCU, C ++ Now and CppCon conferences a couple of years ago, I began to talk about why things are not so simple. For example, you can see records from 2017 with ACCU ( A look at C ++ through the glasses of a language tool ) and CppCon ( New standards to the rescue: the view through an IDE's glasses ). Key points: the smarter the environment, the harder it is with C ++:
- maintain good editor performance (and responsiveness),
- to be able to work with incorrect code (the compiler will just issue an error and stop working), and
- “Think” not in translation units (TU), but on the scale of the entire project (because Rename you want exactly the contextual symbol, and not just the same name, and on the whole project).
So back in 2014, not one, but as many as 2 (or even more correctly 3) environment for C ++ development was born. And it all happened quite suddenly. We just did Objective-C in AppCode, and then it turned out that we were writing a C ++ parser. And away we go! By the way, I told this funny story in an interview at the recent C ++ Russia 2019 conference in Moscow:
As a result, part of the team decided to make an IDE based on the IntelliJ Platform - CLion. And the other part began to implement a different approach in a different architecture - ReSharper C ++, an extension for Visual Studio. And then another clangd-based parser appeared. In general, we have several products and many parsers.
Three-headed dragon, and how to sell it
At the same time, our products for C ++ have a slightly different audience.
CLion is focused on cross-platform development in C ++, that is, for those who want to run IDE on several platforms (including Linux, where there are not many options). This is a freestanding full-featured environment in which many integrations (directly and through plug-ins, both third-party and ours) with other tools (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) and languages (Python, Rust, Swift, Kotlin / Native ) It is in CLion that we are now working towards supporting the Embedded development market . IDE is popular in the financial sector, in the development market of self-driving cars and other areas. We were even recently shown in a BMW ad .
ReSharper C ++- An extension for Visual Studio, designed for those who are developing in a Windows environment and focus on the appropriate toolchain (msbuild, MSVC). Here we are not trying to implement the features that are already in Visual Studio, but we are trying to make working with code more convenient, fast and productive, especially with modern C ++. Therefore, the product has a lot of cool geek features that can make you a C ++ development guru. Now you can see the active work that we are doing in ReSharper C ++ towards supporting developers of games on the Unreal Engine. This is quite logical, since the main audience of such games is developed on Windows, in MS-environment. Therefore, we took up the performance optimization and special features specifically for games on UE4 .
Also, C ++ support from CLion is present in AppCode (where it, in fact, originated) and Android Studio (which Google does based on our IntelliJ Platform).
And in order to somehow explain this to users, we came up with a marketing campaign, which we called Because C ++ . If you have ever seen our stand at C ++ conferences, or watched recordings from the C ++ Now conference (which we support as video sponsors), or took green bottles or C ++ icons as a handout, you will understand exactly what this is about:

But what about unicorns?
The unicorn on all this diversity is now one - it's me. If you are not familiar with the concept of “unicorn in JetBrains”, then here's a post from abreslav , which pretty accurately describes the position of PMM in JetBrains . And we once invested a lot of energy (mental and physical) in PMM Summer School and realized a lot about ourselves while telling others who we are and what we do. paullarionov 's here Habré told how it was (at the same time contains links to lecture slides). The viewer is not from JetBrains, if anyone is interested.
I am not a person from marketing initially. I came to JetBrains from C / C ++ development: 5 years in embedded outsourcing, 3 years in Yota / Roox / Scartel (there are a lot of names, basically one) did PCRF and optimized everything that flew badly (and then wrote about it on Habré), and then suddenly ... In fact, with C ++ I did not intersect less. Of course, I don’t write ready-made commercial systems on it, but delve into the intricacies of the language, break the support in the IDE along with our valiant QA, then describe it all in product blogs. I evaluate how well technical writers have described this or that scenario of the next feature well, constantly communicate with end users (that is, C ++ developers) and show them all kinds of “interesting cases”. I discuss product plans and current problems with the team, I work with developer lawyers and the community. In addition, we began to communicate more closely with the standardization committee and go to his meetings. I also like to talk about C ++ and its ecosystem at conferences and organize meetings of the C ++ community in St. Petersburg.
But the products for PMM have less technical tasks - advertising campaigns, conference preparation, various marketing materials and more. This is all on my ever-growing TODO list too.
If you read up to this place and realized that the dream job is probably right here next to you, then we have two vacancies , which are essentially about the same thing. I do not plan to leave JetBrains, but the time in days is rapidly running out, so I need another head that will help me realize many existing ideas and bring us new ideas. Tasks will be largely based on ReSharper C ++ and, of course, common too. Because C ++, as we say;)
PS Feel free to write questions in the comments - I like to answer to Habré!
And come, it will be fun! The Drive to Develop guaranteed!