Some technical lyrics about C ++ Tools from JetBrains, and what's the point about unicorns
I will not start with my typical “Hello, Habr! We have another cool release here ”, but from“ Hi, my name is Nastya, I am a PMM in JetBrains and I am responsible for our tools for C ++ ” Or not, I will try again, like this: “Hello, a C ++ developer with 8 years of experience, who 5 years ago found the same application in his beloved and familiar dream company, JetBrains, wrote you, and then the day suddenly ended up in hours, but ideas are all twig. ”
No, this is not a traditional post about finding candidates for a job. I will try to tell you about why we have several tools for C ++ and what ideas and plans we have about them , and why you will not forget C ++ if you stop writing it as a developer and become PMM (spoiler, If you are not a member of the C ++ Standardization Committee, then you have a greater chance of learning the language even better). And if after that you want to participate in this role as PMM, then I will be happy with your resume at anastasia.kazakova@jetbrains.com .
Why not just take an IDE for C ++?
Many people think that it is very easy to make an IDE parser from the C ++ compiler. At ACCU, C ++ Now and CppCon conferences a couple of years ago, I began to explain why things are not so simple. For example, you can see the records from 2017 with the ACCU ( A look at the tool ) and the CppCon ( New standards for the rescue ). Key points: the smarter the environment, the harder in the case of C ++:
maintain good editor performance (and responsiveness),
be able to work with incorrect code (something to the compiler - it will simply give an error and stop working), and
“To think” not in translation units (TU), but on the scale of the whole project (because Rename you want the context symbol, and not just the same name, and it is on the whole project).
So back in 2014, not one, but 2 (or even more correctly 3) environments for C ++ development were born. And it all happened quite suddenly. We just did Objective-C in AppCode, and then it turned out that we are writing a C ++ parser. And rushed! By the way, I told this funny story in an interview at the recently held C ++ Russia 2019 conference in Moscow: ')
As a result, part of the team decided to make an IDE based on the IntelliJ Platform - CLion platform. And the other part began to implement a different approach in a different architecture - ReSharper C ++, an extension for Visual Studio. And then there was an additional parser based on clangd. In general, we have several products and a lot of 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, those who want to run IDE on several platforms (including Linux, where there are very few options). This is a free-standing 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 to support the market for embedded-development . IDE is popular in the financial sector, in the market for the development of self-driving cars and other areas. Recently we were even shown in a BMW ad .
ReSharper C ++ , an extension for Visual Studio, is intended for those who are developing in the Windows environment and are oriented to 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 the code more convenient, fast and productive, especially with modern C ++. Therefore, the product has many 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 game developers on the Unreal Engine. This is quite logical, since the main audience of such games is developed on Windows, in MS-environment. Therefore, we started optimizing performance and special features specifically for games on UE4 .
Also, C ++ support from CLion is present in AppCode (where it actually originated) and Android Studio (which Google does based on our IntelliJ Platform platform).
And in order to somehow explain this to users, we invented a marketing campaign, which was called Because C ++ . If you have ever seen our booth at C ++ conferences, or watched the 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:
And what about the unicorns?
The unicorn in all this diversity is now alone - it is me. If you are not familiar with the concept of “unicorn in JetBrains”, then here is a post from abreslav , in which the position of PMM in JetBrains is described quite accurately. We also 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. paullarionovhere on Habré told how it was (at the same time there are links to lecture slides). The participant's view is not from JetBrains, if anyone is interested.
I am not a person from marketing initially. I came to JetBrains from development in C / C ++: 5 years in embedded-outsource, 3 years in Yota / Roox / Scartel (there are many names, one essence) did PCRF and optimized everything that flew badly (and then wrote about it on Habré ) , and then all of a sudden ... Actually, I didn’t cross over with C ++ less. Of course, I do not write ready-made commercial systems on it, but I delve into the intricacies of the language, break support in the IDE along with our brave QA, then describe it all in product blogs. I estimate how well technical writers have described one or another scenario of using a regular feature, constantly communicate with end users (that is, C ++ developers) and show them all “interesting cases”. I discuss product plans and current problems with the team, working with developer lawyers and the community. In addition, we began to communicate more closely with the Standardization Committee and go to its meetings. I also like to talk about C ++ and its ecosystem at conferences and organize meetings of the C ++ community in St. Petersburg.
But there are also less technical tasks on products for PMM — advertising campaigns, conference preparation, various marketing materials, and so on. This is also now in my constantly growing TODO list.
If you have read this far and understood that the dream job is probably right here next to you, then we have two vacancies that are essentially the same. I do not plan to leave JetBrains, but the time in the day is rapidly ending, so I need another head that will help me to implement many of the existing ideas and bring us new ideas. Tasks will be largely in ReSharper C ++ and, of course, common too. Because C ++, as we say;)
PS Write boldly questions in the comments - I love to answer Habré!
And come, it will be fun! The Drive to Develop is guaranteed!