суббота, 7 мая 2011 г.

addconf 2011 - долгое послевкусие

Типа вступление :)

Как многие знают, 29-30 апреля в Питере прошла конференция Application Developer Days 2011 (http://addconf.ru/add_2011). Впечатления у меня о ней остались сугубо положительные, но пока они еще немного сумбурные. Я сам выступал там с докладом по масштабированию систем управления поставками (http://addconf.ru/event.sdf/ru/add_2011/authors/MikhailAntonov/269), ходил на некоторые, наиболее мне интересные, доклады, и изрядно пообщался в кулуарах с интереснейшими людьми. Так же, очень хорошее впечатление оставила организация (и организаторы) конференции, да и Питер в целом. Но обо все по порядку. Погнали.

Мое выступление

Если вам интересны слайды, рекомендую подождать, пока Стас Фомин и Андрей Майоров выложат обработанное видео на офф. сайте конференции, там будут и слайды, и крупные планы, и выражение моего лица в ключевые моменты, и все такое.

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

Что было? Было внимание ко мне и тому, что я говорил, со стороны присутствующих в зале, не было (кажется :)) людей, сидящих в первом ряду и втыкающих  в нетбуки, айфоны и айпэды, было немало вроде бы искренне-заинтересованных вопросов после моего доклада. Было обсуждение на час-полтора в коридоре после выступления, на котором мы обсудили кучу интереснейших, но уже довольно узкоспециальных вещей (вроде оптимизации тяжелых баз данных на Oracle,  бизнеса управления поставками, data mining-a, статистического анализа, бизнес-логики на Groovy и почему это не совсем маразм, и еще кучу всего). В итоге собрали неплохую такую кучку в кулуарах, даже из JetBrains некоторые ребята подтянулись послушать и пообщаться :) Были люди, подходившие ко мне после доклада, хлопавшие по плечу и говорившие - "чувак, ты реально зажег". Были, наконец, какие-то упоминания в паре блогов и в твиттере.

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

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

И тут же небольшое замечание. Я старался держаться на сцене энергичным и бодрым, а не как манакен с вмонтированным устройством для озвучки слайдов, но этому препятствовал в какой-то степени микрофон, который приходилось держать в руке близко к ротовому отверстию. Реально - радиогарнитура, прикручиваемая к голове был бы куда удобнее (с другой стороны, микрофон для многих докладчиков решает извечную проблему - куда же девать руки во время рассказа:))

А так - все было классно. Не считая некоторого волнения - получил искреннее удовольствие от выступления, от ответов на интересные, по существу, вопросы в конце и от общения с аудиторией. Надеюсь, она тоже свою порцию удовольствия получила :)

Запомнившиеся доклады

Первым докладом, на которые я пошел, был доклад Максима Мазина о  LOP - Language Oriented Programming и MPS (Meta Programming System) - продукте JetBrains, позволяющим, гм, визуально, конструировать DSL языки (и надстройки над существующими полноценными языками). Если мне не изменяет память, это был тот же самый доклад, который Максим рассказывал на JavaOne в Москве за две недели до этого, но, поскольку на JavaOne я его пропустил - в этот раз сходил на него и не пожалел.

Для меня это был один из самых интересных докладов, т.к. мы тоже занимаемся DSL (точнее, начинаем заниматься) в своем проекте, и тут любые знания и любой опыт кстати. Сам доклад был живой и интересный, но конечно, за отведенные 40 минут рассказать все было нереально. Именно потому после этого доклада большая толпа народа клубилась возле стойки с расшаренными мониторами в коридоре, выпытывая у Максима детали, наблюдая, как он вживую, при нас, реализует простейшую DSL-надстройку над Java (добавляет поддержку RW-lock на уровне синтаксиса), потом допиливает ее, добавляет туда поддержку Java-вских типов и прочее. Это общение о DSL-ах вообще и MPS в частности оставило очень хорошие воспоминания. Всегда приятно пообщаться со знатоками.

До этого я слышал про MPS, но разве что краем уха. Мне понравилась сама идея JetBrains - создать платформу / инструмент для облегчения разработки DSL-ей, и понравились те возможности, которые она дает. Стало даже немного обидно, что мы используем Eclipse и сильно на него завязаны :) Ну да ладно, JetBrains в любом случае молодцы, что смело вкладываются в продуктизацию таких черномагических (для многих) вещей, как метапрограммирование и DSL. Удачи вам в деле проталкивания этого на большой рынок!

