2015-04-05

О CodeFest 2015

О Кодефесте написать пришла пора. Кодефест о себе не напишет сам.
Кодефест доставил. Местами даже было улётно. Хоть я уже третий год порываюсь изменить традиции, и забить на этот Кодефест, например, в пользу Дампа, но всенепременно в формирующейся на глазах программе проскакивает какой-нибудь чудный докладчик с чудной аннотацией к нему. И приходится ехать. Общаться с омскими коллегами.
CodeFest
Ехать в купе значительно комфортнее, чем в плацкарте. Я в нем в длину помещаюсь. И почти нисколько не дороже, если брать билеты заранее и не вестись на попсовые фирменные поезда.
Бывает так, что поезд, отправляющийся от Омска на полчаса позже, приходит в Новосибирск на два часа раньше. Чем другой поезд. Хотя вроде по одним и тем же рельсам едут.
Хряпнуть кофе в пять утра в Новосибирске возле вокзала можно либо в KFC, либо, если пройтись чуток по Вокзальной магистрали, в People's. Вот за такие часы работы, сдобренные действующим в это время бизнес-завтраком, респект и уважуха пиплам. В субботу утром народ, как обычно, догуливал вечер пятницы.
Еще мы три вечера зависали в Шафране. Знатоки восточной кухни утверждают, что она у них хороша. Ну а мне хватало отсутствия лишних пьяных посетителей, спокойствия, пива и закуски.
В понедельник, уже после кодефестов, занесло нас в НИИ КуДА. Это уже в Академгородке. Я был в сосновом лесу Академгородка, и меня не съели медведи. НИИ КуДА становится в моем личном рейтинге заведений, куда надо постараться обязательно попасть при посещении города, где интересно изучать обстановку и меню, на первое место. Ранее на первом месте была Пожарка в Екатеринбурге.
Хостел Цоколь хорош. Но он в подвале, и в дальних комнатах невыносимо душно спать. Хостел Достоевский испортился. Шумно, грязно, душ на ремонте. Хостел Royal, говорят, ничего. Но тесновато и всего лишь один душ.
Автобусы в Экспоцентр доставляли. Правда, в этот раз мне показалось, что они были несколько ушатаны и слегка вонючи. Очереди на регистрацию, благодаря предварительному хэшированию, не было. Но некоторый диапазон хэшей оказался утерян, и людям рисовали бейджи маркером. Очереди в гардероб и за обедом были, как обычно. Впрочем, бумажные пакеты для еды несколько ускорили продвижение обеденной очереди.
Dino Esposito
Ключевым докладчиком был Дино Эспозито. Широко известный в мире .NET товарищ, как оказалось. Но, несмотря на титул евангелиста и .NET прошлое, Дино вещал очень правильные вещи, не скатываясь на восхваление конкретных технологий и решений. Это очень здорово. Редко сейчас кто промывает мозги на таком высоком уровне, не вдаваясь в отвлекающие частности.
На киноут он продвигал DDD. Даже расширил идею до UX-Driven Design. Мол, копаясь в коде, помните, ради кого это все и зачем это нужно. Это все правильно. Но у всех чего-то-там-driven design концепций есть проблема. Проблема применимости в реальной жизни. В большинстве случаев нашего аутсорса до дизайна здесь дело даже не доходит. Дизайн происходит где-то там, на стороне заказчика. А до нас доходят лишь готовые указания, часто без объяснений «почему», так необходимых русскому человеку. В режиме «должно было быть готово еще вчера» даже до TDD дело не доходит, куда уж DDD.
На второй день Дино вещал о CQRS. Эта концепция близка к CQS, когда мы разделяем команды, которые модифицируют состояние объекта, от запросов, которые лишь запрашивают, но не меняют состояние. Здесь мы расширяем идею до всей системы, или до специфичного bounded context. Модификацию данных в нашей системе мы делаем одним способом, со своими моделями и командами. А чтение данных делаем другим способом, с другими моделями и запросами. Логика тут есть. Это действительно может упростить дело в сложных случаях, ведь придется думать о перемещении данных лишь в одном направлении. И это хорошо ложится на веб, где запросы случаются гораздо чаще, чем команды модификации, и уже на уровне протокола эти вещи разделены — разные типы HTTP запросов. Поначалу я воспринял этот CQRS как откровение, но быстро выяснилось, что опытные коллеги уже давно используют подобные техники. И таки Фаулер описал это еще в 2011.
Еще Дино выступал на квартирнике вместе с Михаилом Яричуком. На тему Polyglot Persistence. Ребята повторили тезисы отличной книги опять-таки Фаулера. Пришло время, когда у вас на проекте будет более одной базы данных. И это нормально. И нормально, что некоторые из этих БД будут NoSQL. Вот, собственно, о том, когда нужно NoSQL, а когда не нужно, и рассуждали.
Пару лет назад подобные рассуждения были бы более уместны. И мы с Гришей могли бы зажечь не хуже. Но нашу заявку отклонили, потому что организаторы привыкли «привозить спикеров, которые в Сибири ни разу не выступали». Ну тогда надо было бы половину докладов, сделанных самими двагисовцами, тоже выкинуть. Ну да ладно. Проехали.
Пара докладов на дизайнерской секции, куда я намыливался, сдулись. Жаль. Зато Геннадий Лохтин из Яндекса рассказал о ближайшем будущем интерфейса Яндекс.Браузера. Дизайнеры аплодировали стоя. Действительно, презентация была очень зрелищная. И, в общем, я — за минимализацию интерфейса самого браузера и максимизацию собственно контента, если это не в ущерб навигации. У Яндекса, пожалуй, и получилось. Вот только не надо громадного фонового видео. Мне как-то русзена достаточно.
Явным трендом конференции были реактивные потоки. Они же data flow, они же akka stream, они же… Да как их только не называют. Алексей Романчук рассказал именно про Akka Streams. Игорь Кашкута же рассказал о реактивном программировании применительно к iOS. Я не понимаю всей этой шумихи. Akka, может, и решает какие-то частные проблемы, но это точно не серебряная пуля. Зачем нужна еще какая-то функциональная абстракция в мобильном GUI, где, как и в любом GUI, все уже и так построено на событиях, не ясно. И вообще, вся эта мода на функциональщину, которая уже проникла в тот же C# в виде LINQ, и проникает в Java, начиная с восьмой версии, имхо, увеличивает удобство написания кода, но сильно ухудшает читаемость кода.
Кстати, о читаемости. В чудном, но узкоспецифичном докладе Ивана Ремизова, наглядно видно, что оптимизация, в данном случае скорости выполнения, сильно портит читаемость. Оно в общем-то и понятно. Но, по возможности, не делайте так. Пишите код так, будто сопровождать его будет маньяк, который знает, где вы живете. ©
Часто поминали микросервисную архитектуру. Но это были доклады о суровом жизненном опыте. Без особой пользы для тех, кому придется пройти по той же дорожке.
На Макса Дорофеева я благополучно не влез. Дважды. Зато чуток поболтал с ним за кофе. Оказывается, он стал почетным омским джедаем.
Макс Дорофеев
Олег Бартунов вновь радовал новостями про PostgreSQL. Больше всего я был поражен тем, что Олег, впервые на моей памяти, уложился во время, отведенное для выступления. Хоть, как всегда, большая часть интереснейших слайдов так и не была продемонстрирована. Надо их пересмотреть. Ну как уложился, после обеда его утащили на квартирник, где он отдувался еще полдня, до самого закрытия конференции. Фиг с ним, с языком запросов для JSON. А вот новости об импортозамещении и легальном положении Постгреса в России, в общем, радуют.
Под конец Николай Чабановский объявил о скором открытии русскоязычного StackOverflow, на базе ХэшКода. Ой, они уже запустились!
Последний секретный закрывательный доклад был, конечно, сюрпризом. И это был лучший доклад конференции. По крайней мере по количеству хорошести на минуту доклада :) Думаю, самый распоследний кодер в зале задумался: тем ли он занимается, делает ли он филипинских бедняков счастливыми, как жить дальше. Спасибо.
Я снова отметился на стенде JetBrains. На этот раз, в ответ на призыв в Твиттере, пожаловался на неконсистентность некоторых сочетаний клавиш в IDEA. Ну и традиционно поучаствовал в розыгрыше лицензий и не выиграл.
гитарист
Ах да. Клюковка из брусники — отвратительна. Старое доброе виски входит в организм лучше.