「スピードは誰も拒否しない機能です」-JetBrainsのDmitry Zhemerovへのインタビュー

今日は金曜日であり、Habréの金曜日は何か異常なものにとって素晴らしい日です。 本日、IntelliJ IDEA、PyCharm、Kotlin、および他の多くのJetBrains製品に携わったDmitry yole Zhemerovとのインタビューに注目します。

私たちが話したこと:




カットシーンの下には、このインタビューのトランスクリプトがあります。

- こんにちは! これは「スライドなし」です。 本日、JetBrainsのベテランであるDmitry Zhemerovと卒業しました。 ディマ、あなた自身について少し話してみましょう:JetBrainsを含めて、あなたは何をしましたか?

2003年にJetBrainsに入社しました。 私は28番目または29番目の従業員でしたが、この間に多くのことをすることができました。 最初はOmeaプロジェクト開発の責任者でした。そのような情報アグリゲーター、つまり、メール、ニュース、RSSフィードなどのさまざまなソースから情報を収集するプログラムがありました。 彼は、それらすべてを検索し、整理、分類などを行うことを許可しました。 その後、Omeaプロジェクトは終了し、IntelliJ IDEAチームに切り替えました。 私は、IntelliJプラットフォームなどのエンティティの起源にいたと言うことができます。つまり、モノリシック開発環境IntelliJ IDEAを、Javaだけでなくさまざまな言語のIDEを構築できる基盤に変換することに従事していました。 多くの人がこれに参加したことは明らかですが、私もそこで多くのことをしました。 その後、このプラットフォームに基づいてさまざまなIDEに取り組みました。RubyMine、PyCharm、およびWebStormの両方をうまく処理できました。

-IDEAは現在、製品として、プラットフォームとしてどこに向かっていると思いますか? いくつかの停滞が発生したという感じがあります。IntelliJIDEAユーザーとしては、何も起きていないようです。 新しいバージョンが登場し、より高速に動作し、新しいフレームワークをサポートする可能性があります。 それはそうではありませんか?

より速くすることが最も重要です。 速度は誰も拒否しない機能です。 私たちは、ユーザーインターフェイスの品質と使いやすさに長い間投資してきました。 開発者としてのあなたの体験を変える大きな機能もいくつかの量で現れます。 たとえば、14番目のバージョンに登場したインラインデバッグ。 コードをステップスルーすると、すぐにコードが表示されます。エディターには、これらの行で計算された変数の値が表示されます。 または、例えば、その少し前に、いくつかのキャリッジのサポートがエディターに表示されました-これも大きな機能であり、多くの問題があります。 私たちの開発プロセスはそれほど先に計画されておらず、開発者が突然このアイデアを思い付くかもしれないというだけだからです。 させてください。」 彼は行って実行し、彼女はリリースに登場し、すべてが素晴らしいものになります。

- 約3年前、Oleg StepanovとMaxim ShafirovはJetBrainsのCEOになりました。 まず、なぜ2つあるのですか? CEOが一度に2人であるようなケースは覚えていません。 長年にわたって何が変わったのですか? おそらく、彼らにとってどのようなタスクと目標が設定されましたか?これがオープンな情報である場合、それはどれほど成功していますか? 会社で何が変わったのですか?

2人のCEO-オフィスが2つあるため、非常に便利であることがわかりました。 オレグはミュンヘンに住んでおり、マックスはサンクトペテルブルクに住んでおり、それぞれが主にオフィスで起こっていることに対して責任を負っています。 たくさんの仕事があり、どういうわけか彼らは彼らの間でこの仕事を共有しています。 Maxは現在、販売インフラストラクチャ全体、つまり、必要に応じて店舗内の社内情報システムに非常に積極的に関与しています。 そのため、ユーザーはこの場所で良い経験をすることができます。 Olegは、YouTrack、TeamCity、Upsourceに代表される動物園から統一されたソリューションを作成するために、非常に多くのサーバーツールに取り組んでいます。これらは簡単に配置でき、チーム内の開発プロセスに関するすべての問題を解決します。

- つまり、オフィスごとの部門に加えて、製品ごとの部門はまだありますか?

