기술 부채의 근본 원인: 시기를 놓친 피드백

기술 부채는 마이크로매니징이나 마감 기한뿐만 아니라, 너무 늦게 요청되거나 제공되는 피드백으로 인해 발생한다.

🔗 원문 보기

기술 부채의 근본 원인: 시기를 놓친 피드백

기술 부채는 마이크로매니징이나 마감 기한뿐 아니라, 너무 늦게 요청되거나 제공되는 피드백 때문에 발생한다.

Ruby-News | 루비 AI 뉴스

Почему spec-driven development плохо работает на микросервисах: часть 1. Где теряется контекст

Я работаю в большой продуктовой компании с тысячей микросервисов. В такой системе даже небольшая фича часто проходит через несколько сервисов, событий и внутренних контрактов. Spec-driven development с LLM уже применяется в некоторых командах для планирования и ревью фич, поэтому мне было важно понять, где этот подход помогает, а где начинает ошибаться. Пока задача живёт внутри одного сервиса, всё обычно идёт быстро: спека короткая, описание и реализация помещаются в контекст модели. Но как только фича проходит через несколько сервисов, начинаются проблемы. По отдельности каждый кусок выглядит нормально: разбиение на слои, именование по код стайлу, прохождение тестов и ревью. Но в целом система не работает должным образом. Типичные ошибки: нет идемпотентности, LLM упускает сценарии и edge case-ы, появляются циклические вызовы сервисов. Чем больше делаешь правок, тем больше ошибок она допускает. Для эксперимента я собрал отдельный стенд: Go-проект - платформа для поиска фрилансеров . Внутри 12 микросервисов, связанных через gRPC и брокер сообщений; в этом проекте брокером выступает NATS. Одни сервисы хранят задачи и профили исполнителей, другие подбирают кандидатов, считают расстояния, проверяют портфолио и отправляют уведомления. Проект специально спроектирован с шестью категориями архитектурных ловушек: они проявляются не внутри одного сервиса, а на границах между сервисами. Фича для эксперимента была такой: если выбранный фрилансер отказался от оффера, платформа должна автоматически найти следующего подходящего кандидата, отправить ему новый оффер и уведомить заказчика о переназначении. Claude написал спеку, реализацию и юнит-тесты, но полный сценарий отказа и переназначения не сошёлся. Два независимых ревью нашли одну и ту же группу ошибок: по отдельности сервисы выглядели нормально, а вместе работали не так, как нужно. На это можно ответить, что нужен end-to-end тест на весь сценарий, но это не закрывает проблему целиком. End-to-end тесты есть не везде, их дорого поддерживать, и они не покрывают все развилки: особенно редкие edge case-ы, дубликаты событий, гонки и редкие комбинации условий. Главное же в другом: на этапе spec-driven разработки модель должна помочь собрать требования, ограничения и контекст, а именно там она часто ошибается. Разработчик тоже не всегда заранее знает, где спрятана проблема. Он может помнить про Outbox, дедупликацию уведомлений или особые требования конкретного сервиса к входным данным, но не сформулировать это как ограничение для новой фичи. LLM читает документы по сервисам, задаёт уточняющие вопросы и всё равно может пропустить связь между ними. В итоге спека получается подробной, но неполной: в ней есть локальные изменения по сервисам, зато нет системных инвариантов, которые живут между сервисами. Реализация может быть нормально разложена по слоям, тесты отдельных компонентов проходят, а ошибка обнаруживается уже на уровне сценария или ревью. Где LLM теряет контекст

https://habr.com/ru/articles/1033510/

#claude_code #specdriven_development #microservices #system_design #llm #архитектура #code_review #go #clean_architecture

Почему spec-driven development плохо работает на микросервисах: часть 1. Где теряется контекст

Первая статья из цикла из трёх частей. Часть 1 — где LLM теряет межсервисный контекст и почему локальных спек недостаточно. Часть 2 — archspec: версионируемый архитектурный контракт для сервисов....

Хабр

AI Review не делает код лучше. И вот почему

