2012-05-13: ADD-2012

< Блог:Максима Цепкова

Был на ADD-2012. Посмотрел на передний край разработки. Не на тот, где гиганты презентуют новые решения, и не на высокую науку, а на тот, где практики работают и мыслят о движении вперед. Где рассказывают о своих идеях.

Вообще тут нужно отступление об устройстве мира разработки. Многим представляется, что там есть форпост в лице известных и успешных гигантов разработки, таких как Microsoft, Google, Oracle и им подобных,откуда исходит все новое, а остальные - они просто этим пользуются. Как источник новых идей еще рассматривают науку, из которой тоже могут приходить новые идеи, которыми эти гиганты тоже пользуются. Но не нашу науку, а западную, естественно.

Так вот, реально дело обстоит совсем не так. Причина этому - в творческом характере разработки. Я вполне согласен с достаточно старой и известной теорией Jack W.Reeves What is software design (Корешков/Продукт_инженерной_деятельности_(в_разработке_ПО) русский вариант), что разработка ПО соответствует проектированию в других отраслях. А потому все, кто занимаются разработкой - они порождают новые оригинальные идеи, а вовсе не следуют чужими путями. Естественно, при этом идет массовое заимствование, использование чужих идей в своих разработках - но комбинации тоже являются оригинальными. Если смотреть на аналогии вне IT, то ближайшей, на мой взгляд, является рынок бытовой электроники, на котором сотни фирм производят множество мобильников, телевизоров, пылесосов и других разнообразных вещей, каждая из которых спроектирована более или менее уникальным образом, чем-то отличается от других, и потому идеи, которые при ее проектировании были придуманы - могут представлять интерес. А в IT это же можно сказать про каждую разработку, потому что программный продукт - это индивидуальное, а не массовое производство.

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

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

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

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

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

Так вот, если говорить об основных темах и впечатлениях для меня, то это новые языки и NoSQL базы данных. Темы не новые, но они интенсивно развиваются, и это развитие - интересно смотреть. Об этом было много докладов. Если говорить об языках - то это новый язык Kotlin, который делает JetBrains для JVM, это развитие Groove, Scala, Nemerle, отчасти F#. И это только в один день конференции. Интересно, что в рассказе про Kotlin сказали, что новый язык для JVM независимо начали делать JetBrains, RedHat и Eclipse. А на докладе про Groove докладчика спрашивали - стоит ли сейчас начинать его использовать, или лучше дождаться Kotlin.

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

Про NoSQL базы данных - рассказывали об опыте использования конкретных баз, которых много, со своими плюсами и минусами, область интенсивно развивается и безусловных лидеров там нет.

Еще есть все более развивающаяся тема принципиально другого подхода к разработке, при которой принципиально учитывается ненадежность железа и его сбои - речь идет о высоконагруженных приложениях, работающих в распределенной среде, в кластерной архитектуре, в которой отдельные узлы статистически могут выйти из строя, и выходят. А еще - они могут падать из-за ошибок программистов разных уровней. На работу именно в такой среде ориентированы как многие NoSQL базы данных, так и архитектуры на основе модели акторов - Erlang, Akka. Что интересно, когда на подобном железе работают и традиционные промышленные базы данных, например, Oracle, то вопросы надежности и замены узлов они берут на себя, обеспечивая дублирование или подобные вещи и выдвигая требования к конфигурации. И программист может работать в парадигме абсолютно надежной среды, о которой позаботятся админы. А вот сейчас от такого подхода начинают отказываться. Такая надежность оказывается несоразмерно дорогой по сравнению с ущербом от потерь. Поэтому разработчику предлагается самому о ней позаботится на верхнем или среднем уровне. Например, заказать дублирование некоторых данных на нескольких узлах. Или для критичных входящих запросов - позаботится о проверке, что запрос был принят и обработан, а не пропал по причине крэша ноды системы, а если нет - запустить еще раз. И эта парадигма начинает распространятся из социальных сетей, где надежность, в общем-то, не слишком важна, в область таких приложений как, например, электронные аукционы. Кстати, разработка в облаке тоже не дает надежности - в датацентры амазона, например, попадают молнии, выводя их из строя вместе с данными, и оказывается, что такие кейсы в модель надежности заложены не были.

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


[ Хронологический вид ]Комментарии

(нет элементов)

Войдите, чтобы комментировать.