Створюємо продукт на Java з нуля у Windsurf. Три тижні замість трьох місяців

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

На DOU вже є статті про автоматизоване написання коду, наприклад:

Але всі вони про недостатньо масштабне використання AI-агентів, та й самі агенти там інші. Також ще ніхто не ділився тут досвідом використання Windsurf, особливо для Java. І, мабуть, є ті, хто не знає, що IntelliJ IDEA повноцінно підтримує його у вигляді плагіна. Це докорінно змінило моє ставлення до Windsurf, адже їхня оригінальна IDE на базі Visual Studio мені, м’яко кажучи, не зайшла для нормального Java-проєкту рівня Enterprise.

Початок

На старті в мене була лише ідея проєкту: для кого він буде створений і що вмітиме робити. Почав я з проєктування інтерфейсу. У цьому мені допомогла Figma зі своєю функцією генерації сторінок за допомогою ШІ-агента на основі запиту (надалі такі запити до ШІ-агентів я називатиму промптами), де я описав, як має виглядати сторінка та які блоки на ній будуть.

Для першого промпта я склав детальний опис функціоналу проєкту. Потім попросив Windsurf порекомендувати сучасний технологічний стек на Java для мого проєкту, передавши йому опис.

У результаті він підібрав досить доречні технології: Java 17, Spring (Boot, JPA, MVC, Security), Lombok, Thymeleaf, FlywayDB, PostgreSQL, Maven, і створив заготовку під проєкт з усіма Maven-залежностями та директоріями.

Варто згадати, що у Windsurf є два режими: Inline (коли він пише код лише в одному файлі) і Cascade — основний для нас, саме його я й використовував.

Зображення інтерфейсу з Figma я завантажив у Windsurf і попросив зверстати. Для початку, оскільки я не був упевнений, як він працює з відносно новими технологіями, попросив зробити це на старенькому Bootstrap.

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

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

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

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

Одразу скажу: щоб у результаті роботи агента виходив якісний робочий код, потрібні кілька речей:

  • навчитися з ним спілкуватися — складати промпти та виробити власний стиль комунікації;
  • задати rules (правила в налаштуваннях), яких він дотримуватиметься за певних умов;
  • ну і, мабуть, самому бути не нижче рівня Middle+.

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

Результати

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

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

Окремо варто згадати, як ми всього за один день переписали весь фронтенд готового проєкту на Tailwind, DisplayUI, Alpine.js, з якими я взагалі не був знайомий. Я просто попросив його це зробити (кілька промптів), і він коректно переписав приблизно 80% верстки та JS. Решту чомусь пропустив, але я швидко скоригував.

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

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

Що вміє продукт у підсумку:

  • Використовуючи OpenAI API, виходить в інтернет і витягує будь-який курс із Coursera.
  • Створює наочну навігацію по курсу.
  • Веде чат із користувачем як професійний учитель, експерт (знову ж таки використовуючи модель GPT-5).
  • Спілкується більш ніж 50 мовами.
  • Пам’ятає й знає все про сам курс, релевантно веде учня по матеріалу.
  • Зберігає всю історію бесід кожного уроку та вміє повертатися до неї, пам’ятаючи контекст.
  • Підтримує підсвічування Markdown і будь-якого коду.
  • Приймає оплату за преміум-пакет у криптовалюті.

І так, приємним бонусом я додав з десяток тем сайту — як із темною, так і зі світлою палітрою.
Протестувати й подивитися можна тут — ChatCourseAI.

Що я ще зробив за ці три тижні, окрім коду, використовуючи знання GPT:

  • Налаштував AWS EC2 інстанс і розгорнув на ньому Nginx, PostgreSQL та саме застосунок.
  • Реалізував деплой і рестарт на EC2 прямо з IDE однією кнопкою.
  • Підключив AWS Watch, щоб у браузері бачити всі логи й отримувати сповіщення про помилки.
  • Було багато мороки з доменом і SSL-сертифікатами.
  • Займався маркетинговими речами: додаванням у пошуковики, Google Analytics, створенням соцмереж, дослідженням конкурентів, Product Hunt.

З технічного планую ще: зробити докеризацію — збирати застосунок у Docker-контейнер і при push у репозиторій запускати GitHub Actions.

Підсумки

Спробувати Windsurf можна безплатно — вам дають 100 токенів. Це приблизно 50–200 звернень до ШІ, залежно від моделі, яку ви будете використовувати.

За три тижні безперервної роботи, працюючи над кодом по 10–15 годин на день, я витратив 100 безкоштовних токенів та 500 платних із підписки за $15.

Скріншот з мого акаунту, де видно заповітні 99%:

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

Враження такі — це кайф. Сидиш, думаєш як архітектор і продукт-менеджер, ставиш завдання, йдеш курити, повертаєшся і радієш результату.

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

Мій рівень як розробника можна подивитися в LinkedIn.

Коментуйте: а який у вас досвід із Windsurf або подібними ШІ-агентами? Якщо не пробували — збираєтесь спробувати? Ставте ваші запитання.

P.S. Для тих, хто любить читати англійською — версія на Dev_to.

👍ПодобаєтьсяСподобалось6
До обраногоВ обраному2
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
Три тижні замість трьох місяців

Це субʼєктивна оцінка, звідки взялося три місяці, коли автор цього не пробував?

Особливо я для себе використовую Claude Code. З простими сприптами добре, ще вона гарна гумова качечка з функцією знаходити друкарські помилки.

ChatGPT-5 враження скоріше негативні, дуже надмірний мудак, який має наглість вказувати мені як треба. Якось задав просте питання, він почав нести ахінею, замість того щоб вирішити питання за пʼять хвилин, декілька годин доводив йому до він дебіл. Ширвжиток як на мене.

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

Кожен розробник рівня middle+ володіє такою навичкою як «естімація» — оцінка майбутнього часу на розробку функціоналу. Будь який розробник може дати оцінку скільки йому потрібно часу на будь який функціонал в межах його робочого домену. Авжеж це його власна оцінка і вона завжди буде субʼєктивною. Так і зʼявилась оцінка у три місяця.

Угу, роботи на чотири місяці, в контракті написали рік, але скоріше ніж за три не впораємося. Так, кожен middle+ може сказати термін виконання. Але це дуже часто маніпуляція.

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

Як варіант: можна зідрати все з курсу курсери і зкормити Notebook LM, буде схожий результат.

А якщо порівнювати для задач написання коду Coursor, Windsurf та ChatGPT що б ви вибрали?

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

Не дуже зрозуміло, який зміст у вашому навчальному проєкті?
app.chatcourseai.com

Підкажіть будь ласка, в чому його перевага.

Є курс на Курсера, і є ваш проект.
В чому зміст вашого?
Для чому мені обирати його а не Курсеру?

Дуже гарне питання. Проект це доповнення до Курсери. Мета проєкту дати можливість за допомогою ШІ розширити та поглибити навчання. Опцію розібрати, що не було ясно з курсу. Ви можете задати будь яке запитання щодо теми і подивіться як вам допоможе ШІ.
Але ультимативної переваги проект не має.
Зараз це більше MVP, цінність якого ще визначається.

Зрозумів, дякую.

А навіщо курсера, якщо є chat gpt?

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