Мрія про «Senior-Only» команди: як тімлід перетворився на QA для ШІ

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Привіт, спільното. Це знову я, Сергій Немчинський. Мій досвід в ІТ сягає 30 років, з яких 15 — тімлідом. Я пройшов шлях від рядового розробника до засновника та власника компанії, а наразі керую навчальним центром ІТ-професій FoxmindEd.

Пропоную обговорити черговий аспект впливу ШІ в програмуванні — а саме демографічну загрозу на ринку кадрів.

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

Зовсім недавно ми з вами обговорювали, як могла б виглядати робота розробника в еру ШІ. Наймаємо компактну команду сильних Senior-інженерів. Даємо їм Copilot, Cursor, Claude Code та флот ШІ-агентів. Агенти пишуть код, люди займаються архітектурою. Джуни не потрібні. Менеджмент щасливий: суцільна економія та продуктивність. Краса ж, еге?

Не так сталося, як гадалося.

Насправді відбувається приблизно таке. Коли автономний ШІ-агент генерує pull request або колега скидає неперевірений output промпта — Senior-інженер замість роботи над архітектурою починає читати сотні рядків коду. Код нібито працює, але дублює вже наявну логіку, обходить усталений патерн або акуратно маскує милицю.

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

Розробник більше не творець системи. Він дорогий валідатор коду, згенерованого ШІ.

День бабака на Code Review

У традиційній команді Senior теж витрачає час на code review після роботи джунів. Але є принципова різниця.

Коли ви коментуєте код Junior-розробника, людина поступово засвоює контекст. Наступного разу вона зробить краще. За рік вона сама може рев’ювати чужий код. Тобто менторинг людини має накопичувальний ефект.

З ШІ code review перетворюється на сізіфову працю. Так, у 2026 році моделям уже можна задавати контекст через .cursorrules, RAG та MCP. Але навіть із формальним синтаксичним контекстом модель позбавлена Tacit Knowledge — неявних знань: бізнес-домовленостей, históричного контексту продукту, рішень, які команда вже відкинула і чому.

Вона не пам’ятає, чому два роки тому відмовилися від певного рішення. Не була на дзвінку, де бізнес пояснив виняток, через який «очевидний» рефакторинг зламає billing.

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

Проблема вже проявляється в коді

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

GitClear — інструмент для аналізу коду. Вже кілька років він збирає статистику у великих масивах репозиторіїв і фіксує, як змінюється структура code changes в епоху ШІ-асистентів для програмування. Один із тривожних сигналів — зростання частки duplicated та copy/pasted code разом зі скороченням частки коду, який рефакториться або використовується повторно.

І це логічно з точки зору ШІ. LLM дуже добре відповідає на локальне завдання: «Зроби функцію, яка робить X». Значно складнішим є питання: «Чи повинна ця функція взагалі існувати в нашій системі?»

Для відповіді потрібні знання архітектури, історії проєкту, технічного боргу та бізнес-обмежень. Як ми вже з’ясували, в агента всього цього немає, а тим контекстом, який є, він не завжди може скористатися ефективно. Тому LLM генерує величезні простирадла вторинного коду, а час на code review зростає вдвічі.

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

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

Економіка має бути економною

Як зазначено на початку, скорочення найму джунів пояснюють суттєвою економією. Мовляв, ШІ-агенти коштуватимуть дешевше, а код генеруватимуть швидше. У цьому є певна логіка, але вона враховує лише вартість написання коду й ігнорує вартість створення продукту.

Уявімо спрощений сценарій. Senior або Architect коштує компанії $50–80+ за годину. За день ШІ-агенти генерують кілька змін, які потрібно перевірити перед комітом у основну гілку. Якщо Senior витратить чотири години на повне рев’ю, компанія фактично заплатить $200–320 за одну сесію.

Причому значна частина цієї роботи може полягати не в архітектурних рішеннях, а в речах на кшталт:

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

Це робота ручного шару pre-code review, а не архітектора. Її могла б виконувати людина, яка вже вміє користуватися ШІ-інструментами, читати чужий код, запускати тести та знаходити очевидні проблеми.

Ось як змінюється математика. Junior++ за $15—25/год витрачає чотири години на первинне рев’ю — це $60–100. Після цього Senior витрачає вже не чотири години, а лише 30 хвилин на підтвердження концепту — ще $25–40. Разом: $85–140 замість $200–320, і плюс три з половиною години врятованого часу архітектора на день.

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

