Классифицировали знания архитектуры в зависимости от уровня и деятельности специалистов. Памятка для тех, кто хочет прокачать свои навыки проектирования приложений или ПО, но не достаточно хорошо ориентируется в какой последовательности их осваивать.
Всю область архитектуры можно условно поделить на 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.