Разрабатывай на SQL с удовольствием

Интервью Андрея Чепцова, менеджера продуктового маркетинга IntelliJ IDEA и 0xDBE, журналисту Игорю Савчуку

AndreyCheptsovFW

Андрей, расскажите, как вы пришли в ИТ и стали в итоге программистом? Это случайность, судьба или осознанный и взвешенный выбор?

Программированием я начал увлекаться еще в школе, когда дома появился компьютер. Это был старый советский компьютер, в те времена он назывался не персональный, а бытовой компьютер (БК). Первым языком программирования, который я узнал, был Бейсик. Позже я изучал программирование уже в Саратовском государственном техническом университете. Нельзя сказать, что выбор был предельно взвешенный, но меня это очень сильно увлекало и увлекает по сей день.

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

Если говорить о технических пристрастиях, мне очень нравится веб-разработка и все, что связано с платформой HTML5. Основным языком программирования для меня всегда был Java, хотя в свое время я программировал и на C++, и на .NET. Сейчас я сильно увлекся JVM-языками (Scala и Kotlin). В будущем, наверное, хотелось бы попробовать еще и мобильные приложения. Это отличная возможность попробовать Kotlin на платформе Android.

Что касается устремлений – наверное, продолжать делать то, что нравится: программировать и создавать продукты для разработчиков.

Ваш новый и необычный проект – 0xDBE. Что это такое, в чем был главный резон создавать новый продукт в этом переполненном программами мире?

0xDBE – наш продукт для тех, кто работает с базами данных или пишет запросы в базы данных в собственном приложении. Другими словами, для всех, кто, так или иначе, сталкивается с необходимостью читать, редактировать и выполнять SQL-запросы к базам данных. Хотя продукт еще только разрабатывается, его уже можно попробовать.

Когда мы запустили EAP-программу для 0xDBE (возможность пробовать продукт, пока он находится в разработке), мы были удивлены огромным количеством желающих им воспользоваться. На этапах планирования мы и не предполагали, что потребность в удобных инструментах для работы с базами данных так высока. Не секрет, что работа с SQL – не самое простое и приятное занятие. Как оказалось, на рынке не так много инструментов, которые действительно бы ставили своей целью упростить этот процесс и, если не сделать его приятным, хотя бы не таким болезненным. Если говорить о киллер-фичах продукта, то здесь все довольно просто: написание кода SQL должно приносить удовольствие. В этом и заключается главная функция продукта.

Хочется больше технических подробностей о 0xDBE. Какие вообще СУБД будут поддерживаться? Можно ли наметить его дорожную карту, конечные цели?

На самом деле лучший способ узнать конкретику о 0xDBE – присоединиться к EAP-программе и попробовать продукт самостоятельно на собственном проекте. Поддержка T-SQL и PL/SQL уже присутствует в 0xDBE. Как правило, если какой-то из стейтментов SQL не реализован, мы сразу узнаем об этом из реквестов от наших пользователей и исправляем это в следующей сборке. Такие обновления выходят каждые три недели. Список поддерживаемых СУБД на конец лета 2014 года включает: Oracle, SQL Server, MySQL, PostgreSQL, Sybase, DB2, SQLite, HyperSQL, Derby и H2. И это одно из преимуществ 0xDBE перед другими продуктами: широкий спектр СУБД поддерживается одновременно на всех платформах: Window, OS X и Linux.

Если говорить о дорожной карте, в данный момент наши усилия сконцентрированы на первой версии 0xDBE, официальный выпуск которой ожидается в начале 2015-го. Предполагается, что первая версия будет включать минимально необходимый набор инструментов: возможность удобной работы с SQL-файлами; выполнение запросов; просмотр и редактирование содержания и структуры таблиц; базовые операции по администрированию и многое другое. Как только первая версия будет готова, мы перейдем к серьезным задачам: добавление профессиональных инструментов для разработчиков и администраторов, в том числе профилирование запросов. Что касается популярной темы NoSQL – окончательного решения на этот счет у нас пока нет. Возможно, поддержка появится в первой версии, а, возможно, мы займемся этим позднее. Сейчас для нас важно хорошо решить главную задачу: сделать совершенный продукт для тех, кто работает с SQL.