これは、製品の分野ではなく、活動分野の分野です。 私たちと、JetBrainsの他の皆と同様に、これは何らかの形で有機的に起こります。 このスキームを実装したとき、誰が何に責任を負うかについてすぐに合意することはできませんでした。このアクティビティの途中で、それに対処する必要があり、それに応じて、それを引き受けることができる人、彼女自身にそれを取る。

- この3年間の評価はどうですか? 世界的に何が変わったのですか?

原則として作業の編成という点では、JetBrainsは同じままでした。 たとえば、以前は会社のトップだったセルゲイ・ドミトリエフがまったく関与しなかったヴァシリエフスキー島の新しいオフィスに移転するなど、かなり大きなプロジェクトがいくつか発生しました。 または、たとえば、販売の組織で。 社内ではこの間に多くのことが変更されました。いくつかのことは素晴らしいことです。

-2人のCEO-これは現在進行中の実験ですか? その結果はすでに表示されていますか、それともまだ処理中ですか? または、原則として、グローバルな変更は予期されていませんでしたか?

いいえ、実際のところ、そもそもこの決定の動機は非常に単純でした。 ある時点で、セルゲイ・ドミトリエフは次のように述べました。 「さらにJetBrainsを実行し続けるか、作成されたJetBrainsをチームの他の人に任せて、他のアクティビティを行うことができます。」 この3年間、JetBrainsに気を取られることなく、またはJetBrainsに気を取られることなくほとんど何もせずに他の活動に成功しているという事実から判断すると、一般にすべてが判明しました。 JetBrainsはこの時間中に成長し、正常に壊れます。 このタスクは完全に完了しました。

- 古いサイトには、IntelliJ Labsで仕事を得た2003年の記録があります。 今、私たちはJetBrainsとして会社を知っています。 JetBrainsとIntelliJ Labsの関係について少し話していただけますか?

とても簡単です。 IntelliJ Labsは、会社の名前の由来です。 2000-2001年には、IntelliJ IDEAの最初のバージョンがIntelliJ SoftwareまたはIntelliJ Labsブランドでリリースされました。 それから、Javaだけでなく製品も作りたいことが明らかになったとき、「J」という文字の付いた名前は私たちにふさわしくありません。 最初に「J」という文字を付けて、JetBrainsという名前を思いつきました。 IntelliJ Labsは、当社のロシア法人であるINTELLIGEY LABS LLCの名前で保存されています。 したがって、JetBrainsは会社の本社の法人です。

- 2000年代半ばにあったJetBrainsと2015年モデルのJetBrains-あなたはそれらの間に違いを感じますか?もしそうなら、あなたは何が好きですか、何が好きではありませんか?

この規模の会社は、単に異なるレベルの個人的なつながりを持っていることは明らかです。 ミュンヘンからサンクトペテルブルクに来ると、オフィスを歩き回って、よく知らない人がたくさんいます。会社で働いてくれたり、誰かに会いに行ったり、ピザを持ってきただけです。 これらは私が知らない人々です。 彼らが何をしているのか分かりません。 肯定的なことは、JetBrainsが非常に長い間慢性的に人員不足であるということです。つまり、常に、利用可能な人よりも多くの仕事があるという状態がありました。 最近、非常に多くのプロジェクトで、この状態から抜け出したように思えます-すべてではなく、多くのプロジェクトです。 大まかに言えば、製品を本当に前進させるために必要なだけの人がいます。

-300人、400人いますか?

何かで400。

- これは主にピーターとミュンヘンですよね?

はい、ミュンヘンにはおそらく80人、それに応じてサンクトペテルブルクに400人います。

- 数百人。 配布はあなたにとって難しいことですか?

それが作り出すことは私には思えない。 原則として、サンクトペテルブルクのオフィスでしばらく働いていて、一緒に仕事をしているチームにすでに精通している人々はミュンヘンに向けて出発します。 したがって、何らかの関係を築く必要のある突然の人が別のオフィスにいるようなことはありません。 さらに、私たちはしばしばお互いに行きます。
自分でよくここに来ますか?」

