SlideShare a Scribd company logo
1 of 27
Введение 
Роль архитектора, гибкая архитектура
Архитектура 
Как сущ.: структура и декомпозиция всего продукта в 
виде набора взаимодействующих модулей. 
Как глаг.: понимание что требуется создать, принятие 
инженерных решений, концепция решения, основаные 
на требованиях; а так же трансляция этой концепции 
команде и техническое лидерство, чтобы все участники 
понимали концепцию и были способны вносить свой 
вклад в успех мероприятия.
Что есть архитектура? 
Существенные инженерные решения, 
которые формируют систему, где 
“существенность” определяется стоимостью 
внесения изменений.
Пример 
● Форма системы (клиент-сервер, вэб, мобильное 
приложение, распределенная система и тд) 
● Структура системы (компоненты, слои и тд) 
● Выбор технологий 
● Выбор фреймворков (каркасных решений) 
● Выбор подхода и паттернов (к производительности, 
масштабируемости и тд.)
Платформа для диалога 
● Команды разработчиков (настоящих и 
будущих) 
● Специалистов по БД 
● Безопасников 
● Специалистов по развертыванию, 
админов 
● ...
Архитектура не популярна 
● Грандиозное предварительное 
проектирование всего. “Analysis paralysis.” 
● “Эстафетное” проектирование. “ 
● ...это детали реализации” 
Попуярность “гибкого” подхода.
Architect 
Лат. “architectus” - главный строитель.
Архитектурные факторы 
● Понимать цели системы 
● Собирать, уточнять и сопоставлять с 
реальностью требования и ограничения 
● Преодолевать субъективность
Проектирование ПО 
● Прийти к пониманию, как вы собираетесь 
решить задачу 
● Выбор технологии реализации 
● Техническая стратегия 
● Владение всей картиной системы 
целиком
Технические риски 
● Обнаружение и смягчение рисков 
● Взятие на себя ответственности за риски 
● “Будет ли архитектура реально 
работать?” 
● Тестирование идей как можно раньше
Развитие архитектуры 
● Непрерывное техническое лидерство и 
владение архитектурой на протяжении 
всей разработки 
● “Архитектура это не эстафета.”
Программирование 
● Практическая вовлеченность в написание 
кода 
● Анализ кода 
● Написание фундаментальных участков 
● Чувствовать себя в одной лодке с 
программистами 
● Постоянное самосовершествование
Обеспечение качества 
● Выбор и внедрение в команде 
стандартов, практик, принципов, методик 
● Соблюдение следования выбранному 
● Контроль за целостностью всего 
решения, соответствия архитектуре
Сотрудничество 
Сотрудничай или облажайся! 
● Привлекай экспертов, если это 
необходимо 
● Советуйся с командой, собирай обратную 
связь
Широта взгляда 
● Является ли выбранная технология лучшей? 
● Какие есть другие варианты как спроектировать и 
построить систему? 
● Есть ли соответствующее типовое архитектурное 
решение (паттерн)? 
● Осознаем ли мы компромиссы решения? 
● Можем ли мы доказать, что предложенная 
архитектура будет работать?
Личные качества 
● Лидерство 
● Понятно излагать 
● Убедительность 
● Уверенность 
● Умение работать в 
команде 
● Делегирования 
● Консультирование 
● Наставничество 
● Организация 
групповой работы 
● Политика 
● Ответственность 
● Позитивность
Власть и контроль 
● Руководство (guidance) 
● Борьба за целостность 
● “Сколько контроля необходимо?”
Сколько контроля нужно? 
Начать и обращать внимание на то, как 
команда реагирует, чтобы подстроиться: 
если задает много вопросов, то требуется 
руководство, если начинает бороться с 
вами, возможно вы перегибаете палку.
Elastic Leadership 
1. Выживание (в хаосе): более 
директивный стиль. 
2. Обучение: консультирование и 
наставничество 
3. Самоорганизация: работа над балансом 
группы.
Из программиста в архитекторы 
Дано не каждому. :)
Нужна ли архитектура 
при гибком подходе? 
XP: Collective Ownership 
Самоорганизующиеся команды - это 
сложнее, чем кажется.
слишком мало 
● Нет понятия о границах системы 
● Нет понимания всей картины 
● Невозможность донести общую концепцию 
● Нет внимания нефункциональным требованиям и 
ограничениям 
● Нет внимания ключевым рискам 
● Отсутствие целостности в подходах к решению 
● Необходимость внезапно что-то менять, что могли 
бы предвосхитить 
● Слишком много альтернатив и вариантов выбора
слишком много 
● нечитаемо длинные документы 
● слишком детальная проработка на разных уровнях 
абстракции 
● сотни нечитаемых диаграм 
● все решения даже по кодированию уже приняты 
● “analysis paralysis” и затык с обсуждением мелочей 
● наступил дедлайн, а вы все еще не приступили к 
программированию
Столько сколько нужно 
Критерии здравого смысла.
Литература 
● Simon Brown “Software Architecture for 
Developers”

