«Меня разрывает, когда я не могу писать код» — интервью с Максимом Шафировым, CEO JetBrains


318c9de7550645e7a3509065c36803d8.jpg

В новогоднем выпуске «Без слайдов» — Максим shafirov Шафиров, CEO компании JetBrains.

Вот о чем мы поговорили с Максимом:

  • Важен ли для JetBrains российский рынок?
  • Почему Максим не прекращает писать код?
  • Насколько помогает догфудинг и в чём его ограничения?
  • Почему компания редко закрывает продукты?
  • Как появился Kotlin, и какими компания видит его перспективы?
  • Почему компания не была продана, несмотря на щедрые предложения?
  • Как в JetBrains появилась должность PMM?
  • Как JetBrains одновременно конкурируют и сотрудничают с Microsoft?

Как обычно, под катом — полная текстовая расшифровка беседы.

О работе на российском рынке


— Начну с цитаты из интервью РБК, которое ты давал этим летом. Кстати, называлась статья очень интересно: «Как построить глобальный бизнес на эмпатии».

— Как ты, конечно, понимаешь, название придумал не я. Журналисту главное — придумать название…

— Ну, на самом деле, это довольно близко к тому, что про вас говорят: вы сами кастомеры собственных продуктов, и эмпатия, наверное, правильное слово. Мне понравился заголовок. А цитата такая. Журналист делает вводную о том, что российский рынок является для JetBrains периферийным, и ты говоришь следующее: «Сейчас ситуация несколько изменилась — мы открыли российское отделение продаж, чтобы отечественные покупатели могли не отправлять деньги в Чехию, как происходило раньше, а платить внутри страны. Так что сейчас я подписываю все эти бумаги. И вот, судя по объему бумаг, на российском рынке дела тоже идут неплохо — заказы есть, их становится больше».

Каждый раз, когда я разговариваю на мероприятиях вроде JavaOne с ребятами, которые заняты разработкой продуктов, они говорят одно и то же: «Россия для нас — не рынок». Потому что мало продаж, люди не привыкли платить за софт, и ещё ряд известных причин.

Для JetBrains Россия — рынок или не рынок?

— Ну, настолько же, насколько российский рынок софта является частью мирового. Все знают, что самый большой рынок софта — это Штаты (если не считать Китай, где сейчас специфическая ситуация). Потом идёт Европа, потом все остальные. Россия занимает где-то один-два процента. Ну и вот эти 1–2% в нашей структуре продаж точно так же фигурируют. Рынок это или не рынок? Да, рынок, и хороший.

— Влияет ли [на вас] как-то тот факт, что большинство ваших разработчиков находятся в России и компания корнями отсюда, на продажи, маркетинг?

— Никак не влияет.

— Несмотря на то, что есть каналы типа Хабра, и много людей в тусовке, все всех знают?

— Скажем так, я не знаю способа корректно измерить это влияние, но мне кажется, что оно не особо чувствуется. Нам приятно, что нас знают, это помогает нам как HR-бренду нанимать хороших людей, потому что они знают, что будут делать: то, чем сами пользуются в своей работе каждый день. Это польза. А с точки зрения денег — не знаю.

— Но всё равно рынок растёт? Рука не устала бумаги подписывать?

— Устала. Мы пытаемся внедрить какие-нибудь системы (оказывается, российские производители тоже такие делают), где можно подписывать документы электронным образом.

— А есть какие-то истории с интеграторами, людьми, которые это продают? Вот Microsoft в России продаётся через партнёров.

— Да, конечно, есть, но мы совершенно не отслеживаем, кому они продают, никак не участвуем в работе с конечными клиентами. Без этого у нас вообще не было бы никаких корпоративных продаж в России, потому что чисто технически обосновать передачу денег за границу для многих компаний трудно.

— Да, есть валютный контроль, НДС, целая история…

— Но это не чисто российская история. Такие реселлеры, чтобы чисто деньги собрать, есть во многих странах мира.

— Вы будете что-то с Россией специально делать, или воспринимаете рынок таким, какой он есть?

— Он хороший, нам нравится. Зачем с ним что-то специальное делать? Я думаю, что продуктовые российские компании к нам так или иначе все приходят, мы их знаем, вы их знаете. Можно назвать имена, но это ничего не расскажет дополнительного. Есть такой специальный сектор, как государственные компании или просто государственные структуры, вот с ними можно было бы как-то специально работать, но у нас тут случился казус, и теперь им нельзя покупать наш софт!

— То есть для них вы не российская компания?

— Для них мы не российская компания, потому что интеллектуальная собственность принадлежит чешской компании. У нас так устроен бизнес, что чешская компания заказывает разработку российской, российская делает на заказ за денежку, интеллектуальная собственность остаётся на балансе у чешской. Когда вы покупаете что-то, вы покупаете это у чешской компании. А [для продаж госкомпаниям] нужно быть в специальном реестре. И если в этом реестре есть хоть что-нибудь, отдалённо напоминающее конкурента по названию или по рубрике, то вы не можете купить зарубежный продукт, вы должны купить российский.

— Так, а ведь нет же никого!

— Фактически нет, а если почитать реестр — то есть.

— Есть IBM с Eclipse, есть Oracle с NetBeans — и они же все тоже иностранные.

— Ты перечисляешь реальные конкурентные альтернативы, а есть бумажные конкурентные альтернативы.

— Это довольно забавно. То есть это всё с импортозамещением связано, с такими вещами?

— Ну, нас это не особо печалит, потому что с точки зрения денег, там их и не было. Нас печалит, что пользователи, которые хотели бы что-то купить у нас, не могут этого сделать, пишут нам «давайте вы внесётесь в этот список, Касперский же внёсся каким-то образом». А мы не можем им помочь. Обидно.

О совмещении разработки и управления


— У вас есть ещё линейка серверных продуктов.

— Да.

— Довольно большая, и если я правильно понимаю, когда у вас было два СЕО, Олег Степанов больше занимался ими. В связи с чем у вас было такое разделение?

— Ну, просто функционально сложилось. Не то что мы делили сферы ответственности, но я занялся инфраструктурой продаж в тот момент и был крепко занят этим, а Олег занялся чем-то другим.

— А что такое инфраструктура продаж?

— Это система, в которой идёт учёт всех лицензий, в которой карточки, ремайндеры, оплаты…

— А почему вы не взяли готовое решение? Наверняка много таких решений есть на рынке.

— Все решения на рынке тебя загоняют в какую-то канву. У нас исторически сложилось так, что наша идея лицензирования софта — нестандартная. Кроме того, когда нам пришло в голову, что надо бы навести порядок, у нас уже было довольно много клиентов, так что выкинуть историю и начать с нуля мы не могли себе позволить. Наверное, мы могли ее кому-то заказать. Мы даже посмотрели на какие-то варианты ERP-систем типа SAP и NetSuite — и это страшно, туда вкладываться страшно.

В некоторых подразделениях, в частности, в пражском, мы стандартизовали NetSuite, потому что там банально не было бухгалтерии in-house, она была на аутсорсе. И это был чрезвычайно мучительный процесс, так что хорошо, что мы не перевели на NetSuite систему обслуживания клиентов.

— У вас есть важное преимущество: вы люди, которые разрабатывают софт!

— Да.

— Ты сам до сих пор тоже занимаешься разработкой?

— Да.

— Расскажи, тебя вообще не разрывает от этого, когда у тебя и «код писать», и «за компанию отвечать»?

— Меня разрывает, когда я не могу писать код. Это, может быть, высокопарно или банально прозвучит, но если я за день не написал ни строчки кода, я чувствую себя очень плохо, я чувствую некоторое неудовлетворение. Несмотря на то, что я решал жутко важные вопросы, где-то кому-то с чем-то помогал или какие-то разговоры вёл, всё-таки для меня важно что-то написать, чтобы что-то работало.

— А ты думал в ключе «для бизнеса важно, чтобы я уделял больше внимания бизнесу, а код за меня напишет кто-то другой, у нас много умных ребят»?

— Да, думал. А потом придумал вот эту отмазу с эмпатией, и мне стало очень хорошо! Мне нужно понимать, как работает бизнес, зачем он работает, для кого он работает. И сейчас я его понимаю и с той, и с другой стороны.

О догфудинге


— Очень здорово — начинать историю на эмпатии, на догфудинге. Но в какой-то момент ты вычищаешь всю боль из продукта, и у тебя уже всё хорошо.

Если спросить у пользователя IDEA со стороны, что изменилось в IDEA за последние пять лет, тебе скажут — ну, появилась тема Darcula, ну, лямбды стали поддерживать. И у меня как у пользователя IDEA тоже нет ощущения, что она меняется. Вы же наверняка ведёте громадную работу — и перфоманс, и UI, и всё подряд, но это не чувствует пользователь. Вот как вы эту дихотомию для себя решаете?

— Надо в первую очередь признаться, что то, что «пользователь не видит» — это эффект восприятия, это ощущения пользователя. Потому что количество функциональности, которое мы делаем, зависит, как бы ни банально это прозвучало, от количества сил, которое мы туда вложили. Если у нас в начале над IDEA работало 3 человека, то за год появлялось 3 человекогода фич, а когда работает 90 человек, появляется 90 человеколет фич. Происходит накопление, и каждый следующий релиз отличается от предыдущего уже не в 10 раз, потом не в 2 раза, не в полтора, а, скажем, на 5%. А по объёму эти 5% — это даже больше изменений, чем происходило раньше.

В каждый конкретный момент времени каждому конкретному человеку понятно, как улучшить продукт. То, что это не всегда складывается в какую-то целостную картину, которую можно с точки зрения маркетинга подать пользователям — ну и бог с ним. Мы-то знаем, что продукт становится лучше. И в конечном итоге мы видим, что пользователи с нами согласны: деньги несут. Не были бы согласны — не несли бы.

— Всегда есть разрыв между тем, как воспринимает продукт инженер, который его делает, и как воспринимают его пользователи. Вы пытались выделить эту разницу, и если выделили, то что нарыли интересного?

— Постоянно пытаемся, и это мучительный процесс. Надо признать, что догфудинг — он несколько однобокий. То, что касается core-фич, работы с языком, каких-то generic-историй, рефакторингов, лампочек и инспекций — с ними всё понятно. Но с другой стороны, все люди, которые работают сейчас над проектом IDEA, пишут проект IDEA. Он стартовал 15 лет назад, он большой, специфический, в нём определённая структура модулей, и его не надо начинать с нуля. А когда к нам приходит какой-то новый разработчик, ставит продукт… В начале своей работы он понимает, что можно СТОЛЬКО улучшений сделать! Например, когда я сам из проекта IDEA вышел и попытался делать что-то сбоку, у меня волосы дыбом встали. Оказывается, всё не так шоколадно, как мне казалось!

Другое дело, что до команды эту историю нужно перманентно доносить. JetBrains не состоит из одной IDEA, он состоит из людей, которые разрабатывают и другие продукты. И в команду IDEA идёт поток информации не только от пользователей, но и от нас тоже, от «другого JetBrains». И подвижки есть, как мне кажется.

— У меня давно есть тезис, что догфудинг — это ловушка, в которую легко попасться. Он очень помогает на первых этапах, но начинает мешать потом. Но вот вы много лет используете догфудинг и при этом бешено растёте. Значит, мой тезис неверен? Видишь ли ты какую-то проблему в том, что у вас сплошной догфудинг? Если видишь, то как вы с этим боретесь?

Как вы, например, узнаете мнения о своих продуктах от людей снаружи? Я знаю, что у вас есть публичный багтрекер, но мы с тобой при этом понимаем, сколько людей пишут на Java, а сколько из них ходят в багтрекер IDEA. Очевидно, что это очень разное количество людей.

— Количество разное, но выборка статистически, я думаю, вполне репрезентативная.

— То есть в ваш багтрекер приходит много пользователей?

— Много. Это сотни тысяч человек, наверное.

— Ты писал систему, связанную с продажами — эта система отвечала только за продажи, или и какие-то маркетинговые вещи тоже, за трекинг каналов, например?

— Нет, тут мы использовали Marketo, пытались с ней интегрироваться. Мы пытались интегрироваться со всем, чем ни попадя.

— И как ощущения?

— Не очень. Если бы я делал продукт для маркетинга, наверное, я бы сделал что-нибудь более удобное.

— Мы (JUG.ru Group) тоже пытаемся отслеживать каналы — кто как о нас узнал, кто кому нас порекомендовал и так далее. Для нас это очень тяжёлая история, но мне кажется, что очень важная. Вы активно эту проблематику исследовали?

— Нет.

— У вас не было такой необходимости?

— Нет. Дело в том, что если компания-клиент маленькая, то она действительно с одного человека очень быстро, вирусно, подсаживается на наши продукты. Или нет. Это «работа снизу». А если компания большая, то необходима работа и сверху тоже. Не то что пытаться продавать кому-то — CTO или высшему менеджменту —, но требуется работа сейлзов просто для обеспечения коммуникации. Какие-то скидки, личные взаимоотношения, помощь с апробацией, исследованием. Потому что люди в больших корпорациях вроде банков этого ждут, им это просто необходимо. Иначе ты для них выглядишь как какой-то мелкий вендор, который не отвечает за то, что он делает.

О пути в компании


— Ты же в JetBrains очень давно?

— 1 октября исполнилось 15 лет.

— Это с самого начала существовании компании?

— Почти с начала. Когда я пришёл, IDEA была версии 2.5.

— Каким ты был по счету сотрудником?

— Десятым.

— У тебя же были какие-то этапы: ты был инженером, потом продуктовым или проектным менеджером…

— Да, но я при этом всегда был инженером.

— А сейчас ты СЕО. А ты можешь какие-то этапы для компании выделить, которые как-то её меняли?

— В своём разрезе?

— Изнутри — раз, в разрезе рынка — два.

— Сейчас, вспомню все 15 лет… Когда я пришёл, у компании был один продукт — IDEA. И я лично начал с того, что я делал инспекции в IDEA, и начал я с самого простого, конечно — State Flow анализ, который подсказывает: «Вот эта область всегда true, а здесь вылетит NullPointerException». Сарказм в том, что это до сих пор наиболее продвинутая технология: инспекций мы написали полторы тысячи, но именно эта почему-то наиболее могучей оказалась.

— Ну, может быть, потому что NullPointerException — это «Billion Dollar Problem»?

— Не, его просто прикольнее всего было писать.

— Я к тому, почему до сих пор…

— Почему он полезный? Потому что он фундаментальный. Все остальные — они как шаблоны: «так не пишите, пишите вот так», и ещё пояснительная записка, почему так правильно, а эдак нет. А эта инспекция пытается понять структуру и семантику кода, которая напрямую в самом коде может быть не отражена, но вывести её оттуда можно. Я помню, первые полгода меня коллеги вызывали со словами «вот тут у тебя полная лажа», «вот этого не может быть», а я приходил и объяснял: «посмотри вот сюда, вот здесь условие такое-то, здесь вот это присвоится в это, а потом этот придёт отсюда, и вот тогда у тебя будет…» — «а, да, действительно!». Первые полгода мне никто не верил, но потом постепенно перестали ко мне ходить.

— То есть ты написал, на самом деле, кусок компилятора?

— Да, и даже чуть больше. Оно компилировалось действительно в некоторый псевдокод, и внутри ма-а-аленький интерпретатор а-ля виртуальная машина, который пытается разобрать все неэквивалентные состояния памяти по control flow graph«у, а потом, соответственно, посмотреть их на совместность и выделить какие-то условия, которые могут быть интерпретированы как баги.

Потом Сергей Дмитриев, основатель, довольно много чего написавший, написал первую версию редактора.

— То есть изначально это был не редактор, а какой-то отдельный инспекшен? Как это работало?

— Не-не, ты запутался. Кроме inspections, я начал поддерживать редактор.

— Ты конкретно?

— Да, конкретно я. Исправил там миллион проблем, просидел с профайлером в первый раз в жизни, на Pentium III, я специально попросил себе машинку, которая…

— … не тормозила?

— Нет, наоборот, которая тормозила! Потому что пользователи жаловались нам: «У вас лаги и код печатать невозможно!», а я на Pentium 4 не мог этого увидеть.

— Это тоже догфудинг, только в другом разрезе.

— Запустил первый профилировщик в своей жизни, и он СКРИПЕЛ. Это было так: ты нажимаешь клавишу, чтобы проверить скорость того, как это печатается, и можно было через десять минут подойти и получить трейс того, что происходило в это время, а потом как-то пытаться это оптимизировать.

Занимался в редакторе фолдингом, перфомансом, исправил кучу багов, сделал кучу фич. А потом пришёл Сергей Дмитриев (основатель и президент JetBrains — прим. авт.) и сказал: «Давай ты будешь руководить IDEA». Вот в такой постановке вопроса. Я говорю: «Вы чё, офигели, что ли?»… Ну ладно, говорю: «Как же так?».

Потом дня три походил с «Как же так?» в голове, и решил, что надо попробовать. И попробовал. Собрал кучу шишек. Когда говорят, что из программистов получаются плохие менеджеры — это, конечно, в определённом смысле правда. Все те же шишки, которые какой-то менеджер уже где-то собрал, тебе придётся собрать заново.

673949c031d0454cb50fdef1fd36dbf7.jpg

О том, как закрываются некоторые проекты


Ладно, я же про компанию рассказываю, да? Ну вот, к тому времени у нас уже был проект Fabrique, который оказался закрыт. Это была идея «давайте мы сделаем такой мега-инструмент для написания веб-приложений, там будет какой-то серверный движок, чтобы UI можно было рисовать на картинке, AJAX там поддержим, WYSIWYG».

— Это была середина двухтысячных?

— Да, слово AJAX только начало появляться, ещё не вошло в мейнстрим, это был, наверное, 2004-й год. Так вот, проект Fabrique был закрыт за десять дней до своего первого релиза.

— Не полетело?

— Пришло осознание, что не полетит.

— А как вообще принимаются решения о закрытии? Вы же вложили очень много сил в этот проект? И это же наверняка не единственный проект, который вы закрыли?

— Мы очень мало что закрывали. Положа руку на сердце — наверное, можно было бы закрыть больше. Но легко закрывать проект, пока ты не выкатил его пользователям. Потому что после того, как ты его выкатил, даже если у тебя нет никаких прямых обязательств (вроде тех, что они заплатили тебе денег или рассчитывают на багфиксы, сопровождение), всё равно есть коммитмент. Закрытие зарелизенного проекта негативно влияет на то, как люди воспринимают твою компанию.

Компания Google, наверное, может позволить себе закрывать проекты направо и налево просто потому, что может. Сколько было шума про закрытие Reader? Им пользовались миллионы человек! Компания Google осознала, что не может себе позволить сопровождать такой проект, просто некому внутри этим заниматься, никто не хочет. Они могут закрыть даже то, про что сами раньше с фанфарами трубили: «Wave — это новый способ коммуникации, e-mail-киллер, вы сейчас все будете писать в Wave»… Пробуешь — действительно красиво. Но не пошло. Взяли и закрыли.

У нас не так. Мы закрыли Fabrique, мы закрыли OmniaMea — это был такой написанный на .NET информационный аггрегатор: ридер имейла, ньюзгруп, RSS-фидов, отслеживание контента сайтов… Если нужно отслеживать какой-то большой объём информации, есть коробочка, которой это удобно делать. И там была куча смарт-фич. Как бизнес это не полетело, и приняли решение закрыть. И это чуть ли не всё из закрытий продуктов.

— Получается, что как только ты свой продукт кому-то продал, для тебя это сразу легаси. Есть то, что у тебя растёт, а есть то, от чего не можешь отказаться, потому что у этого чего-то есть кастомеры. Есть ли сейчас проекты, которые тянут вас вниз?

— Я бы не хотел это комментировать. Скажем так: есть проекты, которые приносят меньше денег, чем мы на них тратим.

— Понятно. Портфель для того и нужен, чтобы диверсифицировать. Была ли в своё время история с запуском ReSharper попыткой диверсифицировать ваш бизнес?

— Да, конечно, абсолютно.

— А что вас тогда напугало? IBM и Eclipse? Расскажи чуть-чуть про это, что вы тогда чувствовали?

— А я тогда был инженером. Это довольно забавно для меня, сейчас ретроспективно я понимаю, что когда Сергей Дмитриев сказал «а давай ты будешь руководить IDEA», он на самом деле имел в виду, что IDEA конец, потому что Eclipse её сейчас убьёт. И не важно, кто будет этот проект дальше развивать, но нужно, чтобы какое-то время проект побыл на плаву…

— Потому что есть кастомеры…

— Да. Ну и может, ещё побарахтаемся…

— Как интересно.

— Ну, может, он и не признается сейчас в этом, но я как-то так это сейчас вижу. Ну и действительно была такая ситуация: все действительно либо закрылись, либо переписали свои IDE на базе Eclipse — Borland Together, например.

И возвращаясь к твоему вопросу о том, что «мы во всём правы и догфудинг очевидно хороший способ, потому что мы хорошо зарабатываем» — нам еще конкуренты помогают, и это тоже довольно существенно.

— Что ты имеешь в виду?

— Ну, я наблюдаю, что у Eclipse сейчас дела идут не очень хорошо.

— То есть вы учитесь на их ошибках, или просто они сами себе могилу роют?

— Роют, причем откровенно: их пользователи жалуются на качество. Они и раньше жаловались, но была какая-то динамика развития. А сейчас — есть сайты, где можно посмотреть, сколько в Eclipse коммитов делается (IDEA Community и Eclipse — опенсорсные). И у нас, например, две сотни коммитов в день, а у них двадцать коммитов в месяц в такой же по функциональности code base.

— Есть ощущение, что они сдаются?

— Они не сдаются, конечно, просто у них нет финансирования. Это некоммерческая организация, которую финансируют разные большие корпорации.

— Это интересная история, потому что народ привык про опенсорс рассуждать как про какие-то некоммерческие вещи, но мы же отлично понимаем, что Java спонсируется Oracl-ом, Eclipse спонсируется IBM-ом и так далее — то есть, разработчики этих проектов работают не бесплатно.

— Бывают истории, когда люди работают бесплатно, но это не может продолжаться вечно.

— Это не про большие продукты. В то, что OpenSSL бесплатно делают три человека — я готов поверить. Но, например, в Linux контрибьютят сотрудники крупнейших вендоров, таких как Red Hat и Intel.

Почему я про это заговорил: мне очень нравится, что вы продаёте продукт за деньги. В России как-то не принято покупать. И, может быть, не только в России. Вообще эта история с опенсорсом и free software немножко пугает, потому что пользуются этими продуктами программисты, которые получают за свою работу деньги. Но вот платить за эти продукты их компании часто не готовы. Это чисто российское явление, или в остальном мире это тоже наблюдается?

— С одной стороны, в мире считается, что хорошо быть Open Source и плохо быть proprietary. С другой — в России есть ещё такая штука, что весь Software Development — это некоторое донкихотство. Нужно быть рыцарем в белых доспехах, делать хорошие вещи бесплатно, делиться им с миром. И в принципе зарабатывать в России много денег имеет некий флёр постыдности. Олигархи, «если у тебя хорошая машина — значит, ты наворовал»… К сожалению, есть такой шлейф. Это пройдёт, конечно.

— Но деньги помогают делать интересные вещи — например, создавать новый язык программирования.

— Не только. В первую очередь, деньги помогают делать то, что ты делаешь. Я абсолютно уверен, что пользователи наших продуктов заинтересованы в том, чтобы платить нам деньги. Потому что эти деньги будут использованы на то, чтобы сделать их инструменты лучше.

О Kotlin


— Я хочу поговорить про Kotlin. Я очень давно знаю Андрея Бреслава, он меня учил еще в школе, потом в институте — и я ему безумно за это благодарен. И в какой-то момент Андрей вернулся в Питер и сказал «я теперь делаю язык Kotlin в JetBrains». Кому и как вообще пришла в голову идея сделать свой язык программирования?

— Давай я всю историю расскажу. Пришёл Сергей Дмитриев и говорит: «Знаете, мне кажется, нам надо что-то интересное сделать. IDE, тулинг — это всё понятно, а что бы такого сделать, чтобы вывести компанию на новый уровень?» И Дима yole Жемеров ляпнул: «А давайте язык программирования сделаем!»

И Дмитриев пришёл ко мне: «Вот Жемеров говорит, давай язык программирования сделаем». А я отвечаю: «Господи, что за фигня? Где JetBrains, и где язык? Язык имеет смысл, только если он популярен. Вот IDE может захватить 5% рынка и отлично чувствовать себя на нём. А язык не может так, он имеет смысл, только если он мейнстрим». Я до сих пор так считаю.

— Ну, 5% для языка — это очень хорошо. По индексу TIOBE в районе 5% заканчивается первая десятка (на самом деле — тройка — прим. авт.).

— Хорошо, 5% — это я загнул. И мне в какой-то момент казалось «ну нет, это невозможно просто потому что невозможно». А потом я подумал: вот мы поддерживаем языков 20 или 30, я уже даже сбился со счёта. Всяких разных. И мы знаем, как люди на них пишут. Мы знаем, где в каждом языке разложены грабли, знаем все их плюсы и минусы — не только с точки зрения каких-то формальных фич и чекбоксов, а с точки зрения практического использования всех этих языков.

— То есть вы накопили экспертизу.

— Да. И пришло понимание, что, наверное, JetBrains — самая технологически подкованная компания для того, чтобы сделать язык программирования, который будет действительно использоваться в индустрии. Потом мы провели все эти стандартные разговоры, «почему не Groovy?», «почему не Scala?», «почему не что-нибудь еще?» И мы начали думать, какой это будет язык. Мы были абсолютно уверены, что нужна статическая типизация, потому что статическая типизация — это тулинг, а тулинг — это IDE, а IDE — это деньги, ну и вообще — это удобнее и быстрее. Мы накидали какой-то список фич, а потом Андрей Иванов привёл Бреслава, и тот начал нас спрашивать.

И это был Jam Session. Я его отлично помню от первой до последней минуты. Он начал задавать вопросы, я отвечал на них — почему не Scala, почему не Groovy, все те самые. Он довольно скептически был настроен, но, тем не менее, открыт к диалогу.

И к концу разговора, часа, наверное, через четыре, у нас уже было чёткое понимание, что Андрей у нас работает, и делает он вот это и вот это. Потом он уехал в Microsoft Research на год, делал там какое-то исследование, потом он вернулся, и мы с ним где-то полтора года сидели в комнате и просто дизайнили новый язык.

— То есть сначала вы это вдвоём делали? В четыре руки, в две головы?

— Ну, это слишком нескромно. Участвовали другие люди, конечно. Всякие идеи обрабатывались и апробировались в коридоре. Очень много ребят (тот же Дима Жемеров, тот же Илья Рыженков, Володя Решетников, который сейчас в Microsoft), высказывали массу идей, комментировали. Или Рома Елизаров — он пришёл к нам, потому что я позвал: «Ром, я буду в JetBrains рассказывать, как мы будем делать язык программирования, приходи».

— Какой это был год?

— 2011-й. Может, 2012-й. Рома пришёл, послушал, сказал: «Чуваки, всё классно… Но Nullability». И мы такие: «Ну это трудно: дженерики, interoperability с Java»… Он: «Nullability, чуваки». И появилось Nullability.

— Это очень интересно, потому что Рома Елизаров зимой тоже был в «Без слайдов», и тогда он ещё был сотрудником компании Devexperts, а теперь он сотрудник компании JetBrains и внезапно он делает Kotlin Native, о котором мы ещё поговорим. То есть он ещё тогда, на том этапе, был человеком, который существенно повлиял на язык?

— Да, именно Рома предложил конкретно Nullability. И это сейчас, наверное, одна из самых главных фич в Котлине — это понятная вещь, удобно объяснять пользователю. Но Рома дал идею, а нам пришлось действительно сильно пыхтеть для того, чтобы сделать её реализацию в языке удобной, потому что Nullability в типовой системе… Если её наложить на Java, этим невозможно будет пользоваться. Нужны ещё какие-то механизмы в языке: вопросики, точки…

— Я видел, Андрей рассказывал: один восклицательный знак, два восклицательных знака, вопросительный знак…

— Всё это довольно итеративно появлялось.

— Когда вы это запускали, у вас был прогноз «тогда-то мы выпустим язык»?

— Да. У нас был прогноз, что мы выпустим язык через полтора года. Потому что «чё там делать — надо всего лишь написать компилятор».

— А релиз состоялся, как я понимаю, этой весной?

— Лет через пять после той даты, когда мы сказали, что будет через полтора года.

— Пять лет: сначала два, потом пять, сейчас уже чуть ли не тридцать или даже больше, делают новый язык программирования. Это огромное количество сил, нервов и, конечно, денег. То есть, скорее всего, каждый год на этот проект компания тратит миллионы долларов. Как вы вообще оцениваете эту инвестицию с точки зрения бизнеса?

— Как стратегическую.

— То есть вы делаете серьёзную ставку на Kotlin?

— Да, абсолютно. Когда Kotlin станет мейнстрим-языком, значение компании JetBrains для рынка Software Engineering, на котором она работает, будет совершенно другим. То есть, про нас будут говорить, что мы не какие-то ребята, которые делают удобные, но в любой момент заменяемые инструменты, а как про тех, кто делает некоторую корневую фичу экосистемы, на которой всё строится. Это другой вес, другой информационный поток, и деньги, я думаю, тоже другие.