2、3ヶ月ごとに私は間違いなくサンクトペテルブルクにいます。 さらに、ビデオ会議のスタンドアップが毎日行われています。つまり、毎日、ビデオ通信を通じてある程度の個人的なコミュニケーションが行われています。 私たちには、私たちが分散しているという事実のために問題がないように思えます。

さらに、私たちはもっと分散してほしいです。 たとえば、シリコンバレーで人々を雇いたいです。 そこにあるものすべてに満足しており、彼らは動きたくない人。

- 英語、ロシア語の使用言語はありますか?

ロシア語 コード内のコメントは常に英語であり、すべての内部コミュニケーションは常に英語であり、口頭でのコミュニケーションはこれらのまれなケースを除いて常にロシア語です。 私たちにはまだロシア語を話さない従業員が一定数いますが、もちろん彼らとは英語でコミュニケーションを取ります。

- なるほど。 もう1つの興味深い話です。 数週間前、Andrei Breslavは多くの人が注意を払った投稿をリリースしました。そこでは、一般的に、実際にプロダクトマネージャーを積極的に探していました。 この質問はここから来ています。製品マネージャーに不満を感じていますか?

プロダクトマーケティングマネージャー(PMM)と呼ばれるポジションの人材を探しています。 実際、非常に優れたチームがあります。 私の知る限り、私たちはこの立場で働くすべての人に満足しています。 アンドレイはコトリンで具体的に人を探していました。コトリンでは、現在PMMは存在しません。 あるいは、たとえば、IntelliJ IDEAには、製品マーケティングに従事しているAndrei Cheptsovが1人だけいます。 これは素晴らしい製品であり、複雑で、多くの異なる機能を備えています。そして、二人目、そしておそらく三人目にも仕事があることは明らかです。

- 約1年前、イリヤ・リジェンコフがコトリンに来ました。 彼はPMMの位置に来なかったのですか?

実際、イリヤは主にコトリン周辺の図書館とインフラストラクチャに関心があることが判明しました。 彼はKotlinのフレームワークを作成するチームを率いており、コードを自分で書いています。 Kotlinの新しいフレームワークを常に実験しています。 既にありますが、他のオプションを試して、より良い方法を探しています。

-Andrei Breslavはどうですか?

Andreiは、第一に言語のチーフデザイナーであり、第二に、最近まで、チーム全体のプロジェクトマネージャーでした。 私は最近、IDEチームの管理を彼から引き離しました-IntelliJ IDEAのプラグインに関与している5人の人がすでにおり、現在私は彼らのリーダーです。 Andreyは、プログラミングに十分な時間がないため、最近プログラミングを停止することにしました。 できるだけ早くリリースするよう努めており、現時点では、言語設計に関する未解決の質問がいくつかあります。 できるだけ早くそれらを閉じたいと思います、そして、Andreiは現在これに主に焦点を合わせています。

5人-IDEだけで?」 前回Kotlinチームと緊密に話をしたのは数年前のことで、私の意見では9人しかいませんでした。 Kotlinチームはそれ以来大きく成長したように見えますか?

現在20人以上の人がいます。

- つまり、会社は本当にKotlinに投資していますか?

はい

- 2、3年前、Java 8がリリースされるという感じがありました。それだけで、Kotlinはこれ以上必要ありません。 そして今、あなたはあなたの投資を増やすだけです。 彼に深刻な賭けをしていますか? 自分で書いていますか?

はい。現在、Kotlin'eで開発中のプロジェクトがいくつかありますが、私が個人的に望むほど多くはありません。 たとえば、YouTrackの次のバージョンはKotlinで書かれています。 未発表の製品が1つあり、Kotlinにも記載されています。 私が述べた新しいCRMシステムはすべて、Kotlinで最初から最後まで書かれています。 これは、ビジネス上の重要な決定であり、すべての販売が通過します。 私たちは販売のためにKotlinコードを信頼していますが、これは私には思えます、と言います。

彼らは常にマスターからKotlinを取得します。つまり、リリースバージョンには座りませんが、数日ごとに、収集したばかりのKotlinの最新バージョンにアップグレードします。 同時に、私たちは満足しています。すべてが機能しています。

