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


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



Естественно, задача и роль специалиста в проекте определяет, что пригодится в работе. Например, Senior-разработчику, Архитектору ПО или СТО может быть необходимо освоить все. А вот инфраструктурному инженеру, который работает с облачными сервисами — только соответствующую часть переноса приложений в облако.

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

Ступень 1. Архитектура и паттерны


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

Изучать нужно, если вы... Разрабатываете программные продукты
Занимаетесь интеграцией или развитием существующих продуктов
Junior-разработчик ПО
Получаемые навыки. что нужно научиться делать? Применять шаблоны проектирования в разработках и понимать solid принципы
Знать современные процессы разработки программного обеспечения
Внедрять devops в свои процессы разработки, улучшая код и минимизируя ошибки
Вести разработку от постановки бизнес-задачи до реализации на production сервере
Отрисовывать бизнес-процессы и схемы
Для каких должностей требуется? Middle-разработчик
Junior-архитектор


В OTUS эти навыки дает онлайн-курс «Архитектура и паттерны». В нем нет привязки к языку — главное быть знакомым с базовыми понятиями программирования, знать принципы ООП.

Более специализированные углубленные навыки обычно идут осваивать те, кто планирует карьеру архитектора или техлида (СТО). Но и другим специалистам могут пригодиться эти знания.

Ступень 2. Архитектура высоконагруженных систем


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

Изучать нужно, если вы.. Web-разработчик
Тимлид команды web-разработчиков
Архитектор
Технический руководитель
Middle+ разработчик с опытом работы от 2 лет
Получаемые навыки. что нужно научиться делать? Создавать веб-приложения, которые легко масштабировать
Обеспечивать отказоустойчивость веб-приложений даже при падении серверов
Правильно использовать шаблоны (кеширование, реплицирование, шардирование, индексирование)
Для каких должностей требуется? Архитектор
Тимлид
Ведущий разработчик на сложном проекте


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

  • Владение одним из языков серверной разработки — Python, PHP, Golang (предпочтительно), NodeJS (в крайнем случае), Java (в крайнем случае)
  • Умение верстать сайты на базовом уровне
  • Основы JavaScript
  • Навыки работы с SQL, MySQL
  • Навыки работы с Linux


Ступень 3. Архитектура программного обеспечения


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

Изучать нужно, если вы... Senior developer
Тимлид
Администратор
Получаемые навыки. что нужно научиться делать? Планировать архитектуру ПО
Создавать масштабируемые, fault-tolerant приложения
Использовать в проектах классические паттерны проектирования (шардирование, репликация и т.д.)
Для каких должностей требуется? Senior-разработчик
Тимлид
Архитектор ПО


В OTUS курс «Архитектор ПО» частично пересекается по программе с «Архитектором highload», но при этом он более сложный. Поступающему понадобится знание и опыт работы на уровне Senior в одном из следующих стеков: Java (spring / Java EE), Node.js, C# (.net), python (django), Golang, PHP.

Ступень 4. Архитектура облачных решений


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

Изучать нужно, если вы... Сетевой и системный администратор, который хочет стать devops инженером и научиться сопровождать облачную инфраструктуру
Менеджер или тим лид, который хочет узнать, как трансформировать свою организацию, техническую архитектуру и рабочие процессы для обеспечения работы в облаке
Получаемые навыки. что нужно научиться делать? Разрабатывать и поддерживать архитектуру облачных приложений
Выполнять процедуру миграции в облако стека приложений и адаптации организации, ролей и рабочих процессов (рекомендации фреймворка, стоимость, разработка плана миграции)
Использовать набор архитектурных требований, заточенных на применение в облаке (формирование требований, реализация и анализ)
Владеть подходом к agile devops разработке и сопровождению архитектуры облачных решений (infrastructure as code)
Настраивать scrum процесс совместной разработки и сопровождения архитектуры
Для каких должностей требуется? Head of development
Cloud solution architect
Solution architect


Востребованность этих навыков проектирования растет по мере того, как облачные сервисы занимают все большую долю в мировой отрасли разработки. Предполагается, что они нужны в первую очередь тем, кто планирует перейти в управляющую должность из Senior-разработчика или DevOps-инженера.
Курс «Cloud Solution Architecture» не пересекается с программами Архитектора ПО и высоких нагрузок, его можно пройти, овладев основами проектирования. Для обучения нужен опыт разработки или администрирования, а также опыт работы с одним из облаков: GCP, AZURE, AWS. Сам же курс посвящен задачам, с которыми сталкивается специалист уровня Senior — мидл или джуниор не смогут применить полученные знания на практике.

Знания архитектуры и паттернов — это значимое преимущество в глазах работодателя. Так же это основной путь вырасти из кодера в востребованного разработчика, а после — в тим лида, архитектора или СТО, в зависимости от того, что вам ближе.

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