— На момент интервью в РБК ты называл годовой оборот, по-моему, в 147 миллионов долларов. Это большие деньги. Вы инвестируете вообще в другие проекты, кроме Kotlin? Вот языки вы уже все съели, только IDE для Go, наверное, нет. (интервью было взято до анонса Gogland — прим. авт.)

— Будет!

— Отлично, теперь все узнали, что таки-будет. Есть язык Go, есть JetBrains…

— «Вы привлекательны, я чертовски привлекателен, чего зря время терять»…

О серверных тулах


— С этой историей мне всё понятно. А вот что дальше? Позволяет ли вам ваш нынешний объём инвестировать в разные проекты исследовательские, может быть, в другие компании?

— Смотри. С точки зрения JetBrains мы для себя определили на ближайшие сколько-то лет, что JetBrains всё-таки занимается Software Development. Всё-таки наш клиент — это программист или команда программистов, и мы будем делать продукт, который сфокусирован на этой группе. Конечно, это не только IDE.

В частности, ты говорил про серверные тулы — на мой взгляд, сейчас у нас в них не полная картинка. У нас есть тулы, которые закрывают какие-то конкретные фичи, а других конкретных фич не хватает. Это какое-то кусочное вырезание, аппликация из общего одеяла. А нам бы хотелось сделать инструмент, который является для команды настолько же интегрированной средой, насколько IDE является средой для программиста.

И анекдот заключается в том, что когда мы начинали, например, TeamCity, наш первый серверный продукт, у нас была ровно такая мысль. Мы сказали: «Вот, ребята, мы сделали IDE, можно сказать, что она готова— в принципе уже в 2005-м от IDE ничего больше было не надо.

Инкрементальные улучшения, конечно, имеют большой эффект кумулятивно, но, тем не менее, это инкрементальные улучшения. И вот мы думаем: окей, давайте мы сделаем Integrated Team Environment, но с чего-то нужно начать, с какой-то конкретной истории. Тогда для Continuous Integration, был CruiseControl — это такая система, которая хранится на одной машинке, которую нужно конфигурировать xml-ным файлом. И если у тебя, например, два проекта, нужны две машинки, если билд идёт долго, то опять же нужны две машинки, их надо отдельно настраивать, никакой интегрированной истории, в общем, трэш и угар.

— Но в то время Косукэ Кавагути уже работал над Hudson, который сейчас Jenkins.

— Тогда мы не знали про Hudson, знали только про CruiseControl, это был конец 2004-го. Так вот, что такое Integrated Team Environment, было еще непонятно, и мы решили сделать понятную конкретную вещь: Continuous Integration. Сделали, по-моему, за год или полтора, выпустили, пришли пользователи, сказали «не хватает вот этого и этого», мы сделали это и это, выкатили пользователям, они сказали «нам теперь ещё вот здесь подмазать, здесь подкрасить, здесь ещё вот эту version control system интегрировать», ну и мы, что называется, увлеклись.

Этот процесс напоминает следующее: человек начинает копать ямку под дерево, а потом случайно выкапывает траншею, и по сторонам уже ничего не видно. Единственное, что он может делать — эту траншею углублять. И так же у нас получился YouTrack, так же получился UpSource (code review-тул), и сейчас мы в очередной раз пытаемся переосмыслить «а что такое вообще командный инструмент, как он должен быть устроен».

— С TeamCity я примерно понимаю, всё-таки сборка софта — это специфическая для индустрии область. Но вот, скажем, какой-нибудь YouTrack можно использовать и в не-айтишной компании. Скажем, я в JUG.ru Group делаю конференции, мы для работы используем JIRA. Мы используем её как конструктор бизнес-процессов, используем её API для интеграции с разными внешними формочками, и это крутейшая вещь! Стейт-машина, фактически. Думали ли вы о том, чтобы выходить с тем же YouTrack на какие-то не-айтишные, не-софтверные рынки?

— Он используется и у не-айтишников. Есть люди, которые делают системы продаж на YouTrack. У них какая-то форма, в которой клиент заполняет какие-то поля, в результате это оказывается в YouTrack issue, там настроен workfl

© Habrahabr.ru