Я делал AI Review как простой инженерный инструмент. Но реальный фейл оказался не в архитектуре и не в LLM — а в том, чего люди от него ждали.

https://habr.com/ru/articles/979862/

#ai_review #code_review #llm #cicd #chatgpt #claude #gemini #openrouter #gitlab #github

AI Review не делает код лучше. И вот почему

Вступление Эта статья — не про настройку AI Review и не про список его возможностей. И точно не про «AI всё решит». Про это я уже писал раньше. Мне хотелось зафиксировать другое: что происходит, когда...

Хабр

Code Review Horror Stories. Часть 2: API, ошибки и graceful shutdown

Продолжение разбора реального кода с собеседования. В первой части разобрали 8 проблем concurrency и memory: race conditions, утечки горутин, проигнорированный mutex, TOCTOU. Это была первая половина из 21 бага в одном сервисе на 150 строк. Сегодня — вторая часть. Тут нет страшных race conditions, но есть то, что выдаёт уровень разработчика на собесе: отношение к ошибкам, валидация, API design, graceful shutdown, observability . Эти баги не упадут “вдруг” в продакшене — они будут тихо пилить вам костыль за костылём, пока кто-то не сядет переписывать. Актуально для Go 1.26. Напомню итог первой части: из 8 багов про concurrency на интервью нашёл 7, пропустил только TOCTOU race. В этой части из 13 багов пропустил два : package applike с func main() (то, что код не компилируется — банально не посмотрел на объявление пакета) и отсутствие slog (просто не зацепился за log.Println , а зря). Остальные 11 — поймал. Расскажу, какими паттернами в чтении кода я их вылавливал.

https://habr.com/ru/articles/1033634/

#go #golang #code_review #интервью #баги #api #graceful_shutdown #concurrency #go_126

Code Review Horror Stories. Часть 2: API, ошибки и graceful shutdown

Продолжение разбора реального кода с собеседования. В первой части разобрали 8 проблем concurrency и memory: race conditions, утечки горутин, проигнорированный mutex, TOCTOU. Это была первая половина...

Хабр

[Перевод] Claude Code: почему HTML лучше Markdown

