Про монолиты и кубики

Тема и погода вызвали легкий резонанс. Это уже целых два повода ответить на комментарии.

Пойдем от обратного. Какие задачи не решаются сцепливанием маленьких тулзов? Впадая глубоко в схоластику, таких вообще нет. Формально можно “рисовать” картинки поочередным запуском 1 из 100 махоньких бинарников, каждый из которых ставит точку, проводит кисточкой, применяет фильтр. Практически нельзя, и все берут Photoshop – хорошо интегрированную коллекцию кисточек и фильтров. (Попутно плюясь от хреново интегрированных коллекций типа Gimp.) Изоляция в первом случае идеальная, но слишком высока цена постоянного переключения.

Что необходимо отрезать в отдельный тул, а что допустимо слить в убертул? Это каждый решает отдельно, исходя из требований проекта. У кого-то шейдинг на каждой модельке тщательно подбирают художники в 20 итераций, причем хотят смотреть на конкретном уровне; у кого-то все материалы настраивают программисты, причем кодом (чтоб я шутил, так нет).

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

Проблема с монолитами в том, что типичный монолит при просветке выглядит как перекати-поле. Когда там четко видимые кубики, (еще пока) не диффундирующие друг в друга, и аккуратно проложенные по коробам кабеля между ними, это как раз Голден-Гейт :-)

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

Оценивать квалификацию в целом сложно, но начать легко. Сколько раз в вашем убертуле встречается слово extern?

  • http://www.sdl.ru TSS

    Тулы, убертулы…
    Имхо золотая середина — один большой тул с 70-80% общего функционала, остальный 20-30% специфических задач нужно решать мелкими утилитками.
    Это как виндовс — большой гуевый тул, но мелкие задачки все же удобнее решать в cmd.exe

  • strangeraven

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

    Пользователю нужна “штука которая решает проблемы”. Конструктивные особенности штуки пользователя не интересуют. Важно чтобы решала проблемы хорошо, быстро и удобно.

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

    А вот хорошая интегрированная система – это на самом деле и есть “штука которая решает проблемы”. Любая такая система, это на самом деле просто панель с десятью кнопками: “кнопка для решения типичной проблемы номер 1″, “кнопка для решения типичной проблемы номер 2″ и так далее.

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

    Тут можно пойти двумя путями. Первый – это добавление в штуку новых кнопкок. Отличный вариант. Тут важно понять, является ли проблема нетипичной или просто редкой. Если просто редкой, то лучший путь – добавить в штуку такую “маленькую кнопочку в углу”. И составить FAQ: проблема номер 79 решается нажатием вон той мелкой зелёной пипки.

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

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

    Вообще лучше всего – это когда есть коробка с кубиками. И “штука которая решает проблемы”, собранная из этих кубиков. Но не склеенная, а именно собранная, как из конструктора Лего. Те, кто добились такого, живут долго и счастливо.

  • http://aruslan.livejournal.com/ aruslan

    Золотая середина как-то удивительно похожа на тихую вязкую постэякуляционную дрёму.

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

    Я не полемики ради, но конструктива для.

  • http://aruslan.livejournal.com/ aruslan

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

    И которые – в теории – и есть те для кого стараются.

    Разделение (sharing) контекста и связи между кубиками – это не технический термин. Технари обычно могут и сами (в теории, конечно же).
    Это самый натуральный “количество переключений контекста” и его цена.

    Вот кисточкой поваяли, играть стало тут же веселее, переключение контекста – перевод глаз.
    А где-то рендер-ферма с билд-системой проснулись и на всякий случай пожевали всякое – вдруг это счастье потом на всех надо будет распиливать.
    Пока – только здесь локальненько так вспухает пересчитанное и наполняет уже интересную канву всяческими приятностями.
    Без переключения контекста.

  • IronPeter

    Руслан, а расскажи полноформатно про твои новые просторные офисы. Слабо отдельным постом?

  • http://www.creative-assembly.com.au/ Loyso

    > Вот кисточкой поваяли, играть стало тут же веселее, переключение контекста – перевод глаз.
    > А где-то рендер-ферма с билд-системой проснулись и на всякий случай пожевали всякое – вдруг это счастье потом на всех надо будет распиливать.
    > Пока – только здесь локальненько так вспухает пересчитанное и наполняет уже интересную канву всяческими приятностями.
    > Без переключения контекста.

    Пришлось перечитать 6 раз чтобы понять. И то – я как бы знал предысторию. Даешь отдельные посты поподробнее, да? :)