Пʼять рекомендацій, щоб дорости до Solution Architect

Мене звати Максим Дябін, я співпрацюю з ЕРАМ Україна у ролі старшого архітектора рішень. Окрім роботи на проєктах для клієнтів, я займаюсь розвитком та навчанням майбутніх Solution Architects.

Мій шлях до програмування був досить довгим. Я починав кар’єру у нульових як системний адміністратор, деякий час намагався працювати у Access, VBA, але до комерційного програмування було ще далеко. Озираючись на свій досвід, я виокремлюю п’ять рекомендацій, які допоможуть початківцю дорости до рівня архітектора рішень. А ще — ділюсь корисною літературою.

У 2004-2005 роках я працював адміністратором і навчався програмуванню в університеті та на курсах. Проте комерційне програмування та навички, які дають під час навчання більшість шкіл та ВНЗ, дуже відрізняються. У своїй першій компанії в Харкові я почав спілкуватись з колегами і старшими товаришами, заглиблюватись у тему, читати професійну літературу і прокачуватись практично.

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

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

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

Що відрізняє програміста від архітектора

На мою особисту думку різниця між Senior і Lead інженером не така й велика з точки зору технічних знань. Проте вона помітна у фокусі на людей, роботу з командою. Якщо це вам цікаво, то з рівня Senior уже можна долучатись до певних архітектурних задач. Наприклад:

  • дизайну підсистем або автономних систем з узгодженими вимогами;
  • документації наявних систем або оновлення наявної документації;
  • впровадження різноманітних метрик та нотифікацій щодо якості роботи системи.

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

Наприклад, колись я працював з клієнтом, який хотів швидко мігрувати одне з рішень з власного обладнання в хмари. Після першопочаткового спілкування ми зупинились на найпростішому методі з мінімальними змінами в коді — тобто на lift and shift. За декілька місяців після початку роботи ми дізнались, що команда інженерів безпеки з боку клієнта почала налаштовувати бібліотеку, яка була написана на іншій технології (рішення було на .NET, а запропонована бібліотека — на Java) і не була врахована в системі раніше.

Коли ми порахували кількість змін і точок, де їх потрібно буде зробити, виявили, що знадобиться декілька років рутинної, нецікавої роботи пʼяти або шести інженерів. Дані з близько 30,000 таблиць необхідно було шифрувати та дешифрувати за допомогою бібліотеки, і це ламало багато функціональності: наприклад, пошук, який не працює за зашифрованими даними.

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

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

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

Рекомендація 1. Читати якомога більше професійної літератури

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

Ось джерела, які подобаються особисто мені:

Ці та деякі інші, вже не настільки актуальні книги, допомогли мені справлятися з проєктами у різних доменах на C# і .NET-платформі, а за декілька років мого досвіду було достатньо для переїзду в Сполучені Штати.

Рекомендація 2. Розширюйте професійний обрій

Коли я переїхав до США, то швидко виявилося, що знати одну мову програмування не завжди добре. Тому в певний момент я почав розширювати свої професійні обрії і вивчати нові стеки технологій. Додалися Java, Closure і багато інших.

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

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

Вбирайте корисні знання, які є навколо вас. У період своєї закордонної роботи я певний час працював у американській компанії, яка є одним з засновників практики TDD. Також в ній активно застосовували парне програмування, CI/CD та всі Agile методології. Найцікавішим було те, що адепти і співзасновники цих методологій бачили їх трошки інакше, ніж ми звикли в офшорі.

Наприклад, там я вперше побачив, як результати ретроспективи доносяться до клієнтів і як це впливає на курс та способи розробки. Для багатьох представників аутсорсингового бізнесу ретроспектива — це частіше за все просто ще один мітинг, який ні на що не впливає (але, на щастя, ця точка зору останнім часом змінюється).

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

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

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

Рекомендація 3. Занурюйтесь у те, як працює бізнес

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

Як я вже зазначав, мені пощастило декілька років працювати в різних компаніях у Сполучених Штатах та Великій Британії. Фактом є те, що коли працюєш з клієнтом напряму, в одному офісі, комунікація є набагато простішою і швидшою. Це відкриває багато можливостей, адже можна не чекати мітингів, а обговорити деталі навіть неформально за чашкою кави.

Живе спілкування і small talks не лише про роботу, але й про життя, допомагають зрозуміти краще особисті моменти, точку зору кожної окремої людини на проблему і побачити більше аспектів того чи іншого питання. Опосередковано це впливає на бізнес складову рішень, які ми розробляємо для замовників.

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

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

