Архітектор

Software Architect – це IT-фахівець, який приймає рішення щодо внутрішнього устрою і зовнішніх інтерфейсів програмного комплексу з урахуванням проектних вимог і наявних ресурсів.

За статистикою ДОУ, середньому українському архітектору 30 років, він має 9-річний досвід роботи і отримує $ 4000.

ЗАДАЧІ ТА ОБОВ’ЯЗКИ

Головна задача архітектора – пошук оптимальних (простих, зручних, дешевих) рішень, які будуть максимально відповідати потребам замовника і можливостям команди. На підставі бізнес-вимог цей фахівець створює функціональну та технічну специфікацію системи, планує і проектує способи технічної реалізації, обирає технології.

Архітектор зобов’язаний мати цілісне бачення всієї системи і грамотно визначати, як система буде розбита на модулі, та як ці модулі будуть взаємодіяти між собою. Тільки після прийняття цих рішень команда розробників зможе приступити до роботи над окремими модулями.

В обов’язки архітектора входить:

– Проектування системи на основі вимог замовника;

– Визначення архітектури додатку або її еволюції;

– Вибір технології для кожної ланки системи;

– Вибір способів взаємодії між компонентами системи;

– Створення робочого прототипу;

– Дизайн інтерфейсів і компонентів додатка;

– Підбір або проектування фреймворків;

– Аналіз та виправлення проблем продуктивності;

– Архітектурний аналіз бізнес-вимог;

– Аналіз коду та дизайну при великих змінах;

– Рефакторинг коду;

– Написання та підтримка стандартів кодування, каталогів проектних патернів та антипаттернів;

– Документування всіх архітектурних рішень, постійне оновлення документації;

– Ризик-менеджмент;

– Координування архітектури протягом наступного життєвого циклу ПЗ;

– Навчання та консультування програмістів.

«Архітектор ПЗ нічим не відрізняються від інших архітекторів, які будують мости або будинки. Додаток – це теж будинок: йому потрібен правильний фундамент і сильні рішення. Стоячи під мостом під час перевірки навантаженням, потрібно бути впевненим, що він не впаде».

Необхідно мати стратегічне бачення: проектні рішення архітектора повинні забезпечувати можливість коректних змін або вдосконалень системи, її подальшого розширення, створення наступних версій, а також можливість повторного використання коду в інших проектах.

«На відміну від проектного менеджера, який фокусується на питанні, як успішно довести проект до кінця в рамках поточних бюджетів і ресурсів, архітектор відповідає за те, як технічно правильно довести проект до кінця в рамках поточних ресурсів і не застрелитися при розробці наступних версій».

Крім цього, від архітектора очікується глибоке розуміння предметної області бізнесу, знання основних стандартів і трендів, пов’язаних із технічним продуктом. Або, якщо йти від супротивного, – незнання фахівцем будь-яких бізнес-деталей, необхідних для проектування, не може бути виправданням нездатності архітектора виконати свою роботу.

«Без знання предметної області ти залишаєшся на рівні сіньйор-програміста. Чим більше ти розумієш мову бізнесу, тим ти цінніший».

Ще одна особливість посади архітектора пов’язана з необхідністю шукати компроміси. В кожному проекті фігурує велика кількість зацікавлених осіб (стейкхолдерів):

– Замовник – зацікавлений у вирішенні проблеми, в мінімізації вартості рішення, в одноманітності всіх технічних рішень, простоті їх використання і підтримки;

– Топ-менеджмент – в максимізації прибутку;

– Менеджмент проекту – в своєчасному і якісному виконанні проекту;

– Члени проектної команди всіх ролей і спеціальностей – у цікавій, комфортній роботі, відсутності тиску, використанні зручних і сучасних інструментів і технологій.

У кожного з них є свої інтереси в даному проекті, і кожен надає свої вимоги, побажання, обмеження. Крім цього, кожен розмовляє своєю мовою (технічному або мовою бізнесу), кожен розуміє і сприймає аргументи зі своєї області та не розуміє чужих. Архітектору необхідно збирати загальну картину вимог і обмежень всіх стейкхолдерів, поєднувати їх знання та інтереси, забезпечувати ефективну комунікацію між ними, виробляти рішення, що дозволяють оптимальним чином задовольнити максимальну кількість вимог кожного.

