Темна і світла сторони вайб-кодингу

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

«Вайб-кодинг» у вигляді: «даю команду ШІ, воно щось робить, а я лише перевіряю працює/не працює», вже встиг отримати дещо зіпсовану репутацію — в першу чергу завдяки недосконалим інструментам, які по-гарному ще до такого режиму ще не зовсім готові і потребують нагляду.

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

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

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

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

Для підтвердження цього приведу недавній приклад з власного досвіду. У червні цього року я мав оцінити технічний рівень трьох фуллстек веб-розробників. Всі троє стронг мідли, при чому один з них має найбільше досвіду і мав отримати промоушен до сеньйора. Оцінка проводилася у виключно практичному форматі: кожен отримує однакове завдання — розробка фічі для фуллстек веб проєкту з використанням сторонніх API, і у відведений час під моїм наглядом мають його реалізувати використавши найкращі інженерні практики.

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

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

Цікаво що розробники досить по-різному використовували ШІ: два з трьох використовували IDE з ШІ-автодоповненням коду і зверталися до ChatGPT за допомогою — наймолодший робив це дуже часто, інший дещо рідше, хоча за інструмент не забував. Проте третій використовував IDE без ШІ, писав по-старинці, виключно все сам і в ChatGPT звертався лише в останню чергу, коли більш нічого не допомогало.

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

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

У порівнянні з іншими рухався по завданню дуже повільно, і кульмінацією став пошук проблеми в коді, на яку він витратив хвилин 20-30 без жодного прогресу. В якийсь момент він все-таки звернувся до ChatGPT, але яким же було моїм здивування, коли він навіть запит не зміг зробити нормально — скопіювавши просто повідомлення про помилку без додаткового контексту з самого проєкту, і очікувано що коректної відповіді також не отримав. Довелося показувати команду npx repomix, за допомогою якої весь проєкт чи його частину можна перетворити на промпт. Вирішити проблему з її допомогою вдалося буквально за пару хвилин.

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

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

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

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

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

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

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

З того що я бачив та пробував — ШІ добре підходить для прототипів та невеликих проєктів з нуля (перші стадії стартапів), далі на підтримку та вдосконалення, поки що, принаймні потрібні люди. Також у Cursor, Lovable і подібних великі проблеми з відтворенням готових дизайнів з Figma або з референсів, бо дуже важко добитися схожего UI/UX.

Обратимся к серьезным исследованиям, а не фантазиям:

“Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity”
metr.org/...​experienced-os-dev-study

ключевой вывод для серьезных и больших проектов:

When developers are allowed to use AI tools, they take 19% longer to complete issues—a significant slowdown that goes against developer beliefs and expert forecasts.

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

Угу

Це правда, що Рабіновіч виграв у лотерею мільйон гривень?
— Правда, але не в лотерею, а в преферанс, не мільйон, а десять тисяч, і не виграв, а програв.

Потратив сейчас 2 дня Вы будете знать сервис. И завтра при оценки задачи, поиске проблемы и прочее у Вас в голове будет картина. А после такого 5-ти минутного залета ... посмотрим насколько будет адекватным ваш процесс поиска проблем или оценки введения некого нового функционала.

Я не гадаю. Я оперирую фактами, пример — выше, где знание проекта решает. а гадание — это к AI цыганям

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

Вы называете boilerplate то, чем оно не является. Просто потому, что большая часть работы описанной выше активности — это будет работа с новыми таблицами, переделка запросов и прочее.

Без понимания, что делают старые, связей, объемов данных, характера запросов и нагрузки, почему вообще решено перейти и прочее — отношение к этой задаче как с простому c+c <> c+v приведет к результату «На тебе Боже, что мене негоже»
С соот. результатом для производительности, надежности и прочее.
То есть на выходе будет маловразумительное да еще никто не будет понимать как это ... работает. Нашли чем хвалиться.

Після знайомства з uml пан буде знати як сервіс працює? Гг

На малювання дванадцяти ентітей зі зв’язками, інтерфейсів та репозиторіїв під них я витратив хвилин 5

А можна було взагалі час на цю макакороботу не витрачати

він витратив хвилин 20-30 без жодного прогресу

Так і уявляю собі, стоїть наді мною якийсь галерний долб##б з секундоміром і дивиться скільки часу я гуглю проблему)

Що за байки, напиши простіше — сіньора дропнули бо був дорогий. А клієнт хаває гуано згенерене джунами, тому нащо платити більше

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

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

він витратив хвилин 20-30 без жодного прогресу

Рілі? Таке враження, що стоїть задача максимально нагівнокодити за 1-3 дні.

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

твої навички в минулому,

Накидать первую демку — это 1% работы. А дальше при развитии и сопровождении как раз понадобятся те самые «ненужные» навыки.

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

Можна спорити про світлі і темні сторони, але це вже частина реальності.
Я зараз майже не покидаю ІДЕ в процесі розробки. Раніше почтійно щось треба було гуглити, знаходити на stackoverflow.
Потім появився ChatGPT і замість гуглити я почав залазити в нього з промптами.
А тепер я зацінив чат Github Copilot і майже все вирішую з ним.

А де більше про темну сторону?

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

Навіть якщо він подвине не так чи не туди, у тебе вже буде diff в changes висіти, ти туди заходиш і руками допилюєш

