Уважаемые читатели, эта статья будет для вас полезна, если:

  • Вы являетесь действующим архитектором ИТ и вам необходима дискуссия с коллегами о роли архитектора;

  • Вы хотите стать архитектором, но еще не осознали, кто это;

  • С вами рядом работает архитектор, и вы не понимаете, чем он занимается;

  • Вы не владеете английским, но давно хотели прочитать книгу западного автора по архитектуре;

  • И в целом если вы интересующийся современными веяниями ИТ, а именно архитектура является популярным запросом от работодателей в виду растущих масштабов автоматизации.

Про автора книги

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

Gregor Hohpe – корпоративный стратег, как указано на сайте AWS, который помогает ИТ-лидерам и Бизнес-лидерам переосмыслить текущую ИТ-стратегию и получить больший результат от их Cloud-путешествия.

Помимо «Software architect elevator» Грегор также является автором книг «Cloud strategy» и «Enterprise integration patterns».

Введение статьи

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

Мы пока начнем с элеватора.

Хочу отметить, что Gregor Hohpe является популяризатором архитектуры как специализации, и в этом его большая заслуга.

В данном случае хочу рассказать о книге Грегора "Architect elevator", которая охватывает так называемую менеджерскую и социальную составляющие части архитектурной работы.

Когда я начал читать эту книгу, после второй или третьей главы возник вопрос: а нужно ли вообще читать эти книги? Они же об одном и том же. И положил книгу в стол. Через 2 месяца достал, потому что стало скучно, и подумал: наверно все-таки нужно, т.к. позволяет мозгу отвлечься и посмотреть на мнение других участников индустрии.

Также почему я снова достал книгу из стола - мне случайно попалась статья, в которой Gregor Hohpe коротко рассматривает один из вопросов, затронутых в книге (или может просто рекламирует книгу): https://architectelevator.com/transformation/debugging-architect/

DEBUGGING ARCHITECTS - ещё одна статья автора по теме книги

Вопрос, которым Gregor Hohpe задается в статье: «Должен ли архитектор программировать?».

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

Например, он является архитектором Hadoop, и в зоне его ответственности только Hadoop, и его (его в смысле Hadoop, а не в смысле архитектора) настолько много, что такому архитектору не нужно других технологий, потому что в его рабочем дне только 8 часов, в которые укладывается только Hadoop.

Другой пример, когда архитектор отвечает за взаимодействия систем через API, при этом одна система, к которой он, архитектор, прикреплен, написана на Java. Другая система, выставляющая API, написана на NodeJS. И еще 100 смежных систем на своем языке. На каком языке должен программировать архитектор?

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

Третий пример: выдающегося архитектора приглашают на проект (он, кстати, оптимально писал на Python, участвуя в предыдущем проекте). Он знает свое архитектурное дело, рисует идеально квадратики и стрелочки идеально проектирует системы и готовит диаграммы, знает и практикует паттерны проектирования, плотно работает с протоколами взаимодействия. И когда его приглашали, знали, что на новом проекте уже определен язык Java как основа, и что выдающийся архитектор не писал ранее на Java и не собирается. Должен ли он программировать на новом проекте? Или зачем его приглашали? Наверно, от него ждали чего-то другого чем писать или проверять код? Наверно, его обязанности более верхнеуровневые?

Поэтому итоговый ответ на тему программирования архитектором следующий: архитектор должен или не должен программировать в зависимости от зоны его ответственности.

О самой книге

Так вот, возвращаясь к книге.

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

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

Определение элеватора выглядит следующим образом:

архитекторы управляют лифтом вверх и вниз и перемещаются между комнатой корпоративного правления крупного предприятия – так называемый Пентхаус – и машинным отделением, где строится продукт.

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

  • сетевые архитекторы (ключевое слово «network»),

  • архитекторы безопасности (ключевое слово «security»),

  • архитекторы программного обеспечения («software»),

  • архитекторы решений («solutions»),

  • корпоративные архитекторы («enterprise»),

  • и конечно же многие другие.

В общем случае предполагается, что разработчики работают с функциональными требованиями, в то время как архитекторы работают с нефункциональными требованиями, часто определяемыми как «ilities». ¨Это:

  • масштабируемость,

  • надежность в эксплуатации,

  • доступность,

  • совместимость,

  • и мой любимый термин в таких случаях – и многое другое.

Ну а далее в лучших традициях жанра:

  • Архитекторы соединяют различные точки в работе – смотрят между строк, чтобы убедиться, что не нарушены зависимости,

  • Архитекторы видят обе стороны монеты и работают с компромиссами между целями и принципами. Автор употребляет очень подходящий термин – архитекторы балансируют,

  • Архитекторы смотрят выше названия продукта и списка характеристик, чтобы выбрать решение, даже с учетом копромиссов,

  • Архитекторы устанавливают связь между потребностями Бизнеса и транслируют эти потребности в технические термины,

  • ИТ – это очень сложно. Архитекторы поддерживают гармонию для уменьшения сложности.

И еще немного социального:

  • Сегодня успешные архитекторы не только ИТ-специалисты, они также основные агенты изменений,

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

Многие разработчики или технические архитекторы (наверно это team leads) рассматривают некоторых «корпоративных» архитекторов наименее полезными, потому что они не пишут код. Это про тех, которые только общаются с руководством, и все меньше спускаются к инженерным коллегам. Такие карьеристы наслаждаются хорошим видом с верхнего этажа с большим удовольствием, а разработчики чувствуют, что эти архитекторы не работают так усердно, как требуется, и пренебрегают посещать разработчиков.

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

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

Дальше автор приводит в пример фильм Метрополис. Фильм 1927 года. Скажу честно, описание фильма довольно интересное, но спецэффекты вряд ли впечатлят. Интересно, смотрел ли его автор реально, или просто узнал, что есть такой фильм. Было бы конечно интересно прочитать подобный роман, т.к. романы не устаревают, но не нашел такого, поэтому буду смотреть, только если замучает ностальгия.

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

Его сын - Фредер догадывается о несправедливости, царящей в метрополисе. Спустившись в машинную зону, Фредер приходит в ужас: он видит страшного Молоха, пожирающего людей. Не в силах смириться с увиденным, он начинает борьбу со злом.»

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

Далее еще один пример расхождения между архитекторами и разработчиками - длительные циклы реализации проектов не обещают ничего хорошего, и могут привести к так называемому сценарию «Мечта архитектора – кошмар программиста», в котором архитекторы достигают своих абстрактных идеалов, но в действительности предложенная реализация не целесообразна. Но это уже другая тема между водопадом и Agile.

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

Классификация архитекторов по версии автора книги

Какие же бывают архитекторы с предложенной автором классификацией:

Матрица. Главный планировщик

Архитектор Матрицы – «холодный, лишенный чувства юмора седовласый мужчина в светло-сером костюме» - он разработал «Матрицу» и знает все и контролирует все.

У этой модели для подражания есть некоторые проблемы: всезнание оказывается слишком серьезным вызовом для людей, что приводит к плохому принятию решений и всевозможным другим проблемам, например, к «бутылочному горлышку».

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

Эдвард «Руки-ножницы». Садовник

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

Сложная ИТ-структура предприятия действительно кажется органичной, а хорошая архитектура обладает чувством равновесия, аналогично тому, что мы можем найти в прекрасном саду.

Точка исчезновения. Путеводитель

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

Волшебник страны Оз

Архитекторов иногда можно рассматривать как волшебников, которые могут решить практически любую техническую задачу.

Но только не будьте настолько очарованы волшебством, чтобы забыть о своих технических корнях.

Супергерой, Суперклей!

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

Также в книге высказывается мнение, что вместо супергероев компаниям нужны архитекторы—“суперклеи” - ребята, которые объединяют архитектуру, технические детали, потребности бизнеса и людей в рамках большой организации или сложных проектов.

Быть клеем (или катализатором) означает хорошо разбираться в том, что вы склеиваете.

Резюме статьи

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

А сейчас большое всем спасибо за внимание, пошел читать следующую главу и смотреть «Терминатор 2», чтобы потом написать статью про архитектора, который спасает Джона Коннора, чтобы избежать войны киборгов и исчезновения человечества в следствие последнего релиза.

Комментарии (19)


  1. miga
    09.04.2023 05:37
    +1

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

    Более того, выскажу еще более непопулярное мнение - все это вертикальное разделение труда - на программистов, тестеров, админов, архитектов - не нужно и вредит.


    1. pashigorev Автор
      09.04.2023 05:37
      +1

      Ну вот посмотрите, программист - он инженер, и тестировщик- он инженер. Архитектор - он тоже инженер. Когда у меня спрашивают, чем я занимаюсь - я гордо отвечаю что я инженер. Но термин 'архитектор' - он явно выделяет чем инженер занимается.

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

      Разделение труда должно быть.


      1. miga
        09.04.2023 05:37

        Вертикальное разделение труда ведет к майндсету «к пуговицам претензии есть?». Архитектор плюет на всех из своей башни из слоновой кости, программисты не хотят думать о том, что когда приложение крашится из-за недоступной базы - это не очень удобно и так далее.

        На моем опыте, вертикальный овнершип работал и на маленьком, и на большом масштабе. Конечно, требования к инженеру получаются выше, но и растет он быстрее.


        1. pashigorev Автор
          09.04.2023 05:37
          +2

          Аналогично про универсального инженера и отсутствие выделенных ролей, реален такой диалог:

          -нам нужна локументация по проекту;

          -мне некогда, я программирую и тестирую.

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

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


          1. miga
            09.04.2023 05:37
            -1

            Что значит «некогда»? Эти процессы не происходят одновременно, проектная документация предшествует имплементации, а пользовательская - пишется после.

            И если это делается одним человеком или командой, меньше вероятность того что документация разойдется с реальностью, кстати


            1. pashigorev Автор
              09.04.2023 05:37

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

              Как говорил один мой знакомый преподаватель, конечно я умею все это делать, но в аутках только 24 часа, а мне бы ещё хотелось поспать!

              Так что разделение труда придумали не зря


              1. miga
                09.04.2023 05:37

                Что значит «приходят»? Работа включает в себя не только имплементацию, но и проектирование, тестирование и прочие доки. С тем же самым успехом можно аппелировать к тому, что люди и дедлайны приходят прям во время программирования, да.

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


    1. ozzyBLR
      09.04.2023 05:37

      Всего две вещи.

      Первая про вертикальную иерархию. Её не придумали люди в целом и менеджеры или архитекторы конкретно. Иерархии предусмотрены природой в пищевых цепочках, социальном устройстве стай и т.д.

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

      Когда кто-то говорит "мы справляемся без менеджмента" или "У нас в команде полная взаимозаменяемость", для меня это вернейший признак уровня хобби выходного дня или гаражной разработки. Насколько это релевантно в контексте размышлений о роли архитектора?


      1. miga
        09.04.2023 05:37

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

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

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


    1. Didntread
      09.04.2023 05:37

      Интересно, какой процент программистов может между делом active directory поадминить, ну или маршрутизацию правильно прописать?


      1. miga
        09.04.2023 05:37

        Если им никогда не было надобности - то никто и не научится. А было бы очень неплохо если бы современные программисты хоть немножечко понимали, как работает сеть :)


  1. itGuevara
    09.04.2023 05:37
    +1

    • корпоративные архитекторы («enterprise»),

    Как по мне, так корпоративный архитектор, т.е. тот который про Enterprise Architecture, вообще может не знать про существование ИТ, поэтому вопрос:

    Gregor Hohpe задается в статье: «Должен ли архитектор программировать?»

    не имеет смысла. Или тогда нужно всегда и везде уточнять, что речь не про архитектора предприятия, а про ИТ-архитектора предприятия.

    Простая Enterprise Architecture. Архитектура компании садоводов

    git


    1. pashigorev Автор
      09.04.2023 05:37

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

      А про уточнение про какой вид архитектора идёт речь - это да


      1. itGuevara
        09.04.2023 05:37

        EA как минимум общаются с управлением ИТ, знают какие системы есть вообще и эксплуатируются,

        На предприятии может быть ровно нуль из ИТ, см. мою ссылку выше. ЕА для таких предприятий (которые вообще без ИТ) концептуально мало чем будет отличаться от предприятий с ИТ.

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


        1. pashigorev Автор
          09.04.2023 05:37

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

          Если честно, что значит "нуль из ИТ" не очень понял, как вообще такое возможно, что это за предприятия которые вручную работают в такое время, как они еще существуют на рынке (если, конечно, это коммерческие организации подразумевались в примере).


          1. itGuevara
            09.04.2023 05:37

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

            Основная мысль, которую я пытаюсь донести в т.ч. в Простая Enterprise Architecture. Архитектура компании садоводов - чтобы научиться делать что-то сложное (ЕА крупным организациям) нужно вначале научиться делать простые вещи, например, ЕА для простых предприятий. При этом, наличие в компании ИТ не влияет на общий подход (концепцию архитектуры, EA framework) к построению ЕА.


            1. pashigorev Автор
              09.04.2023 05:37

              мысль получена, статью прочитал, отличное донесение идеи ))

              Следующая статья будет - популярность EA VS популярность SA


              1. itGuevara
                09.04.2023 05:37

                Следующая статья будет - популярность EA VS популярность SA

                Следующая - авто построение схем ЕА. Заполнил репозитарий ЕА (БД или табличку Excel), нажал кнопку и картинки ЕА сами нарисовались: по щучьему велению по архитекторову велению


    1. pashigorev Автор
      09.04.2023 05:37

      И ещё добавлю, что и книгу читал, и рассуждения строю с точки зрения Solution. Именно в нем мне видится определённая романтика ИТ