После этого доклада, как я уже сказал, я завис в кулуарах на час или полтора, и потом... потом я забрел на вторую половину доклада Ольги Павловой об интерфейсах. Что могу тут сказать - докладчица выступала ярко, живо, рассказывала об интересных, в целом, вещах, но поскольку я в эргономике, usability, дизайне и всем таком особо не разбираюсь, да и писать интерфейсные части не люблю (хотя приходится время от времени, конечно), то я понял, что этот доклад - ну просто не для меня. Все отлично, просто я - не целевая аудитория. Ушел, не дослушав до конца. Ольга - простите :)

После этого немного побродил по коридорам, поприставал к ребятам из JetBrains, связанным с Resharper-ом, и пошел на доклад Яши Сироткина - "программирования для самых маленьких". Что тут сказать - класс и уровень докладчика виден сразу, основатель российского JUG-a все ж таки. Доклад шел бодро и четко, внимание зало было все на Якове. Ну а фраза ближе к концу "АВТОБУС ! НЕ ! ПРИДЕТ !" была отретвитчена много раз и гуляла из уст в уста еще долго.
В общем, доклад скорее из серии отвлеченно-философских, при этом живой, интересный и полезным. Основная идея доклада - то, что в программировании важен не процесс как таковой (Agile ли у вас, или что угодно другое), а получение реального результата, быстро, и укладываясь в бюджет - для меня в общем-то была очевидной, но тем не менее, очень важной. Неожиданно понял, что я видел немало людей, сфокусированных на разнообразных процессах. Процессе багтрекинга, подготовки отчетов о проделанной работе, процессе Continuous Integration, процессе code review, семействе процессов Agile, и все такое - вместо того, чтобы быть сфокусированными на поставке работающего софта. Собственно, я и сам бывают, увлекаюсь процессами (т.к. верю, что правильный процесс в малых дозах способствуют достижению результата) - так что я решил для себя, что отныне буду осторожнее с процессами.

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

После обеда заглянул на доклад Жени Кирпичева, где он рассказывал про хитрый инструмент собственной заточки для анализа и визуализации логов, который помогает анализировать профили загрузки на кластерах (основное его применение, как я понял). Доклад был ничего так, много любопытных графиков, из которых Евгений извлекал скрытую информацию и разъяснял остальным. Я рассчитывал поймать его после доклада, т.к. знаю что он адепт функционального программирования, редактор журнала fprog.ru, хаскеллист, знаток хайлоада и вообще незаурядная личность, но он, к сожалению, быстро раскланялся и удалился. Ну ладно, как-нибудь еще пересечемся.

Доклад моего бывшего коллеги Андрея Реброва мне тоже понравился. Четко, сжато, быстро, обзорно по основным яваскрипт-фреймворкам для мобильной разработки. JQuery Mobile, Sencha Touch и иже с ними (и даже фреймворк с неприлично выглядящим для русского глаза названием XUI :)). Хороший такой доклад, и рассказан был живо и энергично. После него отметил для себя, что раз уж мы активно используем ExtJS, то и на Sencha Touch надо бы взглянуть попристальнее.

На рассказ Сергея Туленцова по MongoDB немного опоздал, и определенно часть недопонял / упустил, но то что я услышал мне понравилось. По сути, как я помню, они пишут приложения на Вконтакте, которое собирает от пользователей ответы на странные вопросы типа "Как вы думаете, способен ли ваш друг А выпрыгнуть из штанов ради внимания от девушки Б". Короче, приложение по своей полезности как раз под целевую аудиторию контакта. Но доклад был хороший, интересный. Я даже искренне принял докладчика за одного из коммитеров / разработчиков этой  MongoDB - что, определенно, для него большой комплимент.

Ну и последний доклад на котором я был в этот день был доклад от DZ о взаимоотношениях с заказчиками. О программировании там не было ровным счетом ничего, но всем понравилось - уверен, на 99% из-за личности / харизмы самого DZ.

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

Успел, хотя немного и не с начала, на круглый стол, организованный HeadHunter / IT-Dominanta / JetBrains, посвященный состоянию IT-индустрии в Питере. Понял вилки местных зарплат, основные схемы работы компаний, и почему JetBrains перевозит часть своих разработчиков из Питера в Мюнхен, в Германию.

После чего были опять кулуары, коридоры... Заглянул на доклад Андрея Карпова, посвященный статическому анализу кода на С / С++. Интересные примеры трудно находимых ошибок в популярных продуктах, таких, например, как Miranda. Доклад был хорош, и продукт видимо тоже - неясным лично для меня осталось только, как извлекать прибыть используя этот инструмент :) Точнее даже так - насколько часты и критичны те ошибки, которые не отлавливаются юнит-тестами, но которые отлавливаются статическим анализом, и как правильно установить процесс ревью этих ошибок, чтобы получать от этого бенефиты, не тратя слишком много времени на сам процесс (см. доклад Яши Сироткина о том, что процесс ради процесса - зло).