More Related Content

What's hot

Аналитик в Agile (статья)
Аналитик в Agile (статья)Аналитик в Agile (статья)
Аналитик в Agile (статья)Andrey Bibichev
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаAlexander Byndyu
 
Как подружить PO c UX командой (Антон Иванов, B2B-Center)
Как подружить PO c UX командой (Антон Иванов, B2B-Center)Как подружить PO c UX командой (Антон Иванов, B2B-Center)
Как подружить PO c UX командой (Антон Иванов, B2B-Center)PCampRussia
 
Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Fedor Malyshkin
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиПрофсоUX
 
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрофсоUX
 
Как UX-специалист делился своими инструментами с agile-командами
Как UX-специалист делился своими инструментами с agile-командамиКак UX-специалист делился своими инструментами с agile-командами
Как UX-специалист делился своими инструментами с agile-командамиNikita Efimov
 
Александр Краснов: Переход в Product Management
Александр Краснов: Переход в Product ManagementАлександр Краснов: Переход в Product Management
Александр Краснов: Переход в Product ManagementIAMPM
 
AgileCamp2015. Как создать решение, которое полюбят пользователи.
AgileCamp2015. Как создать решение, которое полюбят пользователи.AgileCamp2015. Как создать решение, которое полюбят пользователи.
AgileCamp2015. Как создать решение, которое полюбят пользователи.Octoberry
 
Как выучить дизайнеров
Как выучить дизайнеровКак выучить дизайнеров
Как выучить дизайнеровПрофсоUX
 
Почему Agile больше не работает
Почему Agile больше не работаетПочему Agile больше не работает
Почему Agile больше не работаетBoris Volfson
 
Технопарк_Управление Web-проектом_Восьмое занятие
Технопарк_Управление Web-проектом_Восьмое занятиеТехнопарк_Управление Web-проектом_Восьмое занятие
Технопарк_Управление Web-проектом_Восьмое занятиеАртём Шихарев
 
SWP'12. PMARCOR. Техногенные манипуляции
SWP'12. PMARCOR. Техногенные манипуляцииSWP'12. PMARCOR. Техногенные манипуляции
SWP'12. PMARCOR. Техногенные манипуляцииAlexander Kalouguine
 
Презентация "Scrum с нуля" (2 часть)
Презентация "Scrum с нуля" (2 часть)Презентация "Scrum с нуля" (2 часть)
Презентация "Scrum с нуля" (2 часть)Елена Коптева
 
Продуктовая платформа, продуктовый аналитик.
Продуктовая платформа, продуктовый аналитик.Продуктовая платформа, продуктовый аналитик.
Продуктовая платформа, продуктовый аналитик.Arseny Kravchenko
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanAlexander Byndyu
 
Путь Product Owner`s. От факапов до успешного продукта
Путь Product Owner`s. От факапов до успешного продуктаПуть Product Owner`s. От факапов до успешного продукта
Путь Product Owner`s. От факапов до успешного продуктаAndrii Mandrika
 

What's hot (20)

Аналитик в Agile (статья)
Аналитик в Agile (статья)Аналитик в Agile (статья)
Аналитик в Agile (статья)
 
Кнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продуктаКнопочное мышление против целостного IT-продукта
Кнопочное мышление против целостного IT-продукта
 
Как подружить PO c UX командой (Антон Иванов, B2B-Center)
Как подружить PO c UX командой (Антон Иванов, B2B-Center)Как подружить PO c UX командой (Антон Иванов, B2B-Center)
Как подружить PO c UX командой (Антон Иванов, B2B-Center)
 
Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?Agile, SCRUM, Планирование – что в этом для программистов?
Agile, SCRUM, Планирование – что в этом для программистов?
 
Опыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурамиОпыт госпроектов и взаимодействия с корпоративными структурами
Опыт госпроектов и взаимодействия с корпоративными структурами
 
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продуктПрикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
Прикручивание колёс на ходу. Внедрение UX процессов в уже работающий продукт
 
Как UX-специалист делился своими инструментами с agile-командами
Как UX-специалист делился своими инструментами с agile-командамиКак UX-специалист делился своими инструментами с agile-командами
Как UX-специалист делился своими инструментами с agile-командами
 
Александр Краснов: Переход в Product Management
Александр Краснов: Переход в Product ManagementАлександр Краснов: Переход в Product Management
Александр Краснов: Переход в Product Management
 
Роли в IT
Роли в ITРоли в IT
Роли в IT
 
AgileCamp2015. Как создать решение, которое полюбят пользователи.
AgileCamp2015. Как создать решение, которое полюбят пользователи.AgileCamp2015. Как создать решение, которое полюбят пользователи.
AgileCamp2015. Как создать решение, которое полюбят пользователи.
 
Как выучить дизайнеров
Как выучить дизайнеровКак выучить дизайнеров
Как выучить дизайнеров
 
Почему Agile больше не работает
Почему Agile больше не работаетПочему Agile больше не работает
Почему Agile больше не работает
 
Scrum intro
Scrum introScrum intro
Scrum intro
 
Технопарк_Управление Web-проектом_Восьмое занятие
Технопарк_Управление Web-проектом_Восьмое занятиеТехнопарк_Управление Web-проектом_Восьмое занятие
Технопарк_Управление Web-проектом_Восьмое занятие
 
SWP'12. PMARCOR. Техногенные манипуляции
SWP'12. PMARCOR. Техногенные манипуляцииSWP'12. PMARCOR. Техногенные манипуляции
SWP'12. PMARCOR. Техногенные манипуляции
 
Презентация "Scrum с нуля" (2 часть)
Презентация "Scrum с нуля" (2 часть)Презентация "Scrum с нуля" (2 часть)
Презентация "Scrum с нуля" (2 часть)
 
Продуктовая платформа, продуктовый аналитик.
Продуктовая платформа, продуктовый аналитик.Продуктовая платформа, продуктовый аналитик.
Продуктовая платформа, продуктовый аналитик.
 
Что такое Scrum
Что такое ScrumЧто такое Scrum
Что такое Scrum
 
Практика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к KanbanПрактика работы с крупными проектами - от Scrum с XP к Kanban
Практика работы с крупными проектами - от Scrum с XP к Kanban
 
Путь Product Owner`s. От факапов до успешного продукта
Путь Product Owner`s. От факапов до успешного продуктаПуть Product Owner`s. От факапов до успешного продукта
Путь Product Owner`s. От факапов до успешного продукта
 

Similar to ПиАПС, Лекция №1а - Роль архитектора, гибкая архитектура

Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Dima Dzuba
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...Andrew Shapiro
 
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...Nikita Filippov
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Andrey Bibichev
 
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...Yury Vetrov
 
некоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iнекоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iprigarov
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаAlexander Kalouguine
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки поJaneKozmina
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on AndroidGDG Odessa
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиGoSharp
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентDevGAMM Conference
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruBadoo Development
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сHelen Kopteva
 

Similar to ПиАПС, Лекция №1а - Роль архитектора, гибкая архитектура (20)

Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4Проектирование программных систем. Занятие 4
Проектирование программных систем. Занятие 4
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...
«Шустрый» дизайн: подходы к декомпозиции проектирования взаимодействия в Agil...
 
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
«Шустрый дизайн: подходы к декомпозиции задач проектирования UI в Agile-коман...
 
Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)Проектирование больших ИС в Agile (статья)
Проектирование больших ИС в Agile (статья)
 
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...
РИТ-2008: Взаимодействие отдела проектирования интерфейсов и разработчиков в ...
 
некоторые правила управления проектами. часть I
некоторые правила управления проектами. часть Iнекоторые правила управления проектами. часть I
некоторые правила управления проектами. часть I
 
CEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра КалугинаCEE-SECR-2011. Презентация Александра Калугина
CEE-SECR-2011. Презентация Александра Калугина
 
Scrum
ScrumScrum
Scrum
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
Методологии разработки по
Методологии разработки поМетодологии разработки по
Методологии разработки по
 
Clean architecture on Android
Clean architecture on AndroidClean architecture on Android
Clean architecture on Android
 
Взаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработкиВзаимное влияние Source Code Management и других средств организации разработки
Взаимное влияние Source Code Management и других средств организации разработки
 
Nival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонентNival: Как не увлечься погоней за универсализацией компонент
Nival: Как не увлечься погоней за универсализацией компонент
 
Agile testing
Agile testingAgile testing
Agile testing
 
UX Design Рrocess
UX Design РrocessUX Design Рrocess
UX Design Рrocess
 
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ruTechLeads meetup: Андрей Шелёхин, Tinkoff.ru
TechLeads meetup: Андрей Шелёхин, Tinkoff.ru
 
Формирование проектной команды
Формирование проектной командыФормирование проектной команды
Формирование проектной команды
 
Методики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1сМетодики управления развитием ис на базе 1с
Методики управления развитием ис на базе 1с
 

ПиАПС, Лекция №1а - Роль архитектора, гибкая архитектура

  • 1. Введение Роль архитектора, гибкая архитектура
  • 2. Архитектура Как сущ.: структура и декомпозиция всего продукта в виде набора взаимодействующих модулей. Как глаг.: понимание что требуется создать, принятие инженерных решений, концепция решения, основаные на требованиях; а так же трансляция этой концепции команде и техническое лидерство, чтобы все участники понимали концепцию и были способны вносить свой вклад в успех мероприятия.
  • 3. Что есть архитектура? Существенные инженерные решения, которые формируют систему, где “существенность” определяется стоимостью внесения изменений.
  • 4. Пример ● Форма системы (клиент-сервер, вэб, мобильное приложение, распределенная система и тд) ● Структура системы (компоненты, слои и тд) ● Выбор технологий ● Выбор фреймворков (каркасных решений) ● Выбор подхода и паттернов (к производительности, масштабируемости и тд.)
  • 5. Платформа для диалога ● Команды разработчиков (настоящих и будущих) ● Специалистов по БД ● Безопасников ● Специалистов по развертыванию, админов ● ...
  • 6. Архитектура не популярна ● Грандиозное предварительное проектирование всего. “Analysis paralysis.” ● “Эстафетное” проектирование. “ ● ...это детали реализации” Попуярность “гибкого” подхода.
  • 7. Architect Лат. “architectus” - главный строитель.
  • 8.
  • 9. Архитектурные факторы ● Понимать цели системы ● Собирать, уточнять и сопоставлять с реальностью требования и ограничения ● Преодолевать субъективность
  • 10. Проектирование ПО ● Прийти к пониманию, как вы собираетесь решить задачу ● Выбор технологии реализации ● Техническая стратегия ● Владение всей картиной системы целиком
  • 11. Технические риски ● Обнаружение и смягчение рисков ● Взятие на себя ответственности за риски ● “Будет ли архитектура реально работать?” ● Тестирование идей как можно раньше
  • 12. Развитие архитектуры ● Непрерывное техническое лидерство и владение архитектурой на протяжении всей разработки ● “Архитектура это не эстафета.”
  • 13. Программирование ● Практическая вовлеченность в написание кода ● Анализ кода ● Написание фундаментальных участков ● Чувствовать себя в одной лодке с программистами ● Постоянное самосовершествование
  • 14. Обеспечение качества ● Выбор и внедрение в команде стандартов, практик, принципов, методик ● Соблюдение следования выбранному ● Контроль за целостностью всего решения, соответствия архитектуре
  • 15. Сотрудничество Сотрудничай или облажайся! ● Привлекай экспертов, если это необходимо ● Советуйся с командой, собирай обратную связь
  • 16. Широта взгляда ● Является ли выбранная технология лучшей? ● Какие есть другие варианты как спроектировать и построить систему? ● Есть ли соответствующее типовое архитектурное решение (паттерн)? ● Осознаем ли мы компромиссы решения? ● Можем ли мы доказать, что предложенная архитектура будет работать?
  • 17. Личные качества ● Лидерство ● Понятно излагать ● Убедительность ● Уверенность ● Умение работать в команде ● Делегирования ● Консультирование ● Наставничество ● Организация групповой работы ● Политика ● Ответственность ● Позитивность
  • 18. Власть и контроль ● Руководство (guidance) ● Борьба за целостность ● “Сколько контроля необходимо?”
  • 19. Сколько контроля нужно? Начать и обращать внимание на то, как команда реагирует, чтобы подстроиться: если задает много вопросов, то требуется руководство, если начинает бороться с вами, возможно вы перегибаете палку.
  • 20. Elastic Leadership 1. Выживание (в хаосе): более директивный стиль. 2. Обучение: консультирование и наставничество 3. Самоорганизация: работа над балансом группы.
  • 21. Из программиста в архитекторы Дано не каждому. :)
  • 22. Нужна ли архитектура при гибком подходе? XP: Collective Ownership Самоорганизующиеся команды - это сложнее, чем кажется.
  • 23.
  • 24. слишком мало ● Нет понятия о границах системы ● Нет понимания всей картины ● Невозможность донести общую концепцию ● Нет внимания нефункциональным требованиям и ограничениям ● Нет внимания ключевым рискам ● Отсутствие целостности в подходах к решению ● Необходимость внезапно что-то менять, что могли бы предвосхитить ● Слишком много альтернатив и вариантов выбора
  • 25. слишком много ● нечитаемо длинные документы ● слишком детальная проработка на разных уровнях абстракции ● сотни нечитаемых диаграм ● все решения даже по кодированию уже приняты ● “analysis paralysis” и затык с обсуждением мелочей ● наступил дедлайн, а вы все еще не приступили к программированию
  • 26. Столько сколько нужно Критерии здравого смысла.
  • 27. Литература ● Simon Brown “Software Architecture for Developers”

