<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[aidevlog.ua]]></title><description><![CDATA[aidevlog.ua]]></description><link>https://ua.aidevlog.me</link><generator>RSS for Node</generator><lastBuildDate>Thu, 14 May 2026 21:29:58 GMT</lastBuildDate><atom:link href="https://ua.aidevlog.me/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[GitHub — Spec Kit. Поки ми шукаємо стежки, основні гравці змінюють ландшафт]]></title><description><![CDATA[Близько тижня моя стрічка в YouTube забита черговою новинкою від GitHub — Spec Kit.
Пропонується приваблива ідея: від концепції «найкраща документація проєкту — це якісний, грамотно написаний код» перейти до практики «найкращий код — це повноцінна сп...]]></description><link>https://ua.aidevlog.me/github-spec-kit-poki-mi-shukayemo-stezhki-osnovni-gravci-zminyuyut-landshaft</link><guid isPermaLink="true">https://ua.aidevlog.me/github-spec-kit-poki-mi-shukayemo-stezhki-osnovni-gravci-zminyuyut-landshaft</guid><category><![CDATA[GitHub]]></category><category><![CDATA[specs]]></category><category><![CDATA[llm]]></category><category><![CDATA[#agent]]></category><category><![CDATA[agentic AI]]></category><category><![CDATA[prd]]></category><category><![CDATA[prd document ]]></category><dc:creator><![CDATA[Oleksandr Arkhypov]]></dc:creator><pubDate>Tue, 30 Sep 2025 21:02:46 GMT</pubDate><content:encoded><![CDATA[<p>Близько тижня моя стрічка в YouTube забита черговою новинкою від GitHub — <strong>Spec Kit</strong>.</p>
<p>Пропонується приваблива ідея: від концепції «найкраща документація проєкту — це якісний, грамотно написаний код» перейти до практики «найкращий код — це повноцінна специфікація».</p>
<p>Передбачається, що на вхід подається, загалом-то, неформальне завдання, що описує, що має робити програма, навіщо вона потрібна і як її планують використовувати. Далі вмикається магія ШІ, і під управлінням людини виходять два артефакти: файл із планом реалізації та другий, детальний, з невеликими атомарними завданнями. За цими завданнями ШІ-агент без проблем згенерує повноцінний робочий код.</p>
<p>Це досягається завдяки поступовому накладанню обмежень та уточненню вимог через діалог із розробником. Як бонус ми маємо повноцінний комплект документації, що однозначно відповідає коду. Код = F(spec).</p>
<p>Далі, при зміні вимог, ми міняємо кілька пунктів у специфікації й отримуємо нову версію програми з необхідною поведінкою.</p>
<p>Цікавими є коментарі: від захоплених до радикально-скептичних. Ось один із них:</p>
<blockquote>
<p>«Невже замовнику тепер доведеться писати ті самі повні специфікації, про які розробники благали роками? Невже це кінець епохи „зробіть, а там розберемося“? Невже доведеться працювати правильно?»</p>
</blockquote>
<p>Звідки стільки скепсису? Що ж може піти не так?</p>
<p>Так уже сталося, що мені вдалося «винайти» схожу методологію на кілька місяців раніше. На етапі впровадження я зіткнувся з такими проблемами.</p>
<p><strong>По-перше,</strong> розробник не навчений створювати специфікацію, його робота — чітко її дотримуватися. Через це її валідація була фактично відсутня.</p>
<p><strong>По-друге,</strong> спроба провести верифікацію новостворенного "Плану” показала, що перевірити специфікацію складніше, ніж згенерований код. Я припускаю, що проблема є комплексною. Код простіше токенізувати, розбити на семантичні конструкції, він формалізований і звичний для розробника. Його недоліки очевидні, а для верифікації коду існує звичний інструментарій, що формувався десятиліттями. Специфікація в цьому сильно програє: навіть md-форматування виглядає суцильним текстом порівняно програмним кодом. Додає проблем той факт що один і той самий промпт буде реалізований по-різному різними LLM.</p>
<p>Гадаю, зараз ентузіасти використання ШІ для розробки перебувають у тій самій ситуації, що й перші програмісти епохи перфокарт. Недарма більшість інструментів нагадують консольні застосунки часів PDP-11.</p>
<p><strong>Далі — гірше.</strong> Імовірність правильного розв'язання задачі для найкращих моделей коливається в межах 50% (можете самостійно вивчити <a target="_blank" href="https://g.co/gemini/share/1efef0feb74f">цей звіт</a>). Наявне завдання проходить кілька етапів, результатом кожного з яких є полотно погано структурованого тексту. Помилки та галюцинації не блокувалися, а перетікали на наступний рівень і змішувалися з новими. Таким чином, для триетапного процесу загальна ймовірність успіху падає до 12,5% (0.5 × 0.5 × 0.5).</p>
<p>Це означає, що в 9 з 10 випадків специфікація міститиме проблему. Щоб виправити ситуацію з пропущеними даними, ми додали в промпт метрику покриття вимог із попереднього рівня. Це допомогло зрушити процес з мертвої точки, але потім виникла нова складність. Помилка в специфікації, виявлена на етапі генерації коду або налагодження, вимагала зупинки та повернення всього процесу до попереднього етапу. Найчастіше цим не обмежувалося, і все поверталося на самий початок. Увесь цей цикл створював враження незграбного зомбі.</p>
<p>У підсумку виявилося, що в моєму випадку простіше й надійніше передавати розробнику вимоги у вигляді класичного PRD-файла. В якості агента використовується розширення RooCode для VS Code. Короткий цикл підключає до процесу розробника, а всі доопрацювання відображаються безпосередньо у змінах PRD-файла.</p>
<p>Однак це не означає, що Spec Kit має всі ті самі проблеми. Думаю, я протестую його на одній з найближчих ітерацій і поділюся враженнями.</p>
]]></content:encoded></item><item><title><![CDATA[Не можеш щось зупинити — очолуй це.]]></title><description><![CDATA[Світ розробки програмного забезпечення живе циклами гайпу. Кожні кілька років з'являється «наступна велика річ», що обіцяє назавжди змінити наші підходи до роботи. Зазвичай, реальність виявляється скромнішою, і після гучних заголовків залишається лиш...]]></description><link>https://ua.aidevlog.me/ne-mozhesh-shos-zupiniti-ocholuj-ce</link><guid isPermaLink="true">https://ua.aidevlog.me/ne-mozhesh-shos-zupiniti-ocholuj-ce</guid><category><![CDATA[intention]]></category><category><![CDATA[chatgpt]]></category><category><![CDATA[AI]]></category><category><![CDATA[llm]]></category><category><![CDATA[vibe coding]]></category><dc:creator><![CDATA[Oleksandr Arkhypov]]></dc:creator><pubDate>Sat, 27 Sep 2025 21:00:00 GMT</pubDate><content:encoded><![CDATA[<p>Світ розробки програмного забезпечення живе циклами гайпу. Кожні кілька років з'являється «наступна велика річ», що обіцяє назавжди змінити наші підходи до роботи. Зазвичай, реальність виявляється скромнішою, і після гучних заголовків залишається лише ще один інструмент у нашому арсеналі.</p>
<p>Саме так я спершу сприймав і генеративний ШІ. Для мене, як для керівника .NET-команди, це був радше <strong>сирий, непередбачуваний інструмент</strong>, аніж надійний помічник. Я свідомо уникав його впровадження, вважаючи, що час для цього ще не настав, а потенційні проблеми з якістю коду переважують будь-які миттєві вигоди.</p>
<p><strong>Перший дзвіночок: блукаючі шаблонні рішення</strong></p>
<p>Першим таким дзвіночком став процес рев'ю тестових завдань кандидатів. З певного моменту в них почали з'являтися дивні фрагменти. Цікаво було те, що ці шаблонні рішення кочували з одного завдання в інше, але ніколи не траплялися повним набором — завжди частинами. Стало очевидно, що кандидати систематично застосовують ШІ для генерації коду. Скажемо так, з досить сумнівним результатом.</p>
<p>Я не бачу в цьому нічого страшного, адже завжди можна під час живого спілкування з'ясувати хід думок і мотивацію людини. Проблема в іншому: кандидати, що покладалися на ШІ, практично ніколи не могли пояснити причину того чи іншого рішення. Гірше те, що в них не вистачило кмітливості попросити той самий ШІ перевірити завдання. Тобто, гіпотеза підтверджується: це був <strong>«чіт» проти системи відбіру, а не системний інструмент</strong>.</p>
<p><strong>Новий «колега» в команді</strong></p>
<p>Наступним поштовхом стало спілкування з моїми ж розробниками. Час від часу під час код-рев'ю я почав помічати дивні, нетипові для їхнього стилю фрагменти коду. Це були не зовсім помилки, а радше нелогічні, надлишкові конструкції, що не відповідали загальному стилю проєкту.</p>
<p>На риторичне запитання: «Ну і навіщо ти це написав?» — я отримав досить самоіронічну відповідь: — <strong>От не знаю, ChatGPT поплутав...</strong></p>
<p>Стало зрозуміло, що в команді з'явився новий «розробник» із <strong>високим рівнем авторитету</strong>, який не підпорядковується загальним вимогам. Такий собі містер всезнайко. Ігнорувати його появу було щонайменше нерозумно.</p>
<p><strong>Зіткнення з «вайб-кодингом»</strong></p>
<p>Поки ми примірялися: використовувати чи не використовувати, а якщо так — то як, наші колеги вже діяли. Аналітики, DevOps-інженери тощо вже почали вирішувати свої нагальні завдання за допомогою ChatGPT.</p>
<p>Можливо ці застосунки і були тим самим класичним прикладом «вайб-кодингу». З технічного погляду, дійсно не найкращий приклад для наслідування. Але, попри загальне негативне ставлення з боку спільноти, персонально я не бачу в цьому тільки погане. Як прагматик, я розумію: краще така часткова автоматизація, аніж жодної. <strong>Будемо вважати</strong>, що це дійсно дає можливість швидко протестувати бізнес-ідеї та зняти рутинне навантаження.</p>
<p>Все це чудово, поки вам не запропонують взяти такий продукт на баланс, щоб підтримувати й розвивати. У такий код практично неможливо внести контрольовані зміни, і здається що його простіше переписати з нуля. <strong>Так створюється новий клас одноразових застосунків</strong>. І як з’ясувалося, <strong>це тренд, який нам зараз продають через обгортку у вигляді Specs Driven Development</strong>. І доведеться скуштувати чергову серебряну кулю, яка всіх нас залишіть без діла :)</p>
<p><strong>Висновок</strong></p>
<p>У якийсь момент прийшло розуміння: скриньку Пандори відкрито, і цей процес вже не зупинити. Найкращим способом адаптації завжди був принцип: <strong>не можеш щось зупинити — очоль це.</strong></p>
<p><strong>Наостанок — кілька слів про мене</strong>, щоб ви вирішили, чи варто витрачати час на мої дописи.</p>
<p>Я не можу похвалитися роботою у FAANG, проте більшу частину свого життя я працював на невеликі компанії або створював щось для себе. Кілька років тому я почав розвивати напрям навчання нейромереж, коли це ще не було мейнстримом. Це починалося як невеликий R&amp;D-відділ, і своїм головним досягненням я вважаю те, що цей відділ перетворився на повноцінну компанію.</p>
<p>Мені вдалося не просто передати свій код та інфраструктуру новим співробітникам, а й організувати їхню роботу в рамках нової структури. Гадаю, багатьом відомий страх перед ключовим розробником, без якого все зупиниться. <strong>Я радий, що позбувся цього тягаря, і зараз починаю новий етап.</strong></p>
<p>У планах — публікувати суміш ретроспективних дописів (щоб можна було поностальгувати) та матеріалів про актуальні експерименти.</p>
]]></content:encoded></item></channel></rss>