Здесь я бы отметил еще один момент. Продукт 0xDBE, как и большинство других IDE в JetBrains, строится на базе платформы IntelliJ. Поскольку платформа является «открытой» (лицензия Apache 2.0), любой желающий имеет возможность создавать собственные продукты на ее базе, и эти продукты будут совместимы с другими IDE. Прекрасным примером является Android Studio, новая IDE для Android-разработчиков, разрабатываемая в Google. Другими словами, любой желающий может также создавать собственные продукты и плагины на базе 0xDBE. Если в то время, пока мы занимаемся приоритетными задачами, кто-то решит «добавить» поддержку NoSQL, будем только рады.

Особенно интересно было бы увидеть в этой IDE серьезные возможности по работе с производительностью, отладкой запросов и хранимых процедур, мониторинга работы инстанса, экспорта результатов выполнения запросов, удобный рефакторинг и т.п. Что из этого уже есть?
Если говорить о рефакторинге или экспорте результатов выполнения запросов, они будут доступны уже в первой версии. Например, возможность создавать модель ORM на основе таблиц всегда была доступна в IntelliJ IDEA. Что касается более «серьезных» инструментов, таких как профилирование и отладка запросов, они появятся во второй версии.
Раз вы сами рекомендовали практику как конечный критерий истины, скажите, как можно подписаться и принять участие в вашей EAP-программе по тестированию 0xDBE?
Для участия в EAP-программе достаточно заполнить форму на нашем сайте. Вам будет отправлено письмо со всеми инструкциями и ссылками на актуальную версию. За два месяца после запуска EAP-программы мы уже получили огромное количество обратной связи – более 500 реквестов в наш трекер и более 200 писем с просьбами. В данный момент мы занимаемся улучшениями в области удобства пользования продуктом, а также реализацией наиболее «приоритетных» функций, о которых нас просят наши пользователи.
Вообще продуктовый софтверный бизнес не очень распространен в наших краях. Поэтому, пользуясь случаем, хочется узнать, как рождается новый продукт в недрах JetBrains? Идея приходит в голову кому-то одному, или это результат мозгового штурма коллектива (руководства)?

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

История с 0xDBE не является исключением и во многом повторяет то, что происходило с другими продуктами компании (PhpStorm, PyCharm, RubyMine, AppCode). Инструменты для разработчиков баз данных исторически были частью продукта IntelliJ IDEA. Java-разработчики часто сталкиваются с необходимостью написания и выполнения SQL-запросов. В этом смысле нельзя сказать, что 0xDBE – что-то абсолютно новое. Однако, чтобы инструментами пользовались не только Java-разработчики, но и другие, было принято решение сделать отдельный продукт. Так мы в одночасье оказались на новом «рынке».

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

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

С самого первого дня (и до сих пор) я занимаюсь продуктом IntelliJ IDEA. В этом смысле 0xDBE для меня продукт, на который теперь я трачу свои «20%» времени. Самое забавное то, что меня об этом никто не просил. Если вы меня спросите, зачем я это делаю, я и сам не смогу ответить. Хотя, если подумать, наверное, это и есть главный механизм ротации в JetBrains: ты занимаешься тем, что тебе интересно. Приведу пример.

Как вы знаете, несколько месяцев назад компания Apple анонсировала новый язык Swift для мобильной разработки. Поскольку одним из продуктов JetBrains является AppCode, среда разработки под iOS, встал вопрос о поддержке Swift. Мой коллега Максим Медведев (который в течение нескольких лет занимался разработкой IntelliJ IDEA и в свое время помог сделать прекрасную поддержку Groovy) решил, что ему интересно написать IDE для Swift.