Editor's Notes

  1. Все их невозможно отрефакторить “до вечера”.
  2. Архитектор - это роль, а не должность.
  3. Проверять наиболее рискованные места.
  4. Бытовала практика, что архитекторов не допускали до кодирования, т.к. они слишком ценный ресурс - это неверная практика. Архитектору нужно всегда “быть в форме”. If you know how to program, it’s often tempting to make suggestions about how developers should write the code. Be careful, because you may be wasting your time - developers are likely to ignore your coding experience if you’re not programming on the project. They may also think that you’re overstepping your role and interfering in how they do their job, so give such advice sparingly.
  5. Soft skills • Leadership: In it’s simplest form, leadership is the ability to create a shared vision and to then take people on a journey to satisfy the common goal. • Communication: You can have the best ideas and vision in the world, but you’re dead in the water if you’re unable to effectively communicate this to others. This means people inside and outside of the software development team, using the language and level of detail that is appropriate to the audience. • Influencing: This is a key leadership skill and can be done a number of ways, from overt persuasion through to Neuro-Linguistic Programming1 or Jedi mind tricks. Influencing people can also be done through compromise and negotiation. Individuals may have their own ideas and agendas, which you need to deal with while keeping everybody “on-side” and motivated to get the result that you need. Good influencing requires good listening and exploring skills too. • Confidence: Confidence is important, underpinning effective leadership, influence and communication. Confidence doesn’t mean arrogance though. • Collaboration: The software architecture role shouldn’t be done in isolation, and collab- oration (working with others) to come up with a better solution is a skill that is worth practicing. This means listening, being open-minded and responsive to feedback. • Coaching: Not everybody will have experience in what you’re trying to do and you’ll need to coach people on their role, technologies, etc. • Mentoring: Mentoring is about facilitating somebody’s learning rather than telling them how to do something. As a leader you may be asked to mentor others on the team. • Motivation: This is about keeping the team happy, up-beat and positive. The team also needs to feel motivated to follow any vision that you create as a software architect. You will face an uphill battle without the rest of the team’s buy-in. • Facilitation: There will often be times where you need to step back and facilitate discussions, particularly where there is conflict within the team. This requires exploration, objectivity and helping the team come up with a solution to build consensus. • Political: There are always politics at play in every organisation. My mantra is to steer clear of getting involved as far as possible, but you should at least understand what’s going on around you so that you can make more informed decisions. • Responsibility: You can’t necessarily blame the rest of the software development team for failure and it’s important that you have a sense of responsibility. It’s your problem if your software architecture doesn’t satisfy the business goals, deliver the non-functional requirements or the technical quality is poor. • Delegation: Delegation is an important part of any leadership role and there’s a fine line between delegating everything and doing everything yourself. You should learn to delegate where appropriate but remember that it’s not the responsibility you’re delegating.
  6. I’ve seen a software system with multiple object-relational mapping (ORM) frameworks in a single codebase and another where components across the stack were configured in a number of different ways, ranging from the use of XML files on disk through to tables in a database. Deployment and maintenance of both systems was challenging to say the least.