Зараз на внутрішніх курсах ЕРАМ з архітектури ми завжди обговорюємо такі аспекти, як розробка, документування, комунікування готової архітектури і всіх її аспектів з клієнтами та командою. Це теж дуже важлива частина роботи.

Рекомендація 4. Опануйте пріоритизацію

Буває так, що під час роботи необхідно опрацювати велику кількість проєктів або різноманітних очікувань від бізнесу та клієнтів. І тут головною стає навичка пріоритизувати. Мені подобається такий інструмент, як матриця Ейзенхауера, але ви можете використовувати й інші. Матриця — це інструмент для пріоритезації завдань щодо їхньої терміновості та важливості. За допомогою матриці задачі розподіляються на...

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

Головне — розуміти, що все неможливо робити одночасно, тому необхідно свідомо обирати, що вас наближує до мети, а що — ні.

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

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

Рекомендація 5. Розширюйте технічний світогляд

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

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

Особисто я переконаний, що до певного рівня необхідні курси, книги, університетська освіта, сертифікації та обов’язково індивідуальна практика. Усе це створює фундаментальні знання і потрібний світогляд. Водночас не варто зупинятись: лише за останні роки з’явилась велика кількість технологій, наприклад, у Front-end, яка потребує знання фундаментальної науки та володіння навичками розробки алгоритмів, розуміння, як комп’ютери взаємодіють у розподілених системах, що саме і як роблять операційні системи. А ще навіть за умови використання систем на базі ШІ важливими і корисними залишаються Domain specific languages.

Поділюсь переліком книг, які були корисними для мене в кожній з тем:

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

👍ПодобаєтьсяСподобалось24
До обраногоВ обраному17
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Чи правильно я зрозумів, що шлях від повного новачка до архітектора для більшості людей буде виглядати ось так: trainee —> junior —> middle —> senior —> lead —> architect ?
І які наступні етапи кар’єри після архітектора — СТО?

у меня junior —> middle —> senior —> architect

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

для більшості людей буде виглядати ось так: trainee —> junior —> middle —> senior —> lead —> architect ?

Від цього прбують відходити, але у більшості так.
Проблема в тому, що лід і архітект — це розгалудження, перший більше в управління, других в технічну експертизу. І знову ж це не зовсім правде, бо зовсім технічне — це прінсіал/стаф, а солюши архітект — це технічне+бізнес аналіз, що знову ж не правда, бо архітектура фокусується на НФР, а бізнес аналіз на ФР.

І які наступні етапи кар’єри після архітектора — СТО?

В самій архітектурі є рівні по яким можна рости. Залежно від класифікації, найпростіше: аплікейшн, солюшн, ентерпрайз архітектори.
СТО — як варіант, але тут знову ж треба розуміти, що конкрентно ви в це поняття включаєте. Є СТО — перший програміст в стартапі, є головний ВП ои інжиніринг (менеджер по факту), є 100500 варіанті по середині.

здебільшого — так. іноді ступені можна перестрибувати, іноді для маленької компанії з єдиним клієнтом СТО = архітектор.

6. Одружитися з донькою власника компанії

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

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

Просто не повезло, все архитекторы люди, а люди все разные.

Если такое вот приходит и без разбору начинает включать командира, просто спросите почему такой дизайн это то, во что нужно лить ресурс, какие были рассмотрены подходы, тактики, альтернативы и т.д.

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

Если этого не происходит, меняйте архитектора.

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

Same for me, але не з точки зору колеги, а з точки зору кандидата на позицію senior developer якому технічну співбесіду проводив архітектор. Співбесіди у ЕРАМ та SoftServe відрізнялися просто як небо і земля, власне тому й я працюю вже третій рік не в єпамі.

Вибач але це аскіома ескобара.

О, так то якраз про Серв. Звідтам архітекти приходять що на сіньора не можуть співбесіду пройти.

Коментар порушує правила спільноти і видалений модераторами.

Модель ничего не знает, она галлюционирует, верификация этих галлюцинаций требует того, что описано в статье.

Коментар порушує правила спільноти і видалений модераторами.

Він правий. Чатгпт просто генерує текст, який є правдоподібним через власне нейромережу. Він не здатен валідувати власні відповіді.

Коментар порушує правила спільноти і видалений модераторами.

і отримати 10 варіантів вирішення архітектурних проблем

і отримати 10 відер води

Коментар порушує правила спільноти і видалений модераторами.

Ну то може для вас ця вода є відкриттям, залежить від кваліфікації та здібностей ;-)

Коментар порушує правила спільноти і видалений модераторами.

пукнути в муку)

Він хоч пукнув, хоч ні, але ти обтрусись

Коментар порушує правила спільноти і видалений модераторами.