Дальше был отличный доклад Владислава "VladD2" Чистякова, тех. редактора журнала RSDN и по совместительству, главного нынешнего разработчика языка Nemerle. Доклад сам был хорош - единственное замечание по существу - ощущение такое, что аудитория не тянула уровень доклада, и докладчик это в общем понимал, из-за чего перескакивал со слайда на слайд, уходил в разъяснение каких-то деталей  и прочее. Но, повторюсь - лично мне было очень интересно.

Дальше был обед, и после него мой собственный доклад об управлении поставками, а после него часа на полтора обсуждения в кулуарах, из-за чего я, к сожалению, пропустил вторую часть доклада Влада о Nemerle, и успел только на окончание, в котором Денис Рысцов и Влад демонстрировали написанный на Nemerle.PEG парсер JSON-a. Было круто, но по моему, подавляющая часть аудитории не понимала до конца, что, и, главное, КАК там происходит :)

Ну и наверное, это все что мне запомнилось по докладам.

В кулуарах, люди, докладчики и организаторы

 Из докладчиков и просто людей, с кем пообщался - запомнились все тот же вездесущий Яков Сироткин, с которым я до этого оффлайн никогда не встречался..Запомнился Максим Мазин, с которым плодотворно поговорили про языки программирования, метапрограммирование, DSL-языки, грамматики, и в конце - про возможность проведения в Питере конференции по Groovy (тут спасибо Лере Андриановой, которой эта идея возможно, сразу показалось немножко бредовой, но она вроде бы восприняла ее позитивно :)). Еще запомнился Максим Цепков, которому была очень близка моя предметная область, и с кем мы ее обсуждали до и после моего доклад, VladD2, от которого я узнал много интересного о том, что происходит сейчас с Nemerle. Еще запомнились многие, но тут уже перечислять поименно не буду, извините.

Разве что, не могу не сказать про Стаса Фомина, Андрея Майорова и Владислава Орликова. Все они оба дня из кожи вон лезли, чтобы обеспечить нормальный ход конференции, успевая при этом ходить на доклады, постить воодушевляющие твиты, обсуждать технические тонкости в кулуарах. Респект. Стас даже дал мне на один вечер свой запасной ноутбук для дополнительной подготовки (спасибо!).

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


Единственное вот - может, не стоило начинать конференцию так рано, в 9-15? Все таки среди программистов много сов :)

Волшебный город на Неве
Ну и, несмотря плотное расписание конференции, я каждый вечер, включая дни приезда и отлета, гулял по ночному Питеру. Невский, Площать Восстания, Дворцовая, Аничков мост, канал Грибоедова, Фонтанка, Исаакиевский собор.. Питер есть питер. Коренные петербуржцы - цените то, что вы живете в одном из красивейших городов мира!