Markdown стал стандартным форматом для общения агентов с разработчиком. Простой, портативный, поддерживает базовое форматирование, легко редактируется. Claude даже научился делать ASCII-диаграммы внутри markdown-файлов. Но по мере того, как агенты становятся мощнее, markdown начинает ощущаться тесным. Файл длиннее ста строк уже трудно читать. Хочется нормальных визуализаций, цвета, диаграмм — и возможности легко поделиться результатом. К тому же я всё реже редактирую эти файлы руками. Чаще использую их как спецификации, референсы, брейнсторм-артефакты. Когда правки нужны, их вносит Claude — и тогда одно из главных преимуществ markdown исчезает. Я перешёл на HTML как основной выходной формат. Вот почему. (примеры можно посмотреть здесь: https://thariqs.github.io/html-effectiveness — возвращайтесь читать дальше)

https://habr.com/ru/articles/1033326/

#markdown #HTML #Claude_Code #AIагенты #формат_вывода #интерактивные_документы #SVG #спецификации #code_review #информационная_плотность

The unreasonable effectiveness of HTML — examples

Гефестыч: наш опыт автоматизации Code Review через LLM. «Грабли», решения, код

Привет, Хабр! Меня зовут Данил Чечков, я Team Lead команды High End Meta Backend в «Леста Игры». Мы занимаемся всей web-составляющей «Мира кораблей». В нашем арсенале огромное количество микросервисов, работающих на Python и Go. Мы отвечаем за покупки в meta-валюте, авторизацию, стабильность инвентаря и профиля игрока, клановые сервисы, а также многое-многое другое. Наш основной продукт – высококачественные web-сервисы на стыке интеграции с игрой. И, да, интеграция – часть нашей работы. А ещё мы любим новые технологии и стараемся с ними знакомиться, чтобы оценить, как они могут принести выгоду бизнесу и нам. Одна из таких технологий – LLM

https://habr.com/ru/companies/lesta/articles/1029670/

#llm #pydanticai #openwebui #llamacpp #ollama #rag #code_review #selfhosted #atlassian

Гефестыч: наш опыт автоматизации Code Review через LLM. «Грабли», решения, код

Введение Кто мы? Привет, Хабр! Меня зовут Данил Чечков, я Team Lead команды High End Meta Backend в «Леста Игры». Мы занимаемся всей web-составляющей «Мира кораблей». В нашем арсенале огромное...

Хабр

CodeClone 2.0: структурное ревью Python-кода для CI, IDE и AI-агентов

Когда я начинал CodeClone, это был довольно понятный инструмент: найти структурные клоны в Python-коде и не дать им незаметно расползаться по проекту. Сейчас вышел CodeClone 2.0.0, и это уже другой продукт. Не “ещё один линтер”, не попытка заменить Ruff, mypy, pytest, Bandit или Semgrep, а отдельный слой ревью: он смотрит на структуру Python-кода, отделяет старый технический долг от новых регрессий, связывает находки с покрытием тестами и дает одну и ту же картину в CLI, HTML-отчете, GitHub Actions, VS Code, Claude Desktop, Codex и через MCP. Эта статья не про список флагов CLI. Про флаги есть документация. Здесь я хочу рассказать, во что CodeClone вырос как продукт и зачем вообще нужен такой класс инструмента сейчас, когда разработка всё заметнее смещается в сторону AI-агентов.

https://habr.com/ru/articles/1031124/

#python #code_review #code_review_ai #quality_gates #ai_agents #static_analysis #test_coverage

CodeClone 2.0: структурное ревью Python-кода для CI, IDE и AI-агентов

Когда я начинал CodeClone, это был довольно понятный инструмент: найти структурные клоны в Python-коде и не дать им незаметно расползаться по проекту. Сейчас вышел CodeClone 2.0.0, и это уже другой...

Хабр

Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”. Разберём по косточкам реальный код с собеседования — микросервис трекинга рекламных кликов. Багов набралось 21, поэтому делю на две части. Первая — про самое страшное: concurrency, гонки, утечки памяти и горутин. Это то, что роняет сервис в проде. Часть 2 — про API design, ошибки и graceful shutdown — выйдет следом. Актуально для Go 1.26. Из 21 бага на собесе я нашёл 18. Три самых тонких пропустил — потом, дома, перечитал спокойно и выписал. В этой части про concurrency пропустил один — TOCTOU race в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

https://habr.com/ru/articles/1031010/

#go #golang #code_review #собеседование #конкурентность #goroutine #race_condition

Code Review Horror Stories. Часть 1: Concurrency & Memory в Go-сервисе

Продолжение прошлой статьи про ошибки на Go-собесах . В тот раз — про лайв-кодинг. Теперь — про code review: когда дают готовый сервис на ~150 строк и говорят “найди что не так, у тебя 30 минут”....

Хабр

Когда pull request выглядит нормальным, но ревью на нём всё равно зависает

В AI-first разработке в продукт прилетает всё больше pull request от людей с разной глубиной контекста. Формально такие PR могут выглядеть нормально, но ревью всё чаще упирается не в синтаксис, а в попытку понять, что именно этот набор изменений делает с системой. В статье - почему обычного ревью уже не всегда хватает и как из этой проблемы вырос PRShield: рабочий MVP слоя, который помогает принимать решение перед мержем.

https://habr.com/ru/articles/1030810/

#code_review #pull_request #ревью_кода #AppSec #DevSecOps #AI_code_review #GitHub #LLM #безопасная_разработка #анализ_кода

Когда pull request выглядит нормальным, но ревью на нём всё равно зависает

Поводом для этого проекта был не абстрактный интерес к AI и не желание сделать ещё один инструмент для ревью. На одном из рабочих проектов довольно быстро стало видно, что на pull request уже нельзя...

Хабр

PR 리뷰 시 의견 제시와 승인을 동시에 처리하는 효율적인 워크플로우

사소한 수정 사항이나 제안, 질문만 있는 경우 PR을 승인하면서 동시에 의견을 남기는 방식을 기본 원칙으로 제안한다.

🔗 원문 보기