Це не оптимізація і не економія. Це дуже дорогий спосіб організувати рутину.

Переможне повернення джуніора

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

Між ШІ-агентом і Senior-інженером утворюється новий шар роботи. Хтось повинен:

отримати задачу → правильно сформувати контекст → використати ШІ → перевірити результат → прогнати тести та статичний аналіз → звірити з правилами проєкту → відкинути очевидний ШІ-смітник → передати Senior лише те, що потребує рішення його рівня.

Саме це я називаю Junior++. Існує альтернативна назва — «AI Reliability Engineer (ARE)». Але термінологія вторинна.

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

Такий Junior++ може виявитися економічно вигіднішим доповненням до команди, ніж ШІ-агент, результат роботи якого потім годинами перевіряє Architect.

Але такого джуніора ще треба знайти. Бо стати Junior++ можна лише з досвідом, а здобути його ніде, коли ніхто не наймає просто джунів. Це класичний Catch-22: компанії не хочуть наймати джунів без досвіду, а досвіду не можна набути без найму. Розірвати це коло можна лише через навчання в умовах, максимально наближених до реальної роботи: з легасі-кодом, менторськими code review від практикуючих сеньйорів і реальними проєктними процесами — саме так влаштоване навчання в FoxmindEd.

Хто наступний у Team Lead?

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

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

Якщо компанії перестають наймати початківців, цей ланцюг переривається.

Дослідження Optimum Partners 2026 «Engineering Management 2026: How to structure an AI-native team» описує цю проблему як демографічний ризик для кадрового резерву. Скорочуючи найм на початкові позиції сьогодні, індустрія одночасно скорочує пул людей, з якого мають з’явитися Senior-інженери та технічні лідери.

ШІ не закриває цю прогалину. Ніяк. Тому що Team Lead — це не просто людина, яка знає більше синтаксичних патернів. Це людина, яка може сказати: «Ні, ми не будемо так робити, навіть якщо це швидше і дешевше». Пояснить бізнесу, чому реліз треба перенести. Побачить, що красиве зовні рішення створить системну проблему. Візьме відповідальність, коли щось піде не так.

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

Тому питання для фанатів моделі Senior-Only дуже просте: хто стане вашим Team Lead через п’ять років, якщо сьогодні ви перестали вирощувати інженерів?

Критикуєш — пропонуй, або що зробити вже зараз

Чекати, поки ринок сам знайде оптимальну модель, необов’язково. Врешті-решт, у ринку немає інших рук, окрім наших.

Значну частину проблеми — а саме накопичення ШІ-слопу та перевантаженість старших розробників — можна прибрати, правильно налаштувавши інженерні процеси вже зараз.

1. Встановити AI Guardrails

Усе, що можна перевірити автоматично, не має перевірятися вручну. Лінтери, статичний аналіз, тести, перевірки залежностей, правила CI/CD, Architectural Fitness Functions (ArchUnit, NetArchTest), Secret та Dependency Scanners — усе це повинно відсіювати максимальну кількість проблем, зокрема пакетні галюцинації моделей, до того, як код побачить людина. Рев’ю коду не має бути найдорожчою частиною у вашому процесі розробки.

2. Перестати використовувати Senior як ручного валідатора

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

3. Віддати першу лінію роботи з ШІ Junior++

Не кожен згенерований ШІ pull request повинен одразу летіти до Senior-інженера. Первинну генерацію, запуск тестів, перевірку стандартів проєкту, пошук очевидного дублювання та базове рев’ю коду може виконувати менш досвідчений інженер, який добре працює з ШІ. І вже він надсилає реквест типу: «Ось задача. Ось запропоноване рішення. Ось що перевірено. Ось два місця, де потрібне архітектурне рішення». Це зовсім інша вартість уваги Senior, ніж «ось 800 рядків від Claude Code, подивись».

4. Інвестувати звільнений час у системне бачення

Якщо ШІ справді має підвищувати продуктивність Senior Engineer, результатом має бути не більше годин, витрачених на рев’ю коду. Результатом має бути більше часу на архітектуру, технічну стратегію, інженерні процеси та розвиток команди.

Краще менше, але краще

Ми вже вирішили проблему швидкого написання коду. Тепер з’явилася інша: як не потонути в коді, який надто легко створювати.

Якщо ви стежили за моєю думкою протягом статті, маєте погодитися: сильна інженерна команда майбутнього навряд чи виглядатиме як «десять Senior Engineers + сто ШІ-агентів».