Kotlin vs.について Java 8-実際、これはよくある誤解です。 まず第一に、Javaはそのレガシーとほとんど結びついています。 スライドなしの前号で、これも議論されました。 セルゲイ・ククセンコは、すべてを捨ててゼロから書くことは素晴らしいことだと言いました。 彼はおそらくライブラリと仮想マシンを念頭に置いていたでしょうが、Java言語の設計の観点から、かつて採用された決定事項もあります。 たとえば、Raw型、ワイルドカード、プリミティブ型と非プリミティブ型への分離など-これはどこにも行かず、Javaがどの程度開発されても、このレガシーは永遠に残ります。 それ自体、この後方互換性に縛られていないという事実、すでに解かれているという事実は、すでに私たちにいくつかの興味深いことをする機会を与えています。

さて、誰かにKotlinについて話し、時々レポートをするとき、最初の20分間はラムダについて言及しません-Kotlinのさまざまな機能を表示するだけです。 7番目と8番目のJavの間で発生した変更に影響を与えないものはすべてあります。Javaのこのすべての影響を受けない部分を改善するだけです。

それから、もちろん、ラムダ。 ラムダがあり、言語レベルのインライン化サポートがあるため、Java 8よりも優れています。 ポイントは、ラムダを使用して非常に単純な関数を循環させる場合です。たとえば、8より大きいすべての要素を見つけます。これを変換する単純な方法は、チェックする1つのメソッドで内部クラスを生成することですその数は8より大きい。その後、実際にはこのクラスのインスタンスを受け取り、コレクションの各要素に適用するフィルター関数があり、それがすべて呼び出されるコードがあります。

Javaでは、このようなものが機能します。 invokedynamicおよびメソッドハンドルを使用します。 したがって、この部分は実行時に生成されます。 Geekoutカンファレンスで学んだように、現在Javaはすべてをインライン化する方法を知りません。 そして、言語レベルのサポートがあります。 Filter関数はインラインに配置されるとだけ言っています。 つまり、ラムダ自体の内部にあるこのコードと関数本体自体は、呼び出した場所に直接書き込まれます。 したがって、パフォーマンスのオーバーヘッドがないことがわかります。 個別のオブジェクトを作成する必要はありません。 私たちには仮想的な挑戦はありません。 私たちのコードは、ラムダを使わずにすべてを手で書いた場合に起こることとまったく同じことをします。

- インラインの何らかの障害となるのはinvokedynamicであることを理解していますか?

いいえ、invokedynamicの場合とは言いませんが、インライン化は動作するため、ラムダとそれが送信される関数を介してラムダを実行する方法がわかりません。 おそらくいつか、JVMのこの欠陥は修正されるでしょう。 私の知る限り、これに関する作業は進行中ですが、コトリンでは言語レベルでこれが決定されています。

- なるほど。 そして、コトリンはいつ現れましたか? そのような考えはどのように思いついたのですか?

私が思い出すように、私たちは2010年の終わり頃に始めました。 私がすべてを思いついたのは直接だとは言いません。 ある時点で、Sergey Dmitriev(JetBrainsの創設者の1人-著者のメモ)に来て、JetBrainsに独自の言語があればクールだと言いました。 私にとっては自然な発展のように見えました。 私たちのスローガンは、ロシア語で「喜びを持って開発する」、「喜びを持って開発する」です。 リファクタリング、コンプライアンス、エラーの強調など、25種類の言語で非常にうまくいくことができるように、人々が本当に喜んで開発するためのツールの分野で多くのことを行っています。 とにかく、IDEが言語の欠陥のためにギャグを作成する必要があることがわかります。

たとえば、IDEAは、ラムダの形式で匿名クラスを表示できます。 Java 6またはJava 7を使用する場合、匿名クラス(新しいインスタンス、メソッド宣言、本体)を作成します。 IDEAでは、すべてラムダに崩壊します。 これは、言語不足のための純粋なプラグです。 私たちは、ギャグが必要ない言語を作成しようとするだけでよいと判断しました。