Одной из особенностей работы в JetBrains является то, что разница между продуктами JetBrains довольно «относительна», несмотря на то что эти продукты решают совершенно разные задачи. Разработчики WebStorm и AppCode могут сидеть в соседних комнатах, но во время обеда обсуждать общие задачи. Я бы сказал, что работа в JetBrains напоминает разработку «одного большого продукта».

Вот пример того, как у нас устроена карьерная лестница. Один из наших CEO (да, у нас два CEO), Максим Шафиров, кроме того, что он занимается управлением компании в целом, находится формально в подчинении у Андрея Бреслава, который, в свою очередь, делает язык Kotlin. В целом в JetBrains очень плоская структура. Если ты инженер, ты самостоятельно решаешь, чем заниматься. Тебя никто не контролирует, и ты в любое время можешь подойти к CEO и спросить его мнение по тому или иному вопросу. Единственным формальным правилом является присутствие на ежедневных митингах, где каждый рассказывает, что он сделал за сегодняшний день (в том числе и руководитель проекта).

Вы упомянули Kotlin – знаю о вашей пылкой любви к этому языку, но многие даже и не слышали, что это такое!

Мне очень приятно рассказывать о Kotlin, поскольку он входит в группу «вещей», которые мне лично интересны и которыми я занимаюсь в свободное от работы время. Kotlin – это современный статически-типизированный язык, который компилируется одновременно и в JVM-байт-код, и в JavaScript. Kotlin – Open Source-проект, к которому может присоединиться любой желающий, однако большая его часть пишется командой JetBrains под руководством Андрея Бреслава. До этого Андрей работал в Borland, а также преподавал в Академии современного программирования и в ИТМО. За годы создания профессиональных инструментов для разработчиков в JetBrains созрело и укрепилось ощущение, что сообществу требуется новый современный язык, нечто отличное от Groovy и Scala.

Из преимуществ Kotlin я бы отметил уникальное сочетание гибкости и простоты. Kotlin решает проблемы, накопившиеся в Java, и в то же время предлагает простоту написания и чтения кода. Безусловным преимуществом Kotlin является и его совместимость с платформами Java и JavaScript. Сейчас язык активно развивается, и, я думаю, вы услышите о нем очень много интересного в самое ближайшее время!

JetBrains, насколько я знаю, динамична не только на внешних рынках, куда поставляет все новые продукты и собственные языки программирования, но очень много сил и времени вкладывает в свое внутреннее развитие. Так, у вас в компании есть своя внутренняя социальная сеть JetPeople – что она собой представляет? Расскажите немного об истории и мотивах ее создания.

Да, действительно, в JetBrains есть собственная социальная сеть, которая называется JetPeople. История ее появления характерна для всех других продуктов компании. Если я правильно помню, Алексей Пегов (он занимался разработкой IntelliJ IDEA) за выходные написал небольшое приложение. Приложение позволяло писать сообщения на «стену» команды (аналогично тому, как это делается в группе ВКонтакте или Facebook). Это оказалось очень удобным, позволяло обсуждать важные вопросы между членами команды, не вставая из-за стола. Постепенно приложением стали пользоваться все в компании JetBrains. Совсем недавно Илья Рыженков решил переписать JetPeople, чтобы протестировать новый веб-фреймворк для Kotlin. Сейчас JetPeople разрабатывается на языке Kotlin в основном Ильей в свободное от основных обязанностей время.

Если говорить об инструментах и методологиях, процесс выглядит следующим образом. Каждый разработчик пишет код, который попадает в общий репозиторий (Git). Любое изменение проверяется коллегой. Ты сам можешь выбрать, кто будет проверять твой код. Эта практика широко используется в большинстве компаний и называется «код-ревью». Что касается инструментов: как раз несколько недель назад JetBrains запустила EAP-программу для UpSource, нашего собственного инструмента для код-ревью и комментирования изменений.

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