Набагато реалістичніше виглядає багаторівнева система: автоматичні обмеження та перевірки, ШІ-інструменти, Junior++ як перша лінія роботи зі згенерованим кодом та Senior/Lead, чий час захищений для рішень, де справді потрібні досвід і системне мислення.

Чим більше коду пише ШІ, тим меншою конкурентною перевагою стає здатність просто писати код. Натомість дорожчими стають архітектурне мислення, побудова інженерних процесів та вміння організувати роботу інших людей і ШІ-інструментів. Саме на цьому сфокусовані програми Architecture та Team Lead у FoxmindEd — не на черговому інструменті генерації коду, а на тих аспектах, за які й надалі відповідає інженер.

Командам потрібні й Junior-розробники нового типу. Вони мають уміти працювати не лише зі своїм кодом, а й із чужим та легасі-кодом, робити рев’ю і критично оцінювати результат роботи ШІ. Вони мають чітко розуміти, що саме вони відправляють у систему.

ШІ не скасовує інженерну ієрархію. Він просто змушує нас заново відповісти на питання: за що на кожному її рівні варто платити людям? І якщо ваш Architect сьогодні вже четверту годину перевіряє згенерований CRUD — схоже, відповідь на це питання час переглянути.

А як у вашій команді вирішують проблему вичитки ШІ-коду і де ви бачите межу між автоматизацією та відповідальністю ліда? Діліться в коментарях.

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному1
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

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

2. Перестати використовувати Senior як ручного валідатора

Оце і є вирішення route cause проблеми. Бо ця практика нагадує забивання цвяхів мікроскопом. Все інше, як на мене, можна не читати. Як на мене, проблема є штучно створеною. Ніхто не казав, що ШІ==джун. Тому, сам підхід, коли сеніор займається перевіркою коду, написаного ШІ під кервіництвом когось менш кваліфікованого і вимушений виявляти проблеми вже на рівні написаного коду, виглядає трошки дивним.

Як на мене, правильний підхід такий. Сіньор по-перше, визначає правила (AGENTS.md і все, що з цим повʼязано). По-друге, він створює промпт для розробки складної фічі в режимі планування, після цього вичитує план покращує його за допомогою ШІ аж поки план не виглядає ідеальним. Тільки після цього він дозволяє ШІ згенерувати код, перевіряє/тестує його сам і тільки після цього робить PR і передає не review іншому розробнику.

Так само може діяти і middle і junior, тільки правила (принаймні ті, що йдуть у репозіторій) краще все ж таки узгоджувати с більш досвідченими колегами, проте завжди залишається можливість експериментувати з локальними налаштуваннями ШІ. Єдина суттєва різниця між senior та менш досвідченим розробником — складність вирішуваних задач. Як, власне і було в епоху до масового використання ШІ. Тоді не буде виникати ситуація, коли людина, в якої не вистачає досвіду, вирішує складну проблему за допомогою ШІ в неоптимальний спосіб, а після цього досвідчений розробник має якось цей безлад «розрулювати».

Я щось пропустив?

Як це нівелює проблему ревью описану автором? Якийсь senior все одно повинен перевірити цей код на проблеми, знаючи що код був згенерований llm.
І цього коду стало в 10 разів більше — бо код генеруюється в 10 разів легше.

І з розвитком llm галюцінації стають все хітріщі

І цього коду стало в 10 разів більше — бо код генеруюється в 10 разів легше.
І з розвитком llm галюцінації стають все хітріщі

Якщо в вас виходить саме так, то ви взагалі не зрозуміли, про що я написав. Детальний план (особливо за наявності добре продуманих правил) не залишає ШІ простору для генерації зайвого коду, галюцінацій та «хитрощів». Взагалі, «хитрощі» є вірною ознакою того, що той, хто керує ШІ не розуміє, що він робить. І саме в цьому полягає проблема.

Як це нівелює проблему ревью описану автором?

Прибирає route cause. Некомпетентність десь в районі між ШІ і кріслом.

Ok, вам прийшов на review реквест, ви знаєте что автор генерував код згідно ваших правил, ви робите LGTM не дивлячись на код? не перевіряючи на всі проблеми згадані в статті? (велисипеди, архітектура, дублювання вже існуючого коду і тп)

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

