Pull to refresh
21
Роман@Gromilo

.net разработчик

2
Rating
1
Subscribers
Send message

Если бы мне нужно было допиливать легаси проект, обязательно был взял openspec, чтобы вносить и фиксировать изменения. Но для моих текущих задач даже "схем" недостаточно, т.к. вообще не помогают разработке в условиях неопределённости

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

Золотые слова

Структурный инвариант домена держится типом, и тогда он обязан быть типом (Влашин, illegal states unrepresentable). Граница систем держится схемой и контрактным тестом. Обобщённое намерение держится свойством в property-based тесте.

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

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

Классная статья. Я уже давно (по меркам последнего года, хе-хе) отказался от плана. Т.к. заметил, что всё что агент может превратить в план, он может просто сделать по исходным данным. Хочешь план, а хочешь сразу исходный код.

Отношение к плану сменилось с "инструкции, которые агент должен сделать" на "вот как агент понял задачу". Можно свериться.

Openspec хорош тем, что даёт простой, понятный процесс, но я его друпнул через неделю.

Для моих задач оказался как‑будто слишком плоским, как-будто для чего‑то маленького, что ты можешь полностью загрузить в голову. Очень быстро получил миллион папочек со спеками, которые хз как организовывать и вообще контролировать. Я даже дельты офигел читать, не то что результат мержа.

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

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

ИИшка работает не мгновенно, а чем сложнее и запутаннее, тем больше контекста и дольше работа.

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

У нас количество закрытых задач выросло в 1,5 раза. Это единственный измеряемый эффект. Где-то подросло качество, т.к. ИИ вытаскивает кейсы, которые просмотрели все.

Тест, код, uml - это способ записи модели. А модель то кто должен придумать? Это и есть моделирование.

Прямо сейчас переделываю модель после ИИ, потому с ней банально неудобно работать.

А меня задалбывает процесс исправлений. Решил что проектировать сразу нормально гораздо проще чем переделывать. Хорошо зашли, как ни странно, uml-диаграммы бд (я бэкендер): нейронка их легко правит в тексте, а делаю ревью по визуацлизации.

На хорошей структуре данных и методы писать просто (той же нейронке).

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

Я просто хотел понять на каком объеме упёрлись, кода, функционала?

Чтобы как-то сравнить со своими объёмами

В любом случае я согласен, что ИИ не Акинтор, если ТЗ из одной строчки не стоит удивляться, что всё остальное будет выдумано.

В какой-то момент код получает штамп: «Нечитабелен, дальнейшее расширение невозможно»

Насколько это большой был проект?

Тем не менее, по работе приходится читать множество статей написанных нейронками и к стилю привыкаешь и хорошо видишь какие-то характерные приёмы. Как-будто одного автора читаешь.

Т.е. я не могу "чётко отделить нейрослоп от самостоятельно написанных вещей", но если статья палится, то она палится. Например: Уборщик резервов кадров жил по таймеру в 15 минут. Генерация укладывалась в 16.

И вот вопрос, который меня мучает: где тут мысли автора, а где "фантазии" нейронки, которые автор пропустил, потому что ему пофиг, или потому что решил "вроде похоже на правду"?

Выхлоп GPT я могу и без всякого хабра прочитать.

Признаю, есть очень маленькое количество статей, где автор принёс что-то действительно интересное, а GPT использовал только для оформления, но их очень мало.

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

Поэтому я и спросил: а что теперь является доказательством хорошей инженерной работы? Или она больше не нужна?

он генерит код за пару минут,

Опус 5, который хоть что-то начал понимать тратит минимум 10 минут на новом чате в проекте размером с человеко-год. Чтобы потратить пару минут, нужно либо просить сделать что-то очень локальное, типа конкретной функции (а это нифига не вайбкодинг), либо использовать очень тупые модели.

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

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

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

И как теперь объяснить нужность и ценность хорошей инженерной работы?

Это если есть геттер

С полем протестил клодом, получился доступ по смещению

// string token = Token(secret);
mov   rax, gword ptr [rcx+0x08] ret

// Token(secret) = “Изменено”; 
lea   rcx, bword ptr [rcx+0x08] 
call  CORINFO_HELP_ASSIGN_REF   // write barrier, т.к. поле ссылочное 
nop 
ret

Я так понял в момент первого вызова вычисляется смещение и jit либо генерит доступ к полю, либо генерит метод, бросающий исключение.

Очень быстро. А ещё мы скоро узнаем объём, который можно без боли чисто вайбкодить. Типа как автоматизация в екселе идёт хорошо до определённого предела, дальше боль, страдания и извращения. Сейчас этот предел расшили нейронки.

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

Какие фишки? Чем отличается от безопасного доступа к публичному полю?

1
23 ...

Information

Rating
1,661-st
Location
Челябинск, Челябинская обл., Россия
Registered
Activity

Specialization

Бэкенд разработчик
Старший
C#
.NET
PostgreSQL
Git
Docker
Redis