2015-04-05: CodeFest в Новосибирске - высокотехнологичные доклады и хорошая энергетика
Неделю назад был и выступал на CodeFest в Новосибирске. Ее организует 2GIS и я немного опасался ехать на конференцию одной компании. Но опасения — не оправдались, компания ее делает не столько для себя, сколько для ИТ-сообщества. Задача — дать возможность сибирским ИТ-шникам посмотреть мировой уровень, не выезжая в Москву или за рубеж. И она — выполняется, 1700 участников, не только из Новосибирска, но и из других сибирских городов. Насыщенная программа, 6 треков и при этом — хороший уровень докладов, много высокотехнологичных докладов. Организаторы тщательно отбирают и приглашают докладчиков, и работают с ними над качеством доклада. И очень хорошая энергетика и на докладах и в кулуарах, много общения.
Я на конференции впервые, так что не могу сравнить с прошлогодними, но по отзывам других участников — конференция успешно развивается. Так что в моей личной копилке хороших конференций добавилась еще одна. Обидно только, что на всех нельзя бывать каждый год — все-такие их много. Вообще развитие ИТ-сообществ в регионах меня определенно радует. На эту тему на конференции был отдельная дискуссия, на котором организаторы сообществ из разных городов делились опытом и обсуждали вопросы.
А еще немного жаль, что из-за насыщенной программы сам город посмотреть не удалось. Хотя по центру поздно ночью немного прогуляться получилось. Но без фоток. Зато в аэропорту по приезде сразу увидел такие вот прикольные статуи в стекле.
А теперь о докладах. Тут надо отметить, что рамочная тема конференции — Web-разработка в широком смысле, включая нагруженную серверную часть и мобильные интерфейсы. Просто потому, что большинство участников занимаются именно ей — как и большинство ИТ-шников в мире. А организаторы конференции, как я писал, ориентированы на участников, их цель — дать им возможность поднять свой уровень.
Dino Esposito
Мне очень понравились оба доклада Dino Esposito. Первый был про Domain Driven Design (DDD), подход к разработке на основе построения моделей. В противовес более распространенному и простому подходу, при котором разработка идет в три простых шага: ER-диаграмма, Код бизнес-логики и UI, при чем проектирование кода бизнес-логики еще иногда и упускается. Вообще я когда слушал — подумал, что такой простой подход: ER-model + Code + UI — это отражение прочитанной мной еще на заре работы в ИТ книжки «Алгоритмы + Структуры данных = Программы». Автора я забыл, а название, и сам подход — помнил, на то время нетривиальной мыслью были как раз про структуры данных, потому что был Фортран тогда соперничал с Паскалем, а C только появлялся. Полез искать ссылки (можно написать «гуглить», но искал-то я Яндексом, он мне больше нравится) — и обнаружил, что книжка написана Николасом Виртом еще в 1975, когда ни С ни UI — не было. А русский перевод вышел в 1985, но я читал позднее, когда начинал программировать на персоналках и осваивать С.
Тема DDD мне близка, и у меня самого много докладов об этом подходе, но я всегда рассказывал о схемах и практиках применения и конкретных подходах к построению моделей для enterprise-разработки, в которой мы этот подход успешно применяем. И не задумывался о том, насколько широко распространен подход предыдущего поколения. А распространен он действительно широко, многие квалифицированные разработчики и аналитики мыслят таким образом. Хотя казалось бы, особенно аналитикам, работать с моделями — просто необходимо. Но, кстати, Дино рассказывал, что даже в таких компаниях, как Microsoft подход DDD многими не понимается, хотя сам Microsoft этот подход пропагандирует в своих архитектурных материалах.
Естественно, Дино не только сопоставлял DDD с ранними подходами, но и представлял его ключевые составляющие: Language and semantics → Data and Documents → User Experience. Показывал на примерах, что значит «разработать и использовать единый язык (Ubiquitous Language) проекта», включая понятия ограниченных контекстов. Формулировал, в чем отличие Data and Documents от ER-модели, а UX-driven design от обычного проектирования UI. Но это я подробно пересказывать не буду.
Второй доклад Дино был про, казалось бы, давно известную тему CQRS. Однако, в докладе тоже был про архитектуру: как подход CQRS меняет разделение на уровни (layer) в проекте. И лично я этих архитектурных диаграмм раньше не видел, воспринимая подход больше на уровне шаблонов и указаний на разделение запросов и команд локально. А применение его как архитектурного подхода дает гораздо более жесткую изоляцию. И, кстати, быстрый поиск таких диаграмм не дает, так что мы имеем дело с новой практикой.
Поэтому я кратко изложу суть. При этом подходе классические уровни Application и Domain разделяются по вертикали на два: в столбике Command остается классический вариант, а в столбике Query они заменяются на DataAccess + DTO.
И это дает независимую архитектуру, включая проектирование, работу со сложностью и оптимизацию. Включая, в пределе, различные хранилища данных для Command и Query, первое из которых оптимизировано под обработку команд, а второе — под запросы. Для Command при этом применяется Event-driven Architecture. В случае применения DDD разделение на Command и Query применяется для каждого контекста, и зависимости отслеживаются на этом уровне. При это обращение к Query-части гораздо распространеннее.
В заключении про доклады Дино я хочу сказать вот какую штуку. Для тех, кто применяет подобные практики Дино говорит достаточно очевидные вещи. Но вот задумайтесь, почему так мало людей их применяет…
Мой доклад
На конференции я рассказывал про эволюцию подходов к управлению проектами и критериев качества в ИТ. Не просто рассказывал, но и представлял Big Picture этих изменений не просто как истории, а в виде векторов развития, на диаграмме альф OMG Essence и другие. И показывал применение этих картин на практике. За неделю до этого доклад был рассказан на AgileDays, по ссылке есть тезисное изложение, а не только слайды и уже опубликованное видео. И на CodeFest участники хорошо оценили доклад — не просто как хорошо рассказанный, а по содержанию. Меня это радует — значит, я не зря стараюсь такие доклады готовить.
Максим Дорофеев
У Макса был большой рассказ про ретроспективы, который я слушал на других конференциях. И ржачный доклад про эффекты, проистекающие из неспособности думалки в мозгу работать быстро, долго и качественно и потому пропускающей быстро принимаемые «очевидные» или стереотипные решения, которые выдает первичная обработка информации — она быстрая. Эффекты иллюстрировались не только на индивидуальном уровне — ими заражается вся компания, если не принимать специальных мер. В гротескной форме, представленной в докладе, они выглядят смешно, но когда сталкиваешься с ними на практике, пусть в более мягкой форме — не смешно, а печально. По сути, медленная и ресурсозатратная думалка мозга становится существенным ограничениям, узким звеном в терминах теории ограничений.
Как метод борьбы с этим Макс называл Getting Things Done Дэвида Аллена. Но не рассказывал — о нем в докладе был один слайд, поясняющий конструкцию. Потому что те, кто проникнутся — найдут и изучат, материалов — множество. А для остальных рассказывать не слишком полезно. И дал ссылку http://bit.ly/jedi-tech на mindmap, в котором он собрал ссылки на материалы. Но вот GTD — это индивидуальный метод. А что делать на уровне компании Макс не говорил.
Другие доклады
Я не буду подробно рассказывать про другие доклады. Потому что про технологические — надо смотреть детали, они ценны именно этим. А я не являюсь техническим специалистом по многим темам.
Отмечу качественные доклады, которые мне понравились. Сразу замечу, что я был далеко не на всех докладах — при 6 параллельных треках это невозможно.
- Олег Бартунов. NoSQL для PostgreSQL: Jsquery — язык запросов. По-сути о том, как в реляционку встраивают эффективное NoSQL хранилище. Подобно тому, как функциональные возможности встраивают в объектные языки, например C#, переходя к мультипарадигмальным языкам. Если так пойдет дальше, то через некоторое время опять реляционные хранилища станут основными, кроме отдельных специальных случаев — потому что применение NoSQL оправдано производительностью, а если мы умеем это в реляционке — то выгоднее все держать в единой базе.
- Что интересно, доклад показывает логику развития open source софта: доработка сейчас сделана поверх основного движка, с тем, чтобы обеспечить востребованный конкретным Заказчиком (которым является WarGaming) функционал. При этом она тоже в open source и общедоступна. А в планах — включение этого функционала в основной движок. Не из эстетических соображений, а для гладкой сшивки с языком запросов, планировщиком и общими механизмами.
- Кирилл Скрыган. JetBrains. ReSharper vs Roslyn. Достаточно детальное сравнение реализации, с погружением в технику. Интересно не только как сравнение среды компиляторов, но и с точки зрения возможностей и ограничений, которые дает в значительной мере функциональный подход, примененный в Roslyn.
- Алексей Романчук. 2ГИС. Быстрое построение backendов c помощью реактивных потоков. Реально высокотехнологичный доклад в переполненном зале. Увы, это проблема больших многопоточных конференций: на интересный доклад приходит столько народа, что они не помещаются в зал.
- Денис Речкунов. Flamp. Изоморфный JavaScript — будущее уже здесь. Технически доклад — интересный. Много исторического обзора. Но сильно не хватает концептуальной, архитектурной рамки: зачем этот изоморфный javascript нужен. Не только в целом, но и с трассировкой до конкретных технических решений: зачем нужно, чтобы определенные блоки были изоморфны, на каких приложениях это играет и каким образом. Потому что возможность выполнения кода и на клиенте и на сервере ведь не является абсолютной ценностью.
Менеджерские и мотивационные доклады, с моей точки зрения, часто были поверхностные, поэтому в обзоре их не будет. Но я понимаю, что многим они будут нужны и полезны.
[ Хронологический вид ]Комментарии
Войдите, чтобы комментировать.