Це питання — воно з світу, де існують формальні правила поведінки на всі випадки життя. Surprise! Такого світу не існує. В реальному світі все залежить від сотень нюансів, більшість з яких навіть складно описати словами. Тому єдине «форамальне» правило, яке працює завжди — «Trust your guts». Єдина правильна відповідь, виходячи з того, що описано в питанні — залежить.
Можу розібрати крайній випадок. Уявимо, що я працюю в стартапі на стадії, коли треба якомога швидше розробити MVP заради отримання фінансування. В цьому випадку я на код дійсно дивитися не буду. Головне питання — чи працює фіча, якщо відповідь «так», на код дивитсь тупо немає часу. Якщо є домовленість покривати код тестами, я напевно перевірю наявність тестів, а такоє попрошу ШІ перевірити їхню повноту, тобто, чи всі важливі paths в коді і чи всі суттєво різні набори даних покриті. Далі роблю LGTM не дивлячись на код. :)
Звісно, за інших обставин, є ще 100500 інших опцій, але то вже буде книга, а не відповідь на питання.

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

Що робити якщо Codex іноді не генерує код, а вказує як мені вчиняти? Наприклад одного разу написав щоб я запустив команду `rg` і самостійно знайшов потрібні місця в проекті. Досить часто просто описує принцип роботи рішення, а я вже потім самостійно набираю код.

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

написав щоб я запустив команду `rg` і самостійно знайшов потрібні місця в проекті

Надати йому пермішени на проєкт.

learn.chatgpt.com/docs/permissions

У меня тогда один вывод — школа Сергея больше не нужна)))

Код рев’ю пулл-реквесту створеного AI має робити AI. І навіть фіксити всі критичні/важливі зауваження — також AI. AI робить цей код рев’ю краще за сіньора в 80% випадків (а може і більше, це консервативно). Форвардитись людині це має тільки на аппрув, і то не у всіх випадках.
Найкраща код-рев’ю тула на сьогодні — CodeRabbit, коштує 48$/міс на девелопера і робить чудове код-рев’ю, параметри якого можна гнучко налаштувати.
Не підходить по якимось причинам CodeRabbit — є інші рішення, врешті пишіть своє.

статтю пропустили через ШІ — "

históричного контексту продукту

"

Писав ШІ, ревьював сіньйор

Ось як змінюється математика. Junior++ за $15—25/год витрачає чотири години на первинне рев’ю — це $60–100. Після цього Senior витрачає вже не чотири години, а лише 30 хвилин на підтвердження концепту — ще $25–40.

В нас так і працюють, тільки замість джуна є АІ для рев’ю.
Рев’ю роблять дві різні моделі з новим контекстом.
Коли від АІ рев’ю пройдене, тоді вже дивиться людина на «підтвердження концепту».

значна частина цієї роботи може полягати не в архітектурних рішеннях, а в речах на кшталт:

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

Робите гайд по рев’ю з цими деталями, + окремо гайд по проекту/бізнес логіці/специфіці проекту. З кожним рев’ю вносите типові проблеми.
Через 2 місяці агент для рев’ю буде його робити не гірше сіньора.

Junior++ як перша лінія роботи зі згенерованим кодом

У вас якесь хибне уявлення як працюють з АІ. Це не так що ти скинув малу сторьку, тобі видало 200 рядків коду і ти рев’юваєш і тестуєш.

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

Людина робить фінальну валідацію фічі, тюнить АІ гайди.

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

Коли ви коментуєте код Junior-розробника, людина поступово засвоює контекст. Наступного разу вона зробить краще. За рік вона сама може рев’ювати чужий код.

Всього 1 рік чекати)
І це якщо повезе що людина попадеться норм.

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

Вона не пам’ятає, чому два роки тому відмовилися від певного рішення. Не була на дзвінку, де бізнес пояснив виняток, через який «очевидний» рефакторинг зламає billing.

Люди таке теж не пам’ятають.
В середньому дев працює менше 2ох років в компаніях типу гугла.

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

Звичайна циклічність, от як зараз з RAM пам’яттю, для сіньорів це + бо буде більша ЗП.

Питання виникає, чого іньша контора готова х2 платити а власна ні?

скажу за одну свою минулу компанію — бо вони вміли швидко вчити трейні і перепродавати їх як мідлів-сініорів. Їм вигідніше було з вулиці знайти заміну на 500$(на старті) замість х2 існуючому.

чого іньша контора готова х2 платити а власна ні?

Бо є компанії які беруть на себе ризик найняти джуна з мінімум досвідом.
Більший ризик => має бути більший профіт => ЗП нижча.

Є компанії які джунів не беруть => менше ризику => менший профіт для них => більша ЗП.

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