«Вміння вибрати оптимальне рішення замість кращого – ось основна задача архітектора».

Таким чином, архітектор – це фахівець, який добре знає можливості різних технологій. Його головні обов’язки: встановлювати вимоги як до системи в цілому, так і до кожного її окремого компоненту, визначати дизайн рішення і способи досягнення мети. Він повинен вміти оцінити ризики, пов’язані з вибраними технологіями, і підготувати альтернативні.

«Я займаюся не стільки реалізацією конкретних функцій комп’ютерної гри, скільки вигадуванням того, як вони повинні бути реалізовані взагалі та яким буде їх взаємодія. Наприклад, при розробці гри від мене потрібно вибрати технології реалізації клієнта і сервера, вибрати спосіб комунікації між ними, визначитися, які операції слід реалізувати на клієнті, а які – на сервері, і як все це буде зберігатися в базі. В мої обов’язки входить робота над «двигуном» гри – як реалізувати це все, щоб його було легко перенести і працювало якомога швидше. Припустимо, наша нова гра дає всього лише 4-5 FPS на першому iPad. У всьому винен рендер, який повинен відсортувати і намалювати безліч об’єктів. Моя задача: придумати більш продуктивний алгоритм і реалізувати його. Задача програмістів: прикрутити його до конкретних проектів».

Типовий робочий день архітектора передбачає:

– Участь в груповому плануванні, зустрічах, нарадах із замовником;

– Консультування команди з поточних питань;

– Проектування та написання технічної документації;

– Вивчення нових технологій;

– Робота з кодом проекту, прототипування, оптимізація, рефакторинг.

«Завжди потрібно бути готовим до переключення між завданнями – це норма для архітектора».

ПЕРЕВАГИ І НЕДОЛІКИ

Посада архітектора приваблює розробників можливостями знайомитися з новими технологіями та ідеями, впливати на процес розробки і подальшу долю проекту, а також вирішувати глобальні завдання, залишаючись при цьому програмістом.

«Працюючи архітектором, я займаюся тим, що люблю – вирішую складні інженерні завдання, які роблять світ технологій кращим».

«Давно займаюся проблемою створення штучного інтелекту, і моя робота допомагає мені на потрібному рівні абстракції зрозуміти предметні області, в яких веде діяльність людина – як вони функціонують і як їх можна реалізувати одноманітно програмним способом».

Недоліки: велика відповідальність, необхідність ретельно зважувати кожне прийняте рішення. Ціна помилки архітектора вище, ніж ціна помилки іншого технічного фахівця на проекті.

Також архітектори відносять до недоліків зростання управлінського навантаження, часті наради і зустрічі, необхідність працювати переважно з чужим кодом, а не з власним.

«Іноді хочеться просто програмувати, а не вирішувати питання вселенського масштабу про взаємодію і приймати рішення по зниженню залежності між частинами якихось систем. Наприклад, написати код, реалізувати якийсь алгоритм і налагодити його. Скажу по секрету, іноді таки вдається відбити у розробників цікаву задачу :)».

«Робота архітектора іноді менш помітна користувачами і менеджерами, ніж робота розробника. Останній додав кнопку – користувач радий, оскільки як давно на неї чекав. Архітектор зробив рефакторинг – програмісти сказали “ОК”. Менше відгуків від кінцевих користувачів».

ЯК СТАТИ АРХІТЕКТОРОМ І КУДИ ЙТИ ДАЛІ?

Посада архітектора є наступним етапом розвитку Senior / Lead-інженера, який не хоче йти у менеджмент і віддалятися від технічних завдань.

Основні навички і якості, якими повинен володіти фахівець, який хоче стати архітектором, – це системне мислення, схильність до аналізу, великий досвід, комунікативні здібності. Важливе вміння доводити роботу до кінця, а також висока швидкість самостійного навчання і мотивація до отримання нових знань. Крім цього, архітектор повинен вміти подати і «продати» своє бачення проекту в технічному плані.