IDEAはもちろん有用であり、役立ちますが、何らかの松葉杖ではありません。 IDEプラグインと言語サポートの開発に関連する経験を蓄積したため、これを行うことができると感じました。 人々が興味を持つのに十分な重みが市場にあると感じました。 私たちはこれをサポートするためにすべてを書いたので、私たちは自分自身でそれを必要としているという感覚がありました、5番目、10番目、そして私たち自身はJavaでプログラムします。

すべてのIDEAはまだJava 6で記述されています。Kotlinの使用を開始しましたが、それ以外はすべてJava 6で記述されています。 これが長い話であることは明らかでしたが、私はおそらくそれがどれほど長いかを過小評価していたでしょう。
それからそれはある種の穀物を沈めました、そこで、それはまた異なる他の文脈などで異なる他の人々と議論されました。 それから私たちはアンドレイ・ブレスラフに会えてとても幸運でした。そして実際、私たちは言語そのものを作り始めました。 最初の段階で、私もそれに手を携えました。JVMのバイトコードジェネレーターの最初のバージョンを書きました。 その後、他の人がこれを行い、私は他のプロジェクトに切り替えました。 私はかなり長い間Kotlinをやっていませんでしたが、今はKotlinに戻りました。
そして、私も名前を思いつきました。 ある時点で、ドミトリエフがやってきて、今すぐ名前が必要だと言いました。 のように、名前を思い付く-と魂の上に立っています!

- 名前は好きですか?

ドイツに事務所があるため、最初は少し恥ずかしかったです。ドイツ語で「コット」という言葉はあまり調和しないものを意味します。 しかし実際には、ドイツ人も他の誰も、これを聞いていませんでした。 そのため、最初は一時的な名前、コード名、「Project Kotlin」のようなものでした。 後になって、他の名前は必要ないことがわかっただけで、まったく悪くはありません。

- ごく最近、あなたとSveta IsakovaがKotlinに関する本を書くと発表されました。 このプロジェクトのイニシエーターは誰で、どのような本ですか?また、言語に関する技術書を書くプロセス全体はどのように調整されていますか?

Java開発者専用のKotlinブックを作成したいと思います。 Kotlin, , Java: JavaScript, , , , 1.0. JVM: c , -, Android. Android — .
, , Jav, Generics JVM. Kotlin. , Kotlin' , , Kotlin Java-.

Kotlin' , — Kotlin'. , . , -, , - . , Java , Java: , . ? , , Kotlin. , , IDEA .

, . , — . Scala , , Ruby on Rails . - , , . , . , Kotlin', , .
, . Table of Contents () . . - . Manning, , , Kotlin. , . , , , , . , . .

?

«Kotlin in Action». In Action – .



Manning Kotlin'? - ?

, , acquisition editors, , , , , . , . .

. , , . , , . ? ?

, . , – royalty.

JetBrains ?

はい , - , , . – , . , , - .

, – .

- , .

. -

, , CEO .

, Kotlin , , , , . , . ? Language Design Review. , , , . ?

- , . , 5 - . , . , , . , , , , .

JetBrains, , . , IntelliJ IDEA, API . Kotlin' . , , , Kotlin' , IDEA. commitment, Kotlin' 0.1, Kotlin' 1., , 2., - - , .

, , . . , - , - , . , , , , .

- ? ?

, , , . .

?

Python - , . new ArrayList , -, new ArrayList . , , , , - .

, , ?

, . , – , 1.0 - . , . , , , , .

, ?

. , . , , , .

, – API . NetBeans , : , SigTest, , API-, , API . , , , . - . ?

, . IDEA Plugin API , , , . IDEA. , , - . , .

15 . Java IDE, API. 1.0 , API – , . , . 3.0 - Plugin API, . Java, . 5.0 JavaScript . IDE, Java .
PyCharm Java . . Kotlin Upsource. , , Java Java, , UI -UI. Kotlin' . . , PSI, , . . .

, – , , . API .

. , Major- API . Major Major API .

. major-. migration guides, , , . , . build- TeamCity, build'a IDEA -, , . — ?

はい , NoSuchMethodError - .

- API?

- API.

, , ?

, , - .

JetBrains



- JetBrains . ?

JetBrains Google. 10 JetBrains. - .

, ?

CTO, . PyCharm WebStorm. , . , , , , - , , . .