у тебе вже буде diff в changes висіти, ти туди заходиш і руками допилюєш

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

до такой степени оторвались от реальности, что не понимают уже совершенно фундаментальных вещей.

Ну якщо для тебе подвинути кнопочку це фундаментальні речі, тоді не знаю що ще сказати

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

практически всегда чтение кода это намного более трудозатратный процесс, чем его написание.
а в чем же тогда «экономия»?

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

да в том, что бред и галюны системы статистического предугадывания вероятности следующего токена без всякой архитектуры и code review льется сразу на прод.
и что там с производительностью, что там с безопасностью и, главное, кто этот код будет сопровождать через неделю бизнес мало @бет.

Що ще очікувати від дяді, для якого вайбкодинг це чат з чатгпт.

якщо для тебе подвинути кнопочку це фундаментальні речі

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

що ти з ним спочатку бренйштормиш і обговорюєш зміни

gemini текущих версий два двухзначных числа правильно сравнить не может. chat gpt заваливает 20-30% вопросов из серии маленькая вариация кода со stackoverflow/MSDN.
и только в cursor встроены технологии третьего тысячелетия, с которыми можно изменения кода на проекте брейнстормить. угу, верю.

так і запишемо, агенти фігня, бо якась модель кількість r в strawberry не може порахувати

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

чувак який далі чатгпт не пішов

чувак, а chat gpt это лучшее, что есть сегодня в области LLM. а не какие-то там твои мифические разработки.
с агентами он брейнстормит, пилять ))

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

чувак, а chat gpt это лучшее, что есть сегодня в области LLM. а не какие-то там твои

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

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

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

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

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

я би сказав що вайб кодинг це

та блін, відкрий вікі чи що ;)
ти путаєш кодінг з використанням AI з вайб-кодінгом

АІшний код майже завжди приємніше читати ніж сінйора який думає що сінйор

Так так, от такий супер код генерить АІшка якій пофіг що можна імпорт зробити.

 hasDetailsChanged(java.util.List<ApiErrorDetail> originalDetails,  java.util.Set<ApiErrorDetail> filteredDetails)
Твого говнокода? Тоді можливо. АІшний код майже завжди приємніше читати ніж сінйора який думає що сінйор, не говорячи вже про мідловський чи джуновський.

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

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

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

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

Не згоден з цим.
Це швидше як юзати стековерфлоу vs читати документацію в 2010.

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

Тут те саме

свидетели вайб кодинга просят chat gpt нагенерировать для них историй «из личного» опыта о том, как скоро будет одно сплошное телевидение и как бедный синьор на тестовом задании (о ужас!) сам читал документацию по API и поэтому проиграл в этих крысиных бегах ))

поки такий сінйор буде читати документацію по АРІ, сінйор вайб кодер вже пулл реквест буде робити і або візьметься за наступний таск, або своїм чимось займеться

потім, коли КРІ покаже що вайб кодер зробив більше тасків ніж ти, ти будеш (безуспішно) доказувати що його код говно і що ти на зубок знаєш всі ендпойнти АРІ

осталось только понять, на хрена собеседовать людей, когда офисная уборщица может взять это тестовое задание и за 15 минут его навайбкодить

когда офисная уборщица может взять это тестовое задание и за 15 минут его навайбкодить

те що твоє розуміння вайбкодинга не співпадає з іншими — твої проблеми
ти навіть дупля не відстрілюєш що воно таке

сінйор вайб кодер вже пулл реквест

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

візьметься за наступний таск

Там где с помощью грамотного изучения АПИ можно было обойтись 1-м правильным запросом, сделанная так система сделает 100. или 1000.
Кушайте, не обляпайтесь

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

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

Від вайбкодера залежить, якими тулзами користуєшся, як їх налаштував, як оптимізував свій воркфлов, наскільки добре знаєш слабкі і сильні сторони тулзів і ЛЛМок які вони використовують.

Якщо будеш як Alexander Dyachenko з допомогою чатгпт програмити простими промтами і потім копіпастити відповіді в код, то так скоріше всього і буде. Хоча об’єктивно, це треба бути дебілом щоб навіть там облажатися і зафігачити в мастер, неякісний, непрацюючий код ). Такий спеціаліст і без допомоги чатгпт і агентів говна накомітить.

Там где с помощью грамотного изучения АПИ можно было обойтись 1-м правильным запросом, сделанная так система сделает 100. или 1000.

Чому так має статися? Ймовірність такого набагато менше, ніж якщо ти сам пропустиш якийсь ендпойнт і зробиш 100 реквестім замість одного. Та навіть якщо допустити що агент так зробить, це треба бути сліпим щоб ні в згенерованому коді, ні в логах, ні в метриках цього не помітити.

Такий спеціаліст і без допомоги чатгпт і агентів говна накомітить.

Проблема у тому, що люди ліниві. Коли у тебе є ніби-то готове рішення, ти залогаєш 4 години на ревʼю, у якому проблем не знайдено та будеш лайкати котиків. Знову ж таки, якщо ти витратив дві годиини на написання кода, то ти з ним працював, думав про різні варіанти, ...

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

Тому що ти прочитаєш документацію, та плюс-мінус будеш матимеш цілісне бачення про API та його можливості. А коли тобі код згенерує LLM, то часто твоя думка «ну таке в них криве API, нічого не вдієш»

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