«Бути дуже сильним, розумним фахівцем, йти в ногу з розвитком технологій, передбачати їх хід і бути завжди на крок попереду, постійно прагнути до відточування своїх умінь, володіти хорошим абстрактним мисленням, вміщуючи складні системи і процеси у себе в голові, і вміти чітко і правильно аргументувати свої рішення».

З технічних знань: необхідно розбиратися в алгоритмах і їх складнощах, бути в курсі доступних платформ і технологій та знати їхні переваги й недоліки.

Розробник, який вирішив стати архітектором, повинен бути готовий до зміни професії і вивченню її основ, до виконання нових задач, до зміщення фокусу з технічних аспектів на інші. Крім досвіду програмування, величезним плюсом для майбутнього архітектора буде досвід роботи в інших сферах розробки ПЗ, таких як тестування, менеджмент, розробка дизайну і юзабіліті, бізнес аналіз.

ПРАКТИЧНІ ПОРАДИ

«Потрібно побільше працювати над своїми проектами у вільний час. Єдиний спосіб стати архітектором – почати створювати архітектури. З часом почне виходити. Ще через деякий час почне виходити добре. Коли у тебе вже готово 90% проекту, а ти раптово усвідомлюєш, що реалізація решти десяти займе більше часу і породить купу милиць, і це простіше переписати заново, ніж закінчити, то в майбутньому будеш вже продумувати все наперед. Правда тут теж варто міру знати. Бажаючи зробити все ідеально, можна і зовсім жодного проекту не доробити».

«Я рекомендую при використанні будь-якого програмного продукту намагатися зрозуміти, як він влаштований, і придумувати, як би ви реалізовували ту чи іншу його функцію. Ось, припустимо, є в грі кнопка, при натисканні на яку, посилюються щити корабля. І я, граючи в цю гру, намагаюся зрозуміти, як вона відмальовувається на екрані і як вона сигналить про своє натискання основному коду, як виконується перевірка на наявність доступної енергії та на відсутність пошкоджень у системи щитів, як розраховується потужність щитів залежно від накачаної в них енергії і т. п. Зрозуміло, я не можу дізнатися, як воно там влаштовано насправді, але я можу прикинути, як би я це робив і що б при цьому використав».

«Є два види розробників: ті, хто робить поїзди, і ті, хто будує для них вагони. Перш ніж зробити перший повноцінний проект в якості архітектора, я 6 з половиною років клепав різної якості вагони. Розуміння того, що ти можеш планувати і створювати архітектуру проекту приходить разом систематизацією великої кількості знань із різних областей програмування».

Перспективи кар’єрного розвитку архітектора мають 2 ракурси: або поглиблення в технічну частину і розвиток «від маленьких систем до enterprise та управління космічними кораблями в масштабах всесвіту», або перехід в менеджмент на позицію СТО або VP of Engineering. Фактично архітектор – це фінальний етап технічного кар’єрного росту.

«Перевага даної позиції саме в тому, що в ній можна рости нескінченно – з’являються нові технології, проблеми, продукти».

З точки зору професійного росту можна виділити наступні напрямки:

– Зростання в розмірі та складності вирішуваних проблем;

– Розвиток «вшир» – вивчення більшої кількості технологій, процесів і методологій, інструментів, архітектурних підходів;

– Розвиток знань в іншій предметній області : «Людей, які можуть кодити в світі технологічних компаній – ціла купа, тому їх особливо не цінують. А ті, хто може кодити в біології, медицині, політиці, соціології, фізиц, історії, математиці – поважні люди, здатні робити дивовижні речі для розвитку своїх дисциплін». (Zed. A. Shaw)

«Про перспективи цієї професії на ринку України можу сказати, що для Software Architect все тільки починається. Судячи з досвіду попередніх років, ще 5 років тому ніхто навіть не здогадувався, що така професія є. Але ще 7 років тому ніхто в Україні не розумів, навіщо потрібно платити за інтернет-ресурси та їх розробку – як можна заплатити за те, що не можна помацати? Точно так само і з архітекторами».

Стаття створена за матеріалами dou.ua. Наведені цитати взяті з розповідей представників даної професії.

Facebook

Get the Facebook Likebox Slider Pro for WordPress