16 комментариев:

  1. Анализ загрузки кластеров - основное применение этого инструмента для меня, поскольку я занимаюсь кластерными вычислениями :) Так-то он ни в коей мере под кластера не заточен, и равно полезен и в любых других задачах, просто на кластерах без визуализации вообще делать нечего. Его используют еще в Яндексе (не для кластеров), в RethinkDB (не для кластеров), и в ряде других мест (тоже не для кластеров). Может, конечно, кто-нибудь и для кластеров использует.

    ОтветитьУдалить
  2. О, это интересно. Сорри - видимо тогда я на твоем докладе не так понял, или просто все ключевые и интересные примеры, которые ты приводил там были именно про кластеры :)

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

    Можно вопрос тогда уж - а ведь он на хаскелле написан, хоть это я правильно запомнил? Если да, то какая была базовая мотивация? :) Тебе на самом деле было проще и быстрее писать именно на нем, а не на, скажем, Руби, или писать на хаскелле для тебя - большой фан само по себе, или хотелось доказать, что на Хаскелле можно писать удобные и полезные программы?

    ОтветитьУдалить
  3. тест тест тест... пришел ли предыдущий комментарий или blogspot его продолбал?

    ОтветитьУдалить
  4. Да, прошел (если ты имеешь в виду коммент который начинался "Анализ загрузки кластеров - основное применение этого инструмента для меня"), просто почему-то у меня теперь после обновления блоггера все комментарии стали падать в очередь на ревью / аппрув на публикацию, хотя я никогда такого не настраивал, и не знаю где это отключить - т.к. это вроде бы уже отключено. А сообщение прошло, да.

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

    ОтветитьУдалить
  6. Блин, значит коммент все-таки похерился. Пересочиню.

    Яндекс его использует не то чтобы прям в промышленных масштабах, просто несколько моих знакомых используют, да и я сам его написал еще в бытность в Яндексе, и использовал не на кластерах; в полной версии презентации http://jkff.info/presentations/two-visualization-tools.pdf есть несколько слайдов про это.

    Да, написан на хаскелле; изначально просто для фана, но хаскелл себя окупил многократно - очень быстро пишется и обычно работает сразу (это было очень полезно, когда нужно было срочно что-то выяснить по логу, и я понимал, как это можно было бы сделать, но нужной фичи еще не было - я просто брал и дописывал ее по-быстрому); отладчик мне ни разу не пригодился.
    Я конечно мог бы его и на джаве какой-нибудь написать, ничего принципиально нереализуемого там нет конечно - но геморроя было бы намного больше, и скорее всего на половину фич я бы просто махнул рукой и не стал бы реализовывать.
    Насчет руби - я языки с динамической типизацией очень не люблю :)

    ОтветитьУдалить
  7. Чтож, понятно:)

    А о том, чтобы написать скажем, на Scala, не думал? Мне всегда Haskell казался каким-то слишком не от мира сего языком. Я правда на нем только лабы в универе писал, но впечатление осталось такое.

    Про динамическую типизацию - я тоже их не очень люблю, все эти "NoSuchPropertyFound", "NoSuchMethodFound" в рантайме после опечатки бесят) Но и объявлять типы руками каждый раз как-то громоздко. Ищу нормальный, удобный и умный вывод типов, короче)

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

    ОтветитьУдалить
  9. Хаскелл более чем "от мира сего", у него много тысяч библиотек на все случаи жизни - от графовых алгоритмов до веб-фреймворков, очень выдрюченный компилятор и рантайм. Просто тебе в универе какую-то фигню видимо про него преподавали (which is not uncommon) :)

    В хаскелле не надо объявлять типы руками каждый раз. У него мощный вывод типов. Но все равно считается хорошим стилем объявлять типы для определений *верхнего уровня*.

    ОтветитьУдалить
  10. "Единственное вот - может, не стоило начинать конференцию так рано, в 9-15? Все таки среди программистов много сов :)"
    Много докладов интересных было, хотелось всем дать возможность выступить.

    ОтветитьУдалить
  11. "Увы, далеко не на всех, даже довольно хорошо оборудованных площадках есть радиогарнитура. Хорошо хоть есть радиомикрофоны."

    Я это отлично понимаю, и это не критика, а как бы пожелание куда расти)

    "Единственное вот - может, не стоило начинать конференцию так рано, в 9-15? Все таки среди программистов много сов :)"
    Много докладов интересных было, хотелось всем дать возможность выступить"

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

    ОтветитьУдалить
  12. "Хаскелл более чем "от мира сего", у него много тысяч библиотек на все случаи жизни - от графовых алгоритмов до веб-фреймворков, очень выдрюченный компилятор и рантайм. Просто тебе в универе какую-то фигню видимо про него преподавали (which is not uncommon) :)"

    Мне его никто не преподавал никогда:) это я сам пытался для себя его ковырять, как собственно почти все из того, что я знаю. Я его очень уважаю, но для меня сейчас кажется более не знаю, дальновидным что-ли смотреть на языки работающие в Java/.NET рантайме, это как-то выглядит перспективнее. Хотя, я знаю что эти рантаймы не умеют многое из того, что умеет делать нативный Haskell :). Haskell я хочу подучить, но скорее чтобы подточить мозги на функциональном программировании, а не для реальных задач все же.

    Кстати, а ты Jaskell пробовал?

    ОтветитьУдалить
  13. Я нарвался на этот ваш пост, размышляя о тенденции некоторых компаний "перевозит часть своих разработчиков из Питера в Мюнхен" и вообще в Европу. Не подскажите какая основная аргументация была у JetBrains?

    ОтветитьУдалить
  14. Я не помню точно, и не буду говорить за JetBrains, но я сам лично догадываюсь что причины такие:

    1) Стоимость жилья и вообще товаров, собственно стоимость жизни в Москве/Питере и Германии. Соответственно, какую зарплату надо платить. Вероятно, Мюнхен дешевле по многим параметрам и не хуже по инфраструктуре.

    2) Я предполагаю, что многие очень хорошие разработчики хотели бы работать на JB, но в то же время хотели бы (по разным причинам) жить и работать в западной Eвропе/США. Т.е. им сейчас приходится делать трудный выбор - работать на JB или работать на возможно менее интересного и крутого работодателя, но находящегося "там".

    Т.е. у JB встает выбор - открыть офис разработки в Германии (+ возможно, в других местах), и перевести туда часть ключевых разработчиков, кто захочет, или же мириться с тем, что часть из них будет уходить от них.

    Все это только мои догадки :)

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

    ОтветитьУдалить
  16. Спасибо. Это все понятно и логично.
    Думал что у них есть какие-то подводные камни и свои хитрости-тонктсти...

    ОтветитьУдалить