Расскажите, пожалуйста, о ваших личных впечатлениях от недавнего Hackathon@JetBrains 2014. Многие ИТ-компании игнорируют подобное неформальное времяпровождение своих сотрудников. А какие цели ставит перед собой JetBrains, когда спонсирует и организует такие мероприятия?

На мой взгляд, самым ценным активом любой компании является креативная составляющая сотрудников (а вовсе не человекочасы, как многие привыкли думать). Именно творческая составляющая является источником инноваций и, как следствие, определяющим фактором успеха компании. Инновации определяют скорость, с которой движется компания. Культура хакатонов помогает прививать инновации внутри компании. Кроме этого, хакатон – просто очень веселое и захватывающее приключение, в котором у тебя есть 24 часа, чтобы найти команду и реализовать проект твоей мечты.

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

Статистика говорит о том, что проекты, реализованные в рамках хакатона, могут становиться частью продуктов. Например, в прошлом году Кирилл Лиходедов вместе с Андреем Бреславом сделали удобный просмотр дерева изменений (Git Log). Сейчас это часть IntelliJ IDEA. Иногда внедрение проекта может занимать больше времени, чем это предполагалось на начальном этапе. Так или иначе, судьба каждого проекта полностью зависит от его авторов.

На упомянутом выше хакатоне участники в основном сделали ставку на мобильные приложения с элементами интеграции в реальный мир. А каково, по вашему мнению, будущее мира softdev, куда будет двигаться ИТ-индустрия, какие языки выйдут на первый план по уровню своей полезности и востребованности?

Мне сложно судить о будущем относительно результатов хакатона, тем не менее невооруженным глазом видно, что разработка смещается в сторону мобильных приложений и сервисов, построенных на больших данных (Big Data). Полагаю, этот тренд продолжит развиваться в ближайшее время, и мы увидим много новых продуктов в этой сфере, о которых не могли и предполагать еще вчера. Если говорить об инструментах разработки, наверное, самым актуальным трендом я бы лично назвал Continuous Delivery. Поскольку приложения сегодня работают на множестве устройств (это и серверы в дата-центрах, и мобильные гаджеты), а частота обновлений каждый день растет, многие компании все больше и больше инвестируют в то, чтобы процесс «обновления» программного обеспечения становился непрерывным. Начиная от того, когда разработчик делает изменение в коде, вплоть до момента, когда ваше приложение на iPhone или Android сообщает вам об обновлении. Моя интуиция подсказывает, что этот тренд коснется и инструментов разработки.

Еще одним трендом, который я бы отметил, является оживление интереса к новым языкам. Думаю, появление Swift будет способствовать этому. Вообще я бы посоветовал не останавливаться никогда на одном языке (и платформе) и постоянно изучать все новое. Думаю, это (непрерывное изучение всего нового) и будет самым востребованным навыком в будущем.

Можете ли, опираясь на свой личный опыт, дать совет относительно того, что формирует хорошего, стоящего программиста? Быть может, есть какие-то правила, закономерности… личные принципы?

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

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

Что лично вас сильнее всего впечатлило за время работы в JetBrains?
Мне нравится история о службе поддержки. Не секрет, что поддержка – одно из сильных преимуществ коммерческих продуктов (как в случае с IntelliJ IDEA). С самого первого дня в JetBrains меня не переставало удивлять количество пользователей, восхищающихся качеством и скоростью поддержки наших продуктов. IntelliJ IDEA используется по всему миру в более чем 20 тысячах компаний. Как правило, на любой вопрос, где бы его ни задали, отвечают в течение 30 минут независимо от времени суток. Какого же было мое удивление, когда я узнал, что поддержкой IntelliJ IDEA занимается всего лишь ОДИН (!) человек, и это Сергей Баранов. Это произвело огромное впечатление на меня и стало личным примером профессионализма, на который я и равняюсь до сих пор.

Впервые опубликовано на портале Системный администратор.