Что вы должны привлечь к столу в качестве архитектора программного обеспечения? [закрыто

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/18444

Вопрос

Было много вопросов с хорошими ответами о роли архитектора программного обеспечения (SA) на Переполнение стека а также Программисты SE. Анкет Я пытаюсь задать немного более целенаправленный вопрос, чем те. Само определение SA широкое, поэтому ради этого вопроса давайте определим SA следующим образом:

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

Другими словами, я не говорю о управленческом отдыхе и живет на гребне (дальнейшие рифмованные слова, выдвинутые) типы SAS. Если бы я занял какую -либо позицию SA, я не хочу быть вдали от кодирования. Я мог бы пожертвовать некоторым временем, чтобы взаимодействовать с клиентами и бизнес -аналитиками и т. Д., Но я все еще технически вовлечен, и я не просто знаю, что происходит через встречи.

Имея в виду эти моменты, что должен принести SA на стол? Должны ли они прийти с менталитетом «установления закона» (так сказать) и обеспечения использования определенных инструментов, чтобы соответствовать «их пути», то есть руководящие принципы кодирования, управление источниками, шаблоны, документация UML и т. Д.? Или они должны указать начальное направление и стратегию, а затем быть расслабленным и прыгать по мере необходимости, чтобы исправить направление корабля?

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

Вот некоторые истории SA, которые я испытал как способ поделиться некоторым опытом в надежде, что ответы на мои вопросы могут также пролить свет на эти проблемы:

  • Я работал с кодом SA WHO, который был рассмотрен буквально каждую линию Кодекса команды. SA сделает это не только для нашего проекта, но и других проектов в организации (представьте себе время, потраченное на это). Сначала было полезно обеспечить соблюдение определенных стандартов, но позже это стало карели. FXCOP был тем, как SA найдет проблемы. Не поймите меня неправильно, это был хороший способ научить младших разработчиков и заставить их думать о последствиях их выбранного подхода, но для старших разработчиков это считалось несколько драконовским.

  • Один конкретный SA был против использования определенной библиотеки, утверждая, что она была медленной. Это заставило нас написать тонны кода для достижения вещей по -разному, в то время как другая библиотека сохранила бы нас много времени. Перенесемся в последний месяц проекта, и клиенты жаловались на производительность. Единственным решением было изменить определенную функциональность для использования первоначально игнорируемого подхода, несмотря на ранние предупреждения от разработчиков. К этому моменту было выброшено много кода, а не многоразовый, что привело к сверхурочному времени и стрессу. К сожалению, оценки, используемые для проекта, были основаны на старом подходе, который был запрещен моему проекту, поэтому он не был подходящим показателем для оценки. Я бы услышал, как премьер -министр говорил: «Мы делали это раньше», когда в действительности они этого не сделали, так как мы использовали новую библиотеку, а разработчики, работающие над ней, были не теми девчонками, которые использовались в старом проекте.

  • SA, который обеспечит использование DTOS, DOS, BOS, уровня обслуживания и так далее для всех проектов. Новым разработчикам пришлось изучить эту архитектуру и SA категорически применяемые руководящие принципы использования. Исключения из руководящих принципов использования были сделаны, когда было абсолютно трудно следовать руководящим принципам. SA был основан на их подходе. Классы для DTOS и всех операций CRUD были сгенерированы с помощью схем кодов, а база данных были еще одним аналогичным шариком воска. Однако, используя эту настройку повсюду, SA не была открыта для новых технологий, таких как LINQ для SQL или Entity Framework.

Я не использую этот пост в качестве платформы для вентиляции. Были положительные и отрицательные аспекты в моем опыте с упомянутыми выше историями SA. Мои вопросы сводятся к:

  1. Что должен принести SA на стол?
  2. Как они могут найти баланс в своем принятии решений?
  3. Должен ли можно подходить к работе SA (как определено ранее) с менталитетом, который они должны обеспечить определенные основные правила?
  4. Что -нибудь еще нужно рассмотреть?

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

Это было полезно?

Решение

Системный архитектор должен:

  1. Укажите архитектуру высокого уровня
  2. Участвовать в обзорах кода
  3. Одобрить используемые технологии
  4. Помочь разработчикам в их усилиях по кодированию
  5. Поддерживать и контролировать график разработки
  6. Производят артефакты SA, такие как диаграммы UML, диаграммы Ганта и тому подобное.

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

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

Как и все люди, SA могут и делают ошибки. Хорошие учатся на этих ошибках и становятся лучше SA.

Другие советы

1 Что должен принести SA на стол?

  • Толстая кожа
  • Хорошие навыки ведения переговоров
  • Хорошее понимание различных уровней программного обеспечения (от Whizzy Ajax Goodness до низкого уровня сетевого ввода -вывода). Вы не обязательно окажетесь экспертом, но вы будете принимать важные решения о том, какое программное обеспечение должно быть выполнено, на каком уровне (ы).
  • Готовность испачкать руки в коде, проекты белой бумаги просто не разрезают его.
  • Поощрение мастерства программного обеспечения - быть чирлидером за то, что они делали правильно, когда это возможно, и наилучшим образом, учитывая ограничения в других случаях. Таким образом, такие вещи, как управление источником, TDD, Build и CI, кодирование Dojos, обзоры кода, хорошая система отслеживания проблем и т. Д.

2 Как они могут найти баланс в своем принятии решений?

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

3 Должен ли можно подходить к работе SA (как определено ранее) с менталитетом, который они должны обеспечить определенные основные правила?

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

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

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

Для меня самые большие проблемы, которые я видел:

  • слепое приверженность обработке ради процесса
  • Слепой предвзятость к технологиям, прежде чем знать проблему
  • Создание и соблюдение правил без хорошего оправдания
  • rewrite from scratch склад ума

Лучшие «архитекторы», с которыми я работал, принесли на стол:

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

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

1. Что должен принести SA на стол?

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

Комбинация обоих, я бы сказал. При принятии решения о технологиях и процессах, открытие для мнений и предложений может дать ценную обратную связь/вклад в решения о решениях и заставит вас учиться у других. Ваша команда (надеюсь) умна; Воспользуйтесь этим. Но как только принято решение (ваше решение), закон был установлен. Определите тех, кто будет жаловаться на то, что не было их выбором, и теми, кто просто что -либо выберет и не заботится, а затем игнорирует их.

Что касается технологий: работайте с тем, что у вас есть, если компания использует Starteam, то это то, что вы используете. Жениться на каком -либо конкретном продукте/технологии/процессе ничего не сделает для вас.

2. Как они могут найти баланс в своем принятии решений?

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

3. Можно ли подходить к работе SA (как определено ранее) с менталитетом, что они должны обеспечить определенные основные правила?

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

4. Есть что -нибудь еще рассмотреть?

  • Что касается вашего второго примера: кажется, что проектная команда сформировала тесно связанную зависимость от внутренней подсистемы. Свободно связанные фасады не только для стороннего кода. Создание абстракции для этой подсистемы могло бы позволить проще переходить к использованию этой библиотеки, если собственное решение не удалось. Это логическое решение только для архитектора программного обеспечения, но также является формой менеджера проекта с проблемами выражения команды, оно должно было быть вдвойне очевидным решением.
  • В отношении вашего третьего примера: неплохо иметь известную архитектуру или процесс для производства программного обеспечения (хотя, по общему признанию, вы сказали «все проекты»). Это придерживается того, что работает. С учетом сказанного, должны быть возможности, где можно попытаться узнать, принесут ли они дополнительную ценность. Программное обеспечение только на месте или проекты меньшего размера, где эти технологии могут быть предприняты, являются идеальными местами. Имейте в виду, однако, что ответственность также находится на разработчике (-ах), чтобы предоставить исследованные и убедительные демонстрации/аргументы для принятия технологий. И нельзя ожидать, что SA будет знать каждый конкурирующий ORM, его сильные и слабые стороны по сравнению с другими.
Лицензировано под: CC-BY-SA с атрибуция
scroll top