Марія БровінськаРобота
20 вересня 2023, 10:00
2023-09-20
«Архітектура програмного забезпечення — це завжди пошук компромісів». Чим займається архітектор ПЗ: огляд професії від Олександра Савченка, Ciklum
Сьогодні про професію архітектора програмного забезпечення розповідає Solutioning Director компанії Ciklum Олександр Савченко. Олександр пройшов шлях від розробника до архітектора та голови інженерних департаментів. У 2019 році став переможцем Ukrainian IT Awards у категорії Software Engineering, а у 2020 році увійшов до складу журі. У поточній ролі Solutioning Director Олександр фокусується на створенні ІТ бізнес-стратегії, дизайну корпоративної архітектури, управлінні великими проєктами та ІТ-консалтингу. Він активно займається архітектурою різних рівнів, є автором і тренером курсу Software Architecture development, спікером на глобальних конференціях і драйвить розвиток ІТ спільноти.
Сьогодні про професію архітектора програмного забезпечення розповідає Solutioning Director компанії Ciklum Олександр Савченко. Олександр пройшов шлях від розробника до архітектора та голови інженерних департаментів. У 2019 році став переможцем Ukrainian IT Awards у категорії Software Engineering, а у 2020 році увійшов до складу журі. У поточній ролі Solutioning Director Олександр фокусується на створенні ІТ бізнес-стратегії, дизайну корпоративної архітектури, управлінні великими проєктами та ІТ-консалтингу. Він активно займається архітектурою різних рівнів, є автором і тренером курсу Software Architecture development, спікером на глобальних конференціях і драйвить розвиток ІТ спільноти.
Роль та обов’язки архітектора ПЗ
Архітектура ПЗ — це те, з яких компонентів складається продукт та як вони взаємодіють, і як система буде розвиватися з часом.
Розробка архітектури — це комплексний процес, який починається зі взаємодії із зацікавленими сторонами. Спершу архітектор повинен зібрати від стейкхолдерів всю необхідну інформацію, аби зрозуміти, з яких компонентів складатиметься продукт, і описати, як вони пов’язані.
Далі зібрану інформацію треба проаналізувати та визначити вимоги до побудови архітектури — ASR (Architecturally Significant Requirements). Вони включають функціональні вимоги, проєктні обмеження, атрибути якості (такі як безпека, доступність, продуктивність, зручність використання тощо), а також додаткові вимоги від стейкхолдерів.
Після цього архітектор створює дизайн, який підходить елементам продукту і задовольняє всі ASR, та створює архітектурну документацію. Розробляючи дизайн, архітектори користуються вже відомими дизайн-концептами, серед яких еталонні архітектури, дизайн паттерни та стилі, архітектурні тактики, девелопмент фреймворки тощо. Серед цих концептів зазвичай для кожного рішення є альтернативні опції, тому архітектор аналізує альтернативи (trade-off analysis) і обирає найкращу. Саме тому іноді кажуть, що «архітектура не створюється, а вибирається».
Щоб архітектура була правильно імплементована, архітектор також долучається до різних етапів розробки продукту. Зокрема оргструктури і делівері методу, девелопмент практик, інфраструктури, тестової стратегії, релізів, наступної підтримки продукту тощо.
Загалом весь цикл розробки виглядає так:
Якщо підсумувати, то головне завдання архітектора — зрозуміти бізнес-потреби, виявити архітектурні драйвери, створити дизайн архітектури, пояснити команді розробників, як її втілити, і врешті пересвідчитися, що архітектура імплементована правильно. І, звичайно, це комунікація зі стейкхолдерами та передавання інформації від бізнесу розробникам і навпаки. Грегор Хоп метафорично назвав цей процес «архітектурним елеватором», адже архітектор їздить на «елеваторі» і поширює інформацію між «поверхами», тобто департаментами.
Що повинен знати та вміти архітектор ПЗ
Зважаючи, що типи архітектур і архітекторів бувають різні (Application / Solution / Enterprise / Data / Cloud Architect тощо), необхідні знання та навички можуть відрізнятися. Але загалом архітектор повинен бути:
ІТ-експертом: мати потужну експертизу в інженерії та знання у різних напрямах — фронт-енді, бек-енді, девопс, даних та аналітиці, тестуванні, проджект менеджменті, бізнес аналізі тощо. Треба розуміти, як працюють усі елементи, і як архітектура буде імплементована. А також мати досвід з різними архітектурними та делівері методологіями і бізнес-доменами.
Аналітиком: аналізувати значні обсяги даних і володіти методами одержання інформації від стейкхолдерів.
Комунікаційником: отримувати та передавати інформацію від бізнесу розробникам і навпаки, вміти слухати, презентувати і пояснювати свої рішення.
Лідером і ментором: навчати інших інженерів і драйвити процес імплементації.
Крім цього, архітектор повинен швидко навчатися, оскільки технології змінюються, тому потрібно розробляти архітектуру так, щоб її можна було оновлювати й покращувати в майбутньому.
Загалом навички архітекторів можна умовно поділити на Core та Soft.
Серед Core навичок:
Фундаментальні поняття, методи та фреймворк — стандарти (такі як 42010), життєвий цикл розробки архітектури, бізнес домени, TOGAF, ADD, ATAM, CBAM, View and beyond (SEI V&B) тощо.
Управління вимогами — методи виявлення вимог, методи оцінки архітектури, технологічні тренди, архітектурні принципи, ASRи, фітнес функції.
Проєктування та аналіз — еталонні архітектури, деплоймент патерни, архітектурні патерни та стилі, архітектурні тактики, зовнішні компоненти розробки (SaaS платформи, фреймворки, API, технології тощо).
Документація — типи моделей та точки зору архітектури, мови опису архітектури, шаблони і стандарти.
Впровадження та інтеграція — делівері методології та процеси, життєвий цикл розробки, реліз менеджмент, керування та конфігурування інфраструктури, стратегії тестування тощо.
Платформи та технології — SaaS платформи, хмарні рішення, компоненти інфраструктури (такі як засоби моніторингу та логування), бази даних, системи подій тощо.
А до Soft навичок належать:
Управління знаннями, змінами, зацікавленими сторонами, бізнес-ризиками.
Лідерство та менторинг.
Впровадження інновацій та стратегічне планування.
Більш широкий список можна знайти в SFIA або TOGAF фреймворках.
Як стати архітектором і розвиватися в архітектурі
Різні компанії мають власну специфічну організаційну структуру, а відтак і різні шляхи розвитку талантів. Проте загалом я б виокремив два класичних способи стати архітектором:
Перший передбачає розвиток від девелопера до технічного / тім ліда, далі — до Application Architect, який розробляє архітектуру окремої категорії або аплікації / компонента, потім — Solution Architect, який відповідає за весь продукт, і врешті — до Enterprise Architect, який працює на рівні організації.
Другий відрізняється тим, що після девелопмент треку можна розвиватися двома шляхами:
По Application Architect треку — це більш технічний розвиток, де архітектори детальніше працюють з інженерією і розвивають саме ці навички.
Або по Solution Architect треку — це бізнес-трек, де крім інженерних, знадобиться розвивати й бізнес-навички.
Обидва шляхи дають можливість стати Enterprise Architect.
Скільки заробляє архітектор в Україні
Зарплати архітекторів залежать від багатьох факторів: типу архітектора, продукту і технології, необхідного досвіду, вимог позиції. Так як архітектура зазвичай є наступним кроком після девелопменту, зарплати можна порівнювати з зарплатами розробників, очікуючи потенційно вищої компенсації.
Якщо розглядати більш детально по типах архітекторів, то:
Для Application Architect рівень компенсації залежить від мови програмування, на якій написаний продукт. Наприклад, для мов Go / Scala / Rust зарплатні медіани вищі, тож такі архітектори зароблятимуть більше. В середньому медіана зарплати цього типу архітекторів вища від Senior девелопера на 30–35% і від Team/Tech Lead на 15%. Наприклад, якщо середня зарплата Senior Java девелопера $5000, а Lead Java — $5800, то медіана Java Application Architect буде $6500. По Go стек: якщо медіана для Senior Go девелопера $6000, то Go Application Architect — $7800.
Зазвичай медіана для Solution Architect вища на 15–20% від Application Architect, так як цей тип архітектора має більш широкий спектр досвіду і володіє багатьма технологіями, але й може бути такою ж як у Application Architect ролі, якщо це паралельні треки. Також є випадки, коли компенсація менша залежно від унікальності технології для Application Architect ролі.
Компенсація Enterprise Architect вища, ніж у інших типів архітекторів, оскільки ця роль ще більш унікальна і їх не так багато на ринку (іноді ці спеціалісти виступаються в ролі «Proxy-CTO»). Зарплата може коливатися в залежності від компанії від $7000 до $9000, а може бути й вища.
Вакансії та попит
Вакансій архітектора, порівняно з можливостями для розробників, зазвичай менше, оскільки вимоги до ролі вищі, а позиції — більш унікальні. Наприклад, Solution Architect або Cloud Architect може один працювати на проєкті на 30+ інженерів; Application Architect може як працювати в команді з 10 інженерів, так і відповідати за весь технологічний напрям (наприклад, Back-End) в програмі з 50+ інженерів; Enterprise Architect може займати цю роль в організації зі 100-200 чи й більше інженерів.
З огляду на попит на архітекторів, то вакансії є як в продуктових компаніях, так і в аутсорсі. Продуктові компанії частіше шукають Application Architect зі знанням технологій, на яких написаний продукт. Аутсорс раніше більше шукали Solution Architect, які можуть драйвити пресейли, але зараз все частіше є запит на Application архітекторів. Різні компанії часто комбінують роль архітектора з технічним лідом в окремому технічному стеку, тому варто пам’ятати про досвід і навички в лідерстві та менеджменті.
Відчутно зріс попит на архітекторів для хмарних рішень, адже багато продуктів розгортаються в хмарі, або компанії мігрують в хмару. Також зросла тенденція пошуку архітекторів в інтеграції різних платформ та сервісів (таких як SAP, Netsuite, SalesForce), що спричинено збільшенням використання SaaS платформ.
Вакансії досить різноманітні, тому треба пам’ятати: хто шукає — той знайде.
Книги, курси та інші матеріали про архітектуру ПЗ
Архітектура — це окрема ІТ галузь, попри тісний зв’язок із девелопментом. Існують навіть цілі «архітектурні школи», які описують етапи та методи розробки архітектури дещо по-різному. Загалом книг про архітектуру ПЗ чимало. Я б звернув увагу на такі:
Як увійти в IT, якщо не вмієш кодити? Три історії неайтішних спеціалістів з Ciklum, TECHIIA та Intetics
Для того, аби працювати в IT, необов’язково вміти писати код. Адже в компаніях велика кількість спеціалістів, які не знають жодної мови програмування та не орієнтуються у фреймворках.
dev.ua розповідає, як влаштована робота в IT неайтіших спеціалістів й чим вона їх приваблює.
«Ситуація вже пройшла точку критичного дна». Що відбувається на ринку праці та чи є шанс на відновлення активного найму в українському IT
36% українців, які втратили роботу, не знають, як її шукати, рапортує Work.ua. Зокрема, 15% читачів dev.ua, згідно з опитуванням, також опинилися за бортом і наразі не працюють. Скаржаться на досить скромний найм у порівнянні з довоєнними часами і рекрутери. Висновок, що ринок кандидата через війну перетворився на ринок роботодавця, вже ні в кого не викликає сумнівів.