Для чего нужен jetbrains

Обновлено: 04.07.2024

Если вы думаете, что в экспорте технологий Россия мало чем может похвастаться, обратите внимание на разработчика ПО для программистов, компанию JetBrains с головным офисом в Праге, штат которой в основном базируется в России. Это один из крупнейших работодателей для программистов в Санкт-Петербурге; кроме того, у JetBrains есть офисы в Москве и Новосибирске, Бостоне и Мюнхене.

У компании более 5 млн пользователей, среди её клиентов — Google, Salesforce, Twitter, Citibank, HP, Airbnb и др. В 2015 году выручка JetBrains составляла $147 млн. По словам CEO Максима Шафирова, компания растёт на 30–40% в год. Это лидер в своей нише.

«Секрет» поговорил с Шафировым о том, почему JetBrains не заявляет о себе громко, что нужно программистам для счастья и стоит ли технологическим компаниям оставаться в России.

«Программисты видят в продукте потенциал, и их очень прёт»

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

— Скорее так вышло. Распространяться о себе имеет смысл из-за двух вещей: чтобы хороших людей нанимать и чтобы свои продукты продавать. В основном мы нанимаем программистов и людей, которые связаны с продуктовой деятельностью и с маркетингом, — это довольно узкая ниша. А продукты мы, по счастливому стечению обстоятельств, продаём тем же самым людям. Зачем распространяться о себе широко? Задачи нет такой.

— JetBrains была основана в 2000 году. Насколько ново и безрассудно тогда было разрабатывать продукты для программистов?

— Я пришёл в компанию чуть позже, но в курсе всей истории. Тогда на рынке ПО для разработчиков было несколько устоявшихся игроков: Borland, на которую мы во многом ориентировались, IBM и Microsoft, которые и сейчас большие игроки на рынке. И, в общем-то, всё.

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

Вот мы вместо того, чтобы транслировать это в машинные коды, предоставили эту информацию пользователю в удобном виде. Соответственно, пользователь может по всей структуре ходить и оперировать с программой не как с текстом, а как с семантическим объектом. Не очень заумно?

— Нет, нормально.

— Вот, и была идея, что никакие инструменты такую очевидную мысль не используют, и тот, кто сделает это в первый раз, — тот молодец. Собственно, так и вышло.

— Все эти корпорации большие — они не додумались, что так можно?

— Идеи были, но максимум, который они успели предложить, — это так называемый completion… Нужно же непрограммистам объяснять, да? Сейчас буду стараться. Вот вы начинаете печатать в телефоне, а он угадывает, такое слово или такое. Очень помогает набирать текст быстро и без ошибок. Так же и с кодом: программа, основываясь на начале слова, которое является ссылкой на какую-то семантическую сущность, подсказывает, какие есть варианты это слово продолжить. Вот это максимум, что было.

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

— Когда вышла ваша IDE, она быстро распространилась?

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

— Продукт стал сначала популярен на российском рынке или сразу стал глобальным?

— Нет, ребята основатели JetBrains Сергей Дмитриев, Евгений Беляев и Валентин Кипятков тогда жили в Праге, в Чехии — потому что компания, на которую они раньше работали в Санкт-Петербурге, открыла там офис. И бизнес они потом основали там же. Поэтому не стояло такой задачи: сначала продвигаем среди российских пользователей. Да и рынок софта не локальный.

«В том, что мы сделаем идеально, мы не сомневались»

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

— Да, я тогда уже был в компании, работал программистом как раз в продукте IntelliJ IDEA, который рисковал быть вымытым с рынка этим самым бесплатным конкурентом.

— Помните, что подумали, когда он появился?

— Я тогда не размышлял о рынках — будут у нас пользователи или нет. Мне очень нравился продукт, который я делал, я знал лично людей, которые им пользуются. Это в чём-то даже семейная история между пользователями была. Сейчас их 5 млн, тогда было около 40 000. Я как-то не осознал, что это действительно проблема, потому что Eclipse был, как мне казалось, хуже.

— Но потом почувствовали отток пользователей?

— Да, конечно. Это не было резко, мы почувствовали плавный отток пользователей и въехали в кризис 2008–2009 года в этом процессе. Это первый год, когда у нас не выросли продажи.

— Но к этому времени у вас уже появились другие продукты, которые приносили прибыль?

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

— Как можно поделить на категории ваши продукты?

