Мы опросили практикующих ИТ-экспертов, проанализировали более 16 000 реальных проектов IBS, оценили матрицу компетенций и запросы заказчиков, а также провели свыше 200 продуктовых интервью с B2C- и B2B-клиентами из разных отраслей, включая телеком, банкинг и ИТ-аутсорс. Семантический анализ 100+ вакансий крупных ИТ-компаний и собранных CustDev-отзывов сделали с использованием языковой модели GPT-4o, а затем вручную составили карту компетенций, которая затем легла в основу программы профессиональной переподготовки.
Архитектор программного обеспечения — ключевой специалист в процессе разработки сложных ИТ-систем, который отвечает за проектирование архитектуры решений, выбор технологий и определение технических стандартов. Как правило, архитекторы — это вчерашние разработчики с 7–9-летним стажем, тимлиды или системные аналитики с сильной технологической базой, то есть люди, априори знающие как минимум один, а чаще несколько языков программирования.
Но чтобы успешно справляться с этой ролью, недостаточно многолетнего опыта разработки — необходим широкий кругозор, развитое системное мышление, глубокие знания в области структуры данных, управления проектами и коммуникаций. ИТ-архитектор — настоящий визионер, который способен вникнуть в суть бизнеса и придумать, как создать необходимую систему с нуля, а потом убедить всех вокруг, что именно так — правильно.
В ходе нашего исследования стало понятно, что специалисты, которые стремятся перейти на позицию архитектора ПО, часто сталкиваются с одними и теми же проблемами: разрозненность информации, недостаток практических навыков в предварительном проектировании перед кодированием, отсутствие фундаментальных знаний и систематизации интуитивного опыта. Эта статья — взгляд на проектирование архитектуры как на процесс и попытка собрать воедино все технологии и компетенции, которые нужно активно прокачивать архитекторам, чтобы точно и быстро решать задачи бизнеса.
Must-have знания и навыки для архитектора ПО
1. Архитектурные стилиОсновой профессиональной подготовки архитектора является понимание подходов к построению архитектуры и знание проверенных временем моделей.
База:
Сверх этих базовых требований Middle-специалистам нужно знать референс-архитектуры своего бизнес-домена и ИТ-архитектуры иных предприятий в отрасли, понимать требования и уместность облачных решений, ИИ и блокчейна, а также иметь представление о том, как осуществить миграцию с монолита на микросервисы.
2. Работа с требованиями
Архитектор должен уметь работать на стыке технологий и бизнеса, поэтому важна способность разбираться в исходных данных и выявлять архитектурные ориентиры на ранних этапах.
Что нужно:
На Middle-/Senior-уровне дополнительно нужно уметь проводить детальную проработку и тестирование функциональных требований, выявлять скрытые требования, находить несоответствия и связанные с ними риски и при необходимости даже уметь выдвигать предложения по исправлению бизнес-процессов.
3. Создание устойчивых решений: принципы проектирования
Переходим от бизнес-целей к концепции архитектуры:
Уже с уровня мидла нужно не просто иметь общее представление о надежности и производительности приложений, но и понимать вычислительную сложность алгоритмов, уметь анализировать влияние типов и объемов данных на производительность, использовать конкретные метрики, применять тактики повышения показателей и знать об особенностях проектирования и тестирования отказоустойчивых приложений.
Кроме того, Middle-/Senior-специалистам, которые общаются с заказчиком, нужно уметь детально обосновывать выбранные решения и оправдывать неизбежные компромиссы. Не менее важно понимание архитектурных фреймворков и умение комбинировать разные подходы по ситуации, а также умение применять автоматизированные средства контроля за архитектурой.
4. Технологии интеграции и взаимодействие микросервисов
Интеграция — неотъемлемая часть любой распределенной системы, и архитектору важно ориентироваться в типовых способах организации взаимодействия компонентов:
На более глубоком уровне можно погрузиться в особенности конкретных продуктов интеграции, вникнуть в подходы Service Mesh и Data Mesh, узнать о паттернах для интеграции приложений предприятия (Enterprise Integration Patterns, EIP) и научиться гибкому применению шаблонов устойчивости.
5. Технологии хранения и управления информацией
Эффективное принятие решений в архитектуре невозможно без понимания того, как устроены системы хранения и какие подходы применяются к работе с данными:
Как правило, начинающие архитекторы не принимают решение о выборе конкретного инструмента, а полагаются на принципы корпоративной архитектуры, а вот Middle-специалисты уже должны быть уверены, какое решение подойдет лучше всего, исходя из требований, стоимости и контекста проекта.
В случае с SQL это, вероятно, будет PostgreSQL или MySQL, Oracle SQL под вопросом из-за платной лицензии, либо ClickHouse, который поддерживает SQL, но все же сильно отличается от классических реляционных баз, в случае с NoSQL — скорее всего, Redis, MongoDB или Apache Cassandra. Чтобы сделать правильный выбор, необходимо четко понимать отличия между разными базами данных, включая объектные и графовые, и знать про особенности лицензирования.
Также мидлам стоит углубиться во внутреннее устройство баз, вопросы производительности, индексы, репликацию, шардирование, изоляцию транзакций, восстановление и другие аспекты работы с данными.
В свете текущего обновления законодательства отдельно стоит погрузиться в тему хранения и шифрования персональных данных, рисков безопасности системы и OWASP-уязвимостей веб-приложений. Middle-специалисты должны разбираться в таких принципах безопасности, как разделение обязанностей (Segregation of Duties, SoD), глубинная оборона (Defence in Depth), принцип четырех глаз и принцип минимальных привилегий.
В связи с этим нужно знать целый ряд технологий, включая:
6. Системная архитектура: дизайн и оптимизация инфраструктуры
Любая система функционирует внутри конкретной инфраструктуры, поэтому архитектор должен понимать ее ограничения и возможности:
Сеньорам нужно знать все те же вещи, но уже на уровне работы с конкретными решениями, а не общего понимания.
Например:
В «облаках» тоже важно разбираться на уровне конкретных провайдеров и понимать разницу между ключевыми облачными платформами, такими как AWS, Azure и Google Cloud, а также «Яндекс.Облако» и VK Cloud.
Помимо этого, Senior-архитекторы должны понимать принципы построения информационных сетей, СХД, отказоустойчивых ЦОД и многоцодовых конфигураций. Нужно понимать, что опытные архитекторы обычно участвуют в составлении опросника для вендоров, а значит, должны уметь проводить глубокий анализ инфраструктурных решений относительно требований, стоимости, поддержки, законов и других релевантных факторов.
7. Документирование архитектурных решений
Архитектурные идеи должны быть доступны и понятны всем участникам проекта, поэтому документирование становится неотъемлемой частью работы архитектора:
8. Гибкие и бизнес-навыки
Технические знания — лишь часть профессии архитектора. Умение взаимодействовать с людьми и сохранять фокус на цели делает специалиста по-настоящему эффективным.
Важно:
По мнению опрошенных работодателей и экспертов, многим начинающим архитекторам ПО не хватает именно софт-скилов. Это объяснимо. Очень часто архитекторов растят внутри команды, выбирая самых проактивных разработчиков. Но несмотря на повышение по рангу, для технаря это не всегда работа мечты — в работе архитектора очень много общения с людьми, а это мало кто любит, и очень мало работы с кодом.
На уровнях повыше, где речь идет уже о полуменеджерских ролях, архитектору важно уметь работать с командой, а именно делегировать, распределять задачи, а также мотивировать и наставлять таланты. Кроме того, старшие архитекторы обычно напрямую работают с бизнесом и участвуют в пресейлах, а значит, должны обладать определенным навыком продаж, понимать, как выглядит карта пути клиента и цепочка создания стоимости, и уметь выявлять фичи, несущие максимальную прибыль.
В целом чем больше у специалиста знаний по устройству различных процессов и «деловой чуйки», тем лучше — опытные архитекторы ПО нередко работают над общим видением цифровизации и принимают участие в подготовке комплексной ИТ-стратегии.
Подборка материалов для самостоятельного изучения
Для архитектора ПО крайне важна постоянная прокачка теоретической базы. Наши эксперты рекомендуют такой список.Книги:
Статьи:
.png)
Заключение, или Думай как архитектор
Напоследок хочется сказать про ключевой метанавык, необходимый архитектору программных решений, — это способность к постоянному самообразованию, можно даже сказать, неутомимое любопытство. Насмотренность позволяет быть в курсе инноваций и помогает принимать обоснованные решения при проектировании систем и выборе подходящих технологий для реализации проектов.
Здесь важно умение вести собственную базу знаний и желание проактивно отслеживать ИТ-тренды. Если на рынке появилась новая технология, архитектор должен не бояться зарыться в документацию и прочитать больше, чем требуется для решения текущей задачи, чтобы знать, как еще можно применить эту технологию в будущем, а заодно отделить хайп от реально полезных инструментов.
Умение сочетать технические знания с креативным мышлением, а также способность эффективно взаимодействовать с командой и бизнесом позволяют архитекторам создавать решения, которые не только отвечают текущим требованиям, но и предвосхищают будущее.
Развивая свои навыки в области проектирования, анализа и управления, архитекторы ПО могут не только повысить свою ценность на рынке труда, но и внести значительный вклад в развитие инновационных продуктов и услуг.
Оригинал статьи размещен на Хабре.