- . , JetBrains, , Google. , : , . , .

, Google? ?

Google Cloud Platform. , — loud Debugger: production-, App engine, compute engine - . , . source code call stack, . , . production'. breakpoint'. , , , - . : call stack, , source code

? - , ?

, . Google . Google – , . «do cool things that matter», , « , ». Google. , , , , , , .

Google — 50 . ?

25-30.

Google , , , , , , , . ?

, . ? Google . .

, . .

3-4 , Mountain View , , , Google - . , , , Kotlin, , , , JetBrains . .

, , JetBrains, — , . JetBrains, Google - . , , Google, , . , .

Kotlin. - 2011 . , ( ), . . , , , JetBrains , . , , . ? ?

, . , - , , performance , . , - . , . Kotlin, -, feedback . , . , , , , . , , .

Kotlin - ? , - ? ?

そうだった。 , , , , . , nullability, , null, .

The billion dollar mistake.

-, . Java, Java . , Java, . , , Java- , - .

: , - , - , xml , , : – not nullable, – nullable, nullable. JDK , - . , , Java. .

KAnnotator – , . , - , , , not nullable. . , KAnnotator — , . , data flow . , . — , . , .

— . , , nullability . Java. Java-, nullability. , nullability , , . , . , . , workflow . , Java- Nullable NotNullable — - .

KAnnotator' . , , , .

. , , .

.

, , null-?

– Java Kotlin . assertion, . .

, ?

Java Kotlin.

. , , - Google. , , , -. , ?

, , . , , , «», . いや

JetBrains, , ?

JetBrains , , .

, JetBrains ?

22, . , . , , - – 17.

?

, . , — . 13 . - . OpenSource-, .

Google. Google . , , , 100 . , 100 , . .

Google, , , , - , , . 判明しました、いいえ。 , . , (, , Google) — , , .

-, storage-. , . — , . , NoSQL-.

, - Google? , ?

言うのは難しいです。 Google . BigTable, . , , . Spanner, Google, — . , .

, , , «-» . , , , . . , data storage, . Google, . , , TeamCity, Youtrack, , , Youtrack .

Xodus .

Xodus, . , … , - . , . , Youtrack , Google .

( Youtrack — . ) , - Atlassian, SaaS- JIRA. , 30 . Youtrack SaaS- .

understaffed, . , - , .

C Google — . . , , , , , Youtrack, attachment-. , , , . , , . , — . , . 95 lanency, median latency — . , . , , , Google Search.

, - , . - ? , ?

さまざまな方法で。 , . , . , , , , , . , , . , alerting, - — . alert , , , . , , , alert . , SRE (Site Reliability Engineers), Google, , . , . , alerting, , .

SRE , . , SRE . . , — . , , storage quota, response time , , DoS- .

, – Google ode. - ?

Google Code. : Google Code , , Google. , , 20 000 . – . , , middleware -. middleware . middleware , , , . - middleware, .

Google Code — , , , . , , , abuse . , , , , - android-, - . , . - download . abuse…

, , , , . GitHub , , , Google GitHub. Google Code .

, - ?

, , . . , . , , , , 15 , , … « , ». , , Google . - — 75% . , , - .

-?

Google - , . .


, . - ru_java, . . , ? , c, - , ? , - , . - IDEA. — . , .

. 2011 , , , , , 2013 .

, newsletter .

, , 2 , .

, .

? ?

. PhpStorm, , , . , , . , , . PyCharm .

, - Kotlin. , . , -, Reddit . subreddit Kotlin , -. , , . -, . , - , , .

JUG


, . JUG.ru , -, , . . JUG?



JUG TeamCity, - , 2006, -, . - , . .

, , , . , - JUG . - . .

, .



PS: :
Joker 2015
Kotlin JetBrains

ジェメロフ
Kotlin — JVM, Android JavaScript, 2010 JetBrains. , , Java- IDE. JetBrains, .

Kotlin JetBrains — ( Web-, Kotlin) IntelliJ IDEA ( Kotlin ). , . , Kotlin .




Joker 2015 — .

Source: https://habr.com/ru/post/J263905/


All Articles