Ich beginne nicht mit meinem typischen "Hallo, Habr! Wir haben hier eine weitere coole Veröffentlichung. "Und mit" Hallo, mein Name ist Nastya, ich bin PMM bei JetBrains und ich bin für unsere C ++ - Tools verantwortlich. " Oder auch nicht, ich werde es noch einmal versuchen: "Hallo, ein C ++ - Entwickler mit 8 Jahren Erfahrung schreibt Ihnen, der vor 5 Jahren dieselbe Anwendung in seiner geliebten und vertrauten Traumfirma - JetBrains - gefunden hat, und dann lief die Uhr plötzlich an einem Tag aus, und Ideen bleiben alle hängen. “
Nein, dies ist kein traditioneller Beitrag über die Suche nach Kandidaten für eine freie Stelle. Ich werde versuchen, darüber zu sprechen,
warum wir verschiedene Tools für C ++ haben und
welche Ideen und Pläne wir für sie haben und warum
Sie C ++ nicht vergessen, wenn Sie als Entwickler aufhören, darauf zu schreiben, und PMM werden (Spoiler, wenn Da Sie kein Mitglied des C ++ - Sprachstandardisierungsausschusses sind, haben Sie gute Chancen, eine Sprache noch besser zu lernen. Und wenn Sie danach als PMM daran teilnehmen möchten, freue ich mich über Ihren Lebenslauf unter
anastasia.kazakova@jetbrains.com .
Warum können Sie nicht einfach eine IDE für C ++ erstellen?
Vielen scheint es sehr einfach zu sein, einen Parser für eine IDE aus einem C ++ - Sprachcompiler zu erstellen. Auf den Konferenzen ACCU, C ++ Now und CppCon vor einigen Jahren begann ich darüber zu sprechen, warum die Dinge nicht so einfach sind. Beispielsweise können Sie Datensätze aus dem Jahr 2017 mit ACCU (
Ein Blick auf C ++ durch die Brille eines Sprachwerkzeugs ) und CppCon (
Neue Standards zur Rettung: die Ansicht durch die Brille einer IDE )
anzeigen . Wichtige Punkte: Je intelligenter die Umgebung, desto schwieriger ist es mit C ++:
- Aufrechterhaltung einer guten Editorleistung (und Reaktionsfähigkeit),
- um mit falschem Code arbeiten zu können (der Compiler gibt nur einen Fehler aus und hört auf zu arbeiten), und
- Denken Sie nicht in Übersetzungseinheiten (TU), sondern im Maßstab des gesamten Projekts (weil Sie beim Umbenennen genau das Kontextsymbol und nicht nur den gleichen Namen und das gesamte Projekt wünschen).
Im Jahr 2014 wurde also nicht eine, sondern bis zu zwei (oder noch korrekter 3) Umgebungen für die C ++ - Entwicklung geboren. Und alles passierte ganz plötzlich. Wir haben gerade Objective-C in AppCode ausgeführt, und dann stellte sich heraus, dass wir einen C ++ - Parser geschrieben haben. Und los geht's! Übrigens habe ich diese lustige Geschichte in einem Interview auf der jüngsten C ++ Russia 2019-Konferenz in Moskau erzählt:
Infolgedessen entschied sich ein Teil des Teams für eine IDE, die auf der IntelliJ Platform - CLion basiert. Der andere Teil begann, einen anderen Ansatz in einer anderen Architektur zu implementieren - ReSharper C ++, eine Erweiterung für Visual Studio. Und dann erschien ein weiterer Parser auf Clangd-Basis. Im Allgemeinen haben wir mehrere Produkte und viele Parser.
Dreiköpfiger Drache und wie man ihn verkauft
Gleichzeitig haben unsere Produkte für C ++ ein etwas anderes Publikum.
CLion konzentriert sich auf die plattformübergreifende Entwicklung in C ++,
dh für diejenigen, die IDE auf mehreren Plattformen ausführen möchten (einschließlich Linux, wo es nicht viele Optionen gibt). Dies ist eine freistehende voll funktionsfähige Umgebung, in der viele Integrationen (direkt und über Plugins, sowohl von Drittanbietern als auch von uns) mit anderen Tools (Valgrind Memcheck, Google Sanitizers, DTrace, Perf, Conan) und Sprachen (Python, Rust, Swift, Kotlin / Native) möglich sind ) In CLion arbeiten wir jetzt daran,
den Embedded-Entwicklungsmarkt zu unterstützen . IDE ist im Finanzsektor, auf dem Entwicklungsmarkt für selbstfahrende Autos und in anderen Bereichen beliebt. Wir wurden sogar kürzlich in
einer BMW Anzeige gezeigt .
ReSharper C ++ ist eine Erweiterung für Visual Studio, die für diejenigen entwickelt wurde, die in einer Windows-Umgebung entwickeln und sich auf die entsprechende Toolchain (msbuild, MSVC) konzentrieren. Hier versuchen wir nicht, die Funktionen zu implementieren, die bereits in Visual Studio vorhanden sind, sondern die Arbeit mit Code bequemer, schneller und produktiver zu gestalten, insbesondere mit modernem C ++. Daher verfügt das Produkt über viele coole Geek-Funktionen, die Sie zu einem C ++ - Entwicklungsguru machen können. Jetzt können Sie die aktive Arbeit sehen, die wir in ReSharper C ++ zur Unterstützung der Entwickler von Spielen auf der Unreal Engine leisten. Dies ist ziemlich logisch, da das Hauptpublikum solcher Spiele unter Windows in einer MS-Umgebung entwickelt wird. Daher haben wir die
Leistungsoptimierung und Besonderheiten speziell für Spiele auf UE4 aufgegriffen .
Die C ++ - Unterstützung von CLion ist auch in
AppCode (wo sie tatsächlich ihren Ursprung hat) und
Android Studio (das Google basierend auf unserer IntelliJ-Plattform ausführt) vorhanden.
Und um dies den Benutzern irgendwie zu erklären, haben wir eine Marketingkampagne entwickelt, die wir "
Weil C ++" nannten. Wenn Sie jemals unseren Stand auf C ++ - Konferenzen gesehen oder Aufzeichnungen von der
C ++ Now- Konferenz (die wir als Videosponsoren unterstützen) gesehen oder grüne Flaschen oder C ++ - Symbole als Handzettel genommen haben, werden Sie genau verstehen, worum es geht:

Aber was ist mit Einhörnern?
Das Einhorn bei all dieser Vielfalt ist jetzt eins - ich bin es. Wenn Sie mit dem Konzept „Einhorn in JetBrains“ nicht vertraut sind, finden Sie hier einen Beitrag von
abreslav , der die
Position von PMM in JetBrains ziemlich genau beschreibt. Und wir haben einmal viel Energie (geistig und körperlich) in die PMM Summer School investiert und viel über uns selbst erkannt, während wir anderen erzählten, wer wir sind und was wir tun.
paullarionov hier auf Habré erzählte, wie es war (gleichzeitig gibt es Links zu Folien von Vorträgen). Der Betrachter ist nicht von JetBrains, wenn jemand interessiert ist.
Ich bin anfangs keine Person aus dem Marketing. Ich bin aus der C / C ++ - Entwicklung zu JetBrains gekommen: 5 Jahre im Embedded-Outsourcing, 3 Jahre in Yota / Roox / Scartel (es gibt viele Namen, im Grunde einer) haben PCRF durchgeführt und alles optimiert, was schlecht geflogen ist (und dann
auf Habré darüber geschrieben ). und dann plötzlich ... Tatsächlich habe ich mit C ++ nicht weniger geschnitten. Natürlich schreibe ich keine vorgefertigten kommerziellen Systeme darauf, sondern beschäftige mich mit den Feinheiten der Sprache, unterbreche die Unterstützung in der IDE zusammen mit unserer tapferen Qualitätssicherung und beschreibe alles in Produktblogs. Ich bewerte, wie gut technische Redakteure dieses oder jenes Szenario der nächsten Funktion gut beschrieben haben, kommuniziere ständig mit Endbenutzern (dh C ++ - Entwicklern) und zeige ihnen alle Arten von „interessanten Fällen“. Ich diskutiere Produktpläne und aktuelle Probleme mit dem Team, ich arbeite mit Entwickleranwälten und der Community zusammen. Außerdem haben wir begonnen, enger mit dem Normungsausschuss zu kommunizieren und zu seinen Sitzungen zu gehen. Ich spreche auch gerne auf Konferenzen
über C ++ und sein Ökosystem und organisiere
Treffen der C ++ - Community in St. Petersburg.
Die Produkte für PMM haben jedoch weniger technische Aufgaben - Werbekampagnen, Konferenzvorbereitung, verschiedene Marketingmaterialien und mehr. Dies alles steht auch auf meiner ständig wachsenden TODO-Liste.
Wenn Sie bis zu diesem Ort gelesen haben und festgestellt haben, dass der Traumjob wahrscheinlich direkt neben Ihnen liegt, haben wir
zwei offene
Stellen , bei denen es im Wesentlichen um dasselbe geht. Ich habe nicht vor, JetBrains zu verlassen, aber die Zeit in Tagen läuft schnell ab. Deshalb brauche ich einen weiteren Kopf, der mir hilft, viele bestehende Ideen zu verwirklichen und uns neue Ideen zu bringen. Aufgaben werden größtenteils auf ReSharper C ++ basieren und sind natürlich auch üblich. Weil C ++, wie wir sagen;)
PS Schreibe kühne Fragen in die Kommentare - ich antworte gerne auf Habré!
Und komm, es wird Spaß machen! Der Antrieb zur Entwicklung garantiert!