Давай кловане, розкачай тему! А то мігрантські срачі надоїли! :-)

В мене все працює без води) чат гпт можна під себе налаштувати

Дуже цікаво прочитати про це більше. Розкажіть як відрізнялось ваше рішення і запропоноване ШІ для середненького проекту — нехай 10+ деплоймент елементів, кілька десятків НФРів (вже відранжованих). Які ришення і чому були кращими (Ті що запропонував ШІ чи людина)?
Ще цікаво, як чатГПТ допомагає визначити АСР і дістати з замовника НФР та відранжувати їх.

Коментар порушує правила спільноти і видалений модераторами.

Заплатіть 20 доларів за підписку і спробуйте)

Я вже пробував. Тому і запитав ті проблеми, які ШІ не вирішує з задовільною якістю.

можу відповісти по вашим питанням за 100$/hr)

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

Система яка навчена за 100 млн долларів явно більше знає чим людина.

Коментар порушує правила спільноти і видалений модераторами.

Ну тобто ви не змогли навіть чат жпт спитати, а одразу пукнули в муку на першому конкертному питанні? :-)

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

А потім на запитання на продакт борді «чому ви пропонуєте вибрати такий підхід та інструменти?»

Ми формуємо наші архітектурні практики на основі сучасних AI-енейблед підходів.
Але тут добре б перед засіданням борди скопіювати відповідь з чатГПТ, головне видалити з відповіді «As an AI language model».

Чомусь згадалась історія про юриста, який в суді вибудував справу на основі «прецеденту», який вигадав чатГПТ :)

Коментар порушує правила спільноти і видалений модераторами.

Тішить коли піценсосці без CS бази відкривають для себе світ за межами стандартного фреємворка та формошлепства і моляться на чатгпт як на бога :-)

Коментар порушує правила спільноти і видалений модераторами.

не розуміючи що таке LLM

Вчора мені довелось перевіряти тестове, виконане одним таким знатоком LLM. Він дуже «поглешив собі роботу», доручивши її якомусь генератору — от тільки код не працював, навіть найменші юніти. Але документація вийша кльова. Мене більше всього надихнуло божественне рішення (одне з): окремим запитом витягнути список юзерів, щоб в цьому списку знайти потрібний ID. Як? Порівняти його з ID, явно вказаним як частина самої постановки задачі. Я волав чаєчкою, якщо чесно.

Бо як той хлоп, так і схоже ти сам не дуже розумієш, що все що робить генеративна модель під капотом — це з поданого на вхід потоку символів (літер, пікселів, u name it) генерує потік наступних символів — найбільш ймовірних з точки зору того велетенського корпусу, на якому модель навчалась. LLM роблять це вражаюче якісно — стилістика, семантика, креатив, оце все — але по суті це не більше ніж якісні галюцінації. Якщо це творча робота чи фан це може й окей (й навіть бажано), але якщо результат використовується як основа для прийняття рішень — потрібна веріфікація того, що нафантазувала модель, бо інакше можна всі кінцівки повідстрілювати...

Коментар порушує правила спільноти і видалений модераторами.

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

Коментар порушує правила спільноти і видалений модераторами.

У тебя в профиле сказано, что ты JS Architect, а за что ты деньги берешь с людей, за постановку задачи LLM и чтение вывода вслух с выражением?

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Спроси у ChatGPT в чем суть, и ответь сюда, ты ж умеешь в него

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

А на що великий бізнес має переходити? На джаваскрипт чи що?

Lowcode/nocode наприклад

На єнерпрайзі воно не потрібно, це для презнташки інвестору.

Это такой лютый наркотик, подсадившись на nocode, бизнес можно будет доить сильнее чем просто обычная разработка
При nocode бизнес получает помесячный доступ к условно-своим данным с учетками сотрудников. На месте бизнеса это фатальный lock-in какой-то. Такая модель ок для малого, может среднего бизнеса.
Разрабатывать lowcode/nocode весело, спору нет.

дуже багато саме Java / C#, наразі ще додається багато JS / TS. Кастомні речі здебільшого у певних доменах де потрібно задовільняти якісь специфичні вимоги. Бачив вже іноді і go, деякий час тому scala була у фаворі.

за декілька років мого досвіду було достатньо для переїзду в Сполучені Штати.
співпрацюю з ЕРАМ

Заміііічательний мужжиик
Міня вивєз в Гєлєнжиииик

щоб дорости до Solution
Architect

З якої відправної точки?

Дякую за статтю! Зі свого досвіду можу підтвердити, що приблизно так воно і працює: розвиватися, щоб розуміти, як бізнес транслюється в технологію та vice versa

Підписатись на коментарі