— У нас есть две большие категории: это продукты для индивидуальных разработчиков и для команд. В первой категории у нас есть IDE, то есть интегрированные среды разработки для всех популярных языков и платформ, которые бывают в современном мире разработки ПО. Плюс у нас есть профиляторы — средства анализа производительности и исправления её дефектов. Во второй категории мы выпускаем continuous integration — средства управления задачами и учёта багов и систему для code review.

Да, про Kotlin забыл — мы тут сделали язык программирования.

— Насколько это вообще нетипичная история для компании — разработчика ПО?

— Тогда как вы на это решились?

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

Хотелось вывести компанию на новый уровень, быть более значимыми

А насчёт раскручивания — это из разряда чуда… Потому что программисты языки программирования любят, а не просто ими пользуются как инструментами. Они их готовы защищать, и это важная эмоциональная составляющая их каждодневного труда.

— И вы решили прийти к ним и заявить: «Ребята, то, чем вы пользуетесь, — оно вообще-то не очень»?

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

Для нас результат, которого достиг Kotlin, очень хороший, потому что профиль роста у него примерно такой же, как у языка Swift, придуманного компанией Apple.

— Kotlin недавно стал одним из официальных языков разработки для Android. То есть вы включились в битву между Android и iOS?

— Это не наша борьба. Да, с большой вероятностью Kotlin в ближайшие несколько лет станет самым популярным языком на Android, а это одна из самых динамично развивающихся экосистем. Но область применения Kotlin гораздо шире, это универсальный язык. Мы работаем для всех программистов, в том числе и для тех, кто пишет для iOS.

«Люди работают для себя. Это для программистов очень сложно чем-то перебить»

— Сколько сейчас человек работает в компании?

— Глобально 720. Из них 400–450 программистов.

— Насколько я понимаю, большинство ваших сотрудников из России, даже если сейчас они работают в европейских офисах. Жёсткая ли за них конкуренция?

— Мы не ставим себе задачи нанимать исключительно людей с российскими корнями. Просто нанять их для нас проще, потому что это общий язык и общая культура. Если говорить о конкуренции за них… Да, бывали случаи, когда я познакомился с человеком в 2003 году и понял, что очень бы хотел его к нам. А работать он у нас стал в 2016 году. Но средства переманивания в виде «а давай мы тебе вот такую зарплату предложим» мы не используем принципиально. Не потому, что денег жалко, а потому, что у человека должна быть свобода воли, когда он решает, что хочет работать именно у нас. Нам очень важно, чтобы человек не просто работу делал, а жил этим, что ли, извините.

— А ситуация, когда программисты ходят из одного офиса в другой и показывают офферы, чтобы им повысили зарплату или сумму в том же оффере, — это проблема для рынка?

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

— А что вы могли бы выделить как вашу фишку? Чего программисты не найдут в других компаниях?

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

— Со стороны кажется, что сейчас технологические компании соревнуются за сотрудников не столько задачами, сколько фруктами, прачечной, спортзалом.

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

— Сколько вы на это тратите по сравнению с зарплатным фондом?

— Вы недавно ещё купили два здания в Питере. Не хватает места?

— Да, у нас два заполненных здания в Петербурге, и яблоку негде упасть. Мы ещё в 2015 году начали искать, куда переезжать, и это был мучительный процесс для меня лично. Сейчас реконструируем их под себя, это 30 000 кв. м.

— Несколько зданий в одном городе — это…

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

— Вроде как столкнулись в курилке и придумали новую фичу?

— Да, я вот десять лет назад бросил курить, и это существенно сказалось на эффективности коммуникаций. Отрицательно.

«Есть закон? Есть закон. Дурацкий? Дурацкий»

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

— Это было сознательное решение пойти навстречу людям, которые хотят работать не в России. Первый офис у нас был в Праге, но туда народ ехать не очень хочет, потому что считается, что это тихое место. Поэтому мы сознательно выбирали, где ещё открыть офис, и выбрали Мюнхен. Туда 20–30 человек в год переезжают. Всего там сейчас около 130 человек.

— А как это было? Что, сразу несколько человек разом пришли и сказали: «Мы хотим работать не в России, откройте нам офис»?

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

— А в каком году это было?

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

— Нет, это было чуть-чуть до. Может, он предвидел, не знаю.

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

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

— Конечно. Но просто, к сожалению, в последние годы это уже не «я поеду, посмотрю мир», а «всё, нельзя уже»…

— А «где мой эвакуатор».

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

— Смотрите, я за себя могу говорить, наверное, только. Всё сложно. Действительно всё сложно. И вообще, может, мы не будем это обсуждать?

Люди будут уезжать из России. Было бы здорово, чтобы они, уезжая, не увольнялись из нашей компании

— Мне бы очень хотелось это обсудить, потому что чем дальше, тем больше становится очевидно, что технологические компании больше не могут сказать: «Мы в домике, мы вообще в этом во всём не участвуем, а пилим продукт». Мы видим, что произошло с «ВКонтакте», что происходит с Telegram. К Фёдору Овчинникову приходят, на менее известных предпринимателей заводят уголовные дела, кого-то вообще пытают в СИЗО.

— Ко мне никто никогда не приходил. Всё это мы видим из информационной среды. А надо не забывать своими глазами ещё смотреть. Если нас не устраивает среда, давайте пытаться сделать так, чтобы устраивала. Я сейчас говорю не про теорию малых дел, а может быть, и больших дел тоже. Например, то, что мы вкладываемся в университетское образование, имеет эффект на среду. И есть не только мы, а другие компании, которые не у себя в квартире забаррикадировались, а именно на общество работают. Давайте мы, может быть, будем на них тоже обращать внимание. А в чём был вопрос вообще? Страшно — не страшно?

— Да.

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

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

— Будет день — будет хлеб.

— А то, что сейчас происходит с Telegram, — это не сигнал, что такой день уже близко? Как вы к этому относитесь?

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

— Эти дурацкие законы могут в какой-то момент вас затронуть?

— Конечно, в любой момент. Кого угодно.

«Должен быть идейный горизонт роста»

— Шесть лет назад основатель JetBrains Сергей Дмитриев передал пост CEO сразу двум людям: вам и Олегу Степанову. Как так вышло?

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

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

— Должен быть идейный горизонт роста. Бывают компании одного продукта: человек сделал идею, и она потом эксплуатируется десятилетиями. Люди в какой-то момент перестают понимать, есть ли жизнь за рамками этой узкой колеи. А есть компании, где видно направление, куда можно развиваться, и оно очевидно всем в компании.

— Можно это назвать миссией?

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

— А как можно ваш горизонт роста обрисовать?

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

Главное — есть в английском слово fun, как это по-русски сказать? Весело? Вот мальчики и девочки, которые в 6–7 классе начинают программировать, — им весело. А лет через 20 выясняется, что всё это так сложно, надо выстроить иерархию, процессы и прочее. Может быть, и правда надо. Но пусть это тоже будет весело. Наверное, к этому мы стремимся. И туда ещё далеко.

Фотографии: Дмитрий Цыренщиков / «Секрет фирмы»

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

Почему я решил написать этот пост? Я считаю, что это очень недооцененная возможность, а недооценена она потому что порог вхождения очень высок, плюс это один из самых непопулярных продуктов JetBrains.

Я планирую написать серию постов об этой замечательной среде, чтобы по окончанию прочтения у энтузиастов оставалось как можно меньше вопросов «как сделать эту штуку», и как можно больше понимания структуры, чтобы можно было эффективно пользоваться документацией. Познавать MPS мы будем во время создания языка для описания закономерностей погоды. Почему, собственно говоря, и нет?

Концепция

MPS (дальше — среда / MPS) предоставляет возможность создавать модули двух типов — Language и Solution. Первый является описанием языка и его аспектов, второй используется для разработки каких-либо проектов, тестирования языка / языков, расширений языков.

Я начну с Language.

Самое важное, что нужно понять с начала, — это процесс разработки языка и что с ним происходит потом.

  1. Мы описываем модель языка и необходимые аспекты этого языка, например, систему типов, поведение в редакторе.
  2. Мы описываем, как модель нашего языка компилируется в текст или в модель другого языка.
  3. Мы собираем наш язык в плагин для Intellij Idea и используем его. Все переходы из одной модели в другую делаются за нас, в итоге мы получаем готовый скомпилированный код.

Итак, 1 статья — 1 кусок конечного проекта.

Создаем проект в MPS

MPS_1_START

На данном этапе мы выбираем название проекта и название языка, также можно создать Sandbox solution — модуль, в котором мы будем смотреть, как работает наш язык.

image

У нас есть пустой проект. Совсем пустой. Но в языке WeatherPrediction есть вложенные директивы — structure, editor… Это аспекты языка — в них мы описываем поведение языка в разных ситуациях. Например, structure содержит основные концепты языка, а editor — то, как они будут отображаться в редакторе кода. Это должно звучать очень абстрактно, особенно если Вы еще не знакомы с MPS. Понимаю. Так что сразу в бой.

Сначала нам нужно объявить root концепт языка. В переводе на русский — мы создаем некую структуру, которая будет обобщать все другие структуры. В Java это был бы

Чтобы создать концепт, тыкаем ЛКМ по WeatherPrediction -> New -> Concept.

image

У концепта есть 3 типа данных, которые он может содержать:

    properties — здесь можно хранить любые примитивные данные, аля строки, числа и boolean Абстрактный пример — целочисленная переменная, у которой должно быть name: string, value: integer, final: boolean

image

Что здесь происходит: Мы определяем концепт, называем его PredictionList, говорим, что его можно реализовать как root концепт и наследуемся от INamedConcept. Если посмотреть на его definition (Ctrl + B)

image

то мы увидим, что это interface concept, у которого есть property name: string, что, собственно говоря, логично из названия

Обратите внимание, что синтаксис похож на язык программирования. Это так: этот код написан на языке jetbrains.mps.lang.structure, который описывает концепты языка.

Если мы сейчас соберем проект и захотим посмотреть, что получилось, то нам нужно будет создать модель в модуле WeatherPrediction.sandbox.

image

ЛКМ на sandbox(generation required) -> New -> PredictionList

image

Заменим no name на Saint Petersburg

Бум! У нас есть дефолтная визуализация концепта. Чтобы посмотреть AST, нажмите на любое место в редакторе и нажмите хоткей Alt + X

image

Здесь видна структура всего всего, это очень круто и удобно отслеживать состояние дерева. Сразу видим, что name у PredictionList = Saint Petersburg. Так, это очень здорово, но мы же хотим чтобы все было по красоте, поэтому мы открываем редактор концепта PredictionList и создаем ему editor aspect. Нажимаем на зеленый плюсик в нижнем списке, прямо под кодом нашего концепта, выбираем Editor -> Concept Editor

image

Здесь мы можем описать то, как будет отображаться наш PredictionList в редакторе кода.
Пока не будем вдаваться в подробности, как тут это все сделано, просто пишем [- и у нас создается массив ячеек. Все просто: в каждой ячейке — какой то константный текст / property / reference / children. И да, отображение описывается другим языком — jetbrains.mps.lang.editor.
Мы хотим, чтобы наш список предсказаний погоды выглядел следующим образом:
Weather prediction rules for %name%.

image

В первой ячейке — константный текст, во второй — , обращение к property по ключу name.

Пересобираем наш язык (Ctrl + F9) и смотрим в Sandbox solution, где мы до этого создали пустой PredicitonList по имени Saint Petersburg.

image

Все работает, AST то же самое, что и до наших модификаций.

На этом я, наверное, остановлюсь пока что, чтобы получить фидбек. В следующем посте я планирую добавить еще парочку концептов, а так же генерацию кода на Java.

Спасибо за внимание! Пожалуйста, все пожелания, непонятки и вопросы и пишите в комменты. Если вопросы конкретные и простые, отвечу в комментариях, иначе добавлю в следующий пост.

Когда речь заходит о JetBrains, на ум сразу приходит два факта: то, что JetBrains делает одни из лучших сред разработки в мире для множества языков программирования, и… то, что о самой JetBrains до последнего времени было известно не так уж и много. Именно поэтому прошедший в середине лета День открытых дверей JetBrains вызвал такой ажиотаж, собрав множество посетителей со всех уголков страны. Не обошло это мероприятие стороной и редакцию ][. Зная, что сами доклады будут разжеваны до мелочей уже на следующий день, мы не спешили с репортом, а постарались заглянуть не только на сами воркшопы, но и за кулисы того, что стоит за ними, – в обычную будничную жизнь JetBrains. Что из этого вышло — читай ниже.

JetBrains, похоже, и сами не ожидали того, сколько людей захочет приехать к ним в этот день, о чем в самом начале признался Максим Шафиров, CEO JetBrains, в своем вступительном слове к аудитории. Как всегда, он подчеркнул, что главный приоритет JetBrains – продукты для программистов, сказал пару слов о предстоящей программе вечера и поблагодарил всех собравшихся за проявленный интерес.

Самым экзотичным разработкам компания отвела отдельный трек на конференции: практикумы по Kotlin (язык программирования от JetBrains) и MPS, а также доклад Валентина Кипяткова, одного из основателей компании и ведущего разработчика, о собственной системе контроля версий. Названия у новой VCS пока нет; по словам разработчиков, рабочее имя уже используется другой компанией в другой отрасли, поэтому точно не сможет быть задействовано JetBrains. Интересно, что там? Сложно сказать, чем JetBrains не угодили классические VCS — ну, кроме того, что их писали не они :).

Одна из ключевых фишек новой системы контроля версий в том, что центральный (онлайновый) репозиторий теперь играет куда более важную роль, чем в классических VCS. Локальный репозиторий, конечно, тоже никуда не делся, и запись ведется сначала в него. А вот синхронизация с центральным репозиторием происходит в фоне постоянно. Это никак не мешает коммитить изменения, если ты находишься в оффлайне. Они будут синхронизированы автоматически, как только станет доступен интернет.

Еще один необычный момент в новинке — отсутствие явного интерфейса командной строки. Хотя в базовом состоянии CLI уже есть, из коробки предлагается использовать только GUI, который наверняка будет интегрирован с другими продуктами JetBrains.

По словам Кипяткова, публичное бета-тестирование новой VCS начнется не ранее чем через год (а значит, релиз будет еще позже). Базовый функционал будет доступен бесплатно (но существование платных редакций или надстроек не исключается), исходный код будет открыт.

После Максима Шафирова в главный зал вышел Николай Чашников, ведущий разработчик IntelliJ IDEA, и провел мастер-класс по этой IDE. Действительно очень полезный воркшоп, ведь не секрет, что «идея» — настолько мощная штука, что, кажется, кроме самих разработчиков мало кто использует все возможности этой IDE.

Доклад был разделен на несколько частей, в каждой из которых освещались разные аспекты использования IDEA. Например, в разделе «Как писать код с нуля» Николай подробно остановился на «умной» идеевской технологии code completion (функция автодополнения, которая позволяет вставлять только то, что можно вставить), показал пример быстрой конвертации массивов. Дальше речь шла о том, как с помощью IDEA рефакторить код для написания тестов, быстро генерировать элементы класса, осуществлять быструю навигацию по проекту и прочее.

После воркшопа Николай с удовольствием отвечал на вопросы гостей

После воркшопа Николай с удовольствием отвечал на вопросы гостей

В конце Николай напомнил, что в каждой IDE от JetBrains есть такая штука, как ProductivityGuide. Это трекер использования фич IDE. В нем показывается, сколько раз ты, например, использовал CodeCompletion, сколько времени и символов тебе это сэкономило, сколько поправлено багов. В общем, очень забавная статистика — помогает осознать, насколько важна правильная IDE для разработчика. Беглый взгляд на ноутбуки соседей дал понять, что аудиторию фича сильно заинтересовала — многие полезли в меню Help, чтобы посмотреть свою статистику.

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

Дмитрий Жемеров, CTO JetBrains, не смог лично присутствовать на мероприятии, поэтому делал доклад о поддержке динамических языков программирования в IDE на базе IntelliJ Platform по видеосвязи из мюнхенcкого офиса JetBrains. Было немного непривычно наблюдать за тем, как аудитория задает вопросы двум мониторам.

Дмитрий Жемеров рассказывает о поддержке динамических ЯП из Мюнхена

Дмитрий Жемеров рассказывает о поддержке динамических ЯП из Мюнхена

Около главного зала, где проходили два предыдущих воркшопа, было расставлено несколько книжных шкафов с десятками книг по разработке. Мы, кстати, нашли все из нашей прошлогодней подборки лучших книг для программиста :).

Отличная подборка книг по кодингу была доступна всем

Отличная подборка книг по кодингу была доступна всем

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

Ideaphone — чудо инженерно-музыкальной техники

Ideaphone — чудо инженерно-музыкальной техники

Управляется этот инструмент автоматизированной системой на базе Arduino. К инструменту прилагался веб-сервер и клиент для управления (веб-приложение с привычными музыканту черными и белыми клавишами).

Трубы + колокола + Arduino = Ideaphone

Трубы + колокола + Arduino = Ideaphone

Сделали эту штуку на хакатоне JetBrains, в котором, к слову, она и заняла почетное первое место среди множества других оригинальных проектов. Управляется Ideaphone по MIDI. Нам удалось заснять его в действии.

Весь оставшийся вечер мы пытались вспомнить, откуда мелодия (бывают же такие провалы в памяти), пока один из нас не достал смартфон :).

Кстати, о музыке. У JetBrains есть небольшая музыкальная комната. До project-студии, наверное, не дотягивает, но все необходимое, в принципе, есть.

Кроме ПО, в JB еще и музыку делают :)

Кроме ПО, в JB еще и музыку делают 🙂

Каждый этаж офиса JetBrains имеет свой цвет — синий, желтый, красный, оранжевый, зеленый, фиолетовый и серый для первого этажа.

Разноцветный JetBrains

Разноцветный JetBrains

На каждом этаже висели такие таблички:

Здесь не заблудиться

Здесь не заблудиться

Между этажами курсировал забавный лифт, обклеенный магнитами с логотипами разных продуктов JetBrains. Хотя магниты можно было свободно отрывать от стен, но их количество не убавлялось — то ли народ стеснялся, то ли JetBrains оперативно подвозила новые. Мы ухватили себе несколько на память.

Продуктовый лифт

Продуктовый лифт

На стенах иногда попадаются весьма забавные надписи и плакаты:

JB любит хорошие дни Ни один сантиметр площади даром не пропадет

Вообще, офис JetBrains достаточно необычное здание. Видно, что дизайнеры серьезно потрудились, чтобы создать множество уютных мест, где разработчики могут передохнуть и упорядочить мысли.

И они на каждом шагу!

И они на каждом шагу!

Например, комнаты отдыха. Лампа, наушники и кресло — отличное место для брейка готово.

Милая девушка в милой комнате отдыха

Милая девушка в милой комнате отдыха

Так выглядят коридор на третьем этаже.

Третий этаж — желтый цвет

Третий этаж — желтый цвет

Иногда можно встретить небольшие уютные места, где можно попить кофе и обсудить насущные проблемы.

Здесь все располагает к беседе

Здесь все располагает к беседе

Ну а если кофе не обойтись, то у JetBrains в запасе целая столовая с бесплатными обедами:

Поесть можно и основательнее

Поесть можно и основательнее

Очень необычно смотрятся переговорки, вмонтированные прямо в стены офиса.

In-wall переговорки на двоих

In-wall переговорки на двоих

…Но иногда попадаются и совсем уж экзотичные вещи:

Нужно бооольше света! :)

Нужно бооольше света! 🙂

А вот серверная JetBrains — предмет особой гордости инженеров компании. Обычно здания такого типа рассчитаны на стандартную офисную нагрузку, однако из-за аккумуляторов нагрузка в серверной превышает это значение во много раз. Решили проблему следующим образом: здание, в котором расположен офис JB, стоит на вертикальных колоннах. Инженеры соединили их поперечными 35-сантиметровыми балками — по расчетам, подобная конструкция может выдержать танк. Видно, что ребята основательно строили свой новый дом.

Серверная: ох и нелегко же она далась JetBrains!

Серверная: ох и нелегко же она далась JetBrains!

Сами разработчики JB работают в больших просторных комнатах. Все целиком и полностью погружены в рабочий процесс. Нам даже удалось поприсутствовать при разработке системы управления проектами YouTrack.

В JetBrains повсюду царит дух творчества. Даже такие, казалось бы, обыденные вещи, как парковка, не обошлись без забавных мелочей вроде арта на стенах.

Арт на стенах парковки JB

Арт на стенах парковки JB

Кстати, в JetBrains котируют велосипеды, для них даже отведено отдельное место:

Велосипедная стоянка

Велосипедная стоянка

Естественно, как у любой большой компании, у JB есть спортзал, куда, правда, еще не завезли все тренажеры.

Будущий спортзал JB

А пока же уставшим кодерам предлагается поиграть в настольный теннис или в кикер, для которого тоже имеется отдельная комната.

Стол для пинг-понга Кикерная

Вот чего зачастую нет даже у самых больших компаний — так это это своей крыши с диванами и Wi-Fi, с которой открывается потрясающий вид на Исаакий и Петропавловку.

Крыша офиса

Крыша офиса

По вечерам, после рабочего дня, здесь здорово. Пока мы гуляли по крыше, джетбрейнсовцы постоянно туда приходили и уходили. Кажется, у них там что-то вроде тусовочного места, где они встречаются после работы, обсуждают дела, просто общаются и отдыхают. Такой вот open space с видом на весь город.

Здесь можно отдохнуть после рабочего дня

Здесь можно отдохнуть после рабочего дня

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

Код Тузик

Код Тузик

Питерцы, и среди них CEO JetBrains Максим Шафиров, были максимально открыты посетителям, с удовольствием отвечали на бесконечные вопросы гостей, одним словом, достойно представили свою компанию общественности, в который раз доказав, что есть отечественные компании, которые по «уровню жизни» ничем не уступают западным. Ну а главное — в том, что у ребят и дальше будет получаться делать отличные продукты для программистов, сомневаться не приходится.

Читайте также: