home.social

#code_review — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #code_review, aggregated by home.social.

  1. После ИИ писать код руками ощущается уже не как норма

    TL;DR: ИИ не заменяет инженерный контроль, но меняет базовую планку разработки. С ним проще удерживать скоуп, тесты, техническое качество и в режиме дедлайна. Главный риск - потерять ownership, поэтому уровень автономности должен зависеть от проекта, стадии и зрелости инженерного процесса. У меня есть один личный проект , где я полностью автоматизировал разработку и перестал читать код. Всё идёт практически без моего участия: я просто описываю в телеграмме своему боту что нужно сделать, что я хочу получить, а он выполняет, проверяет в цикле, коммитит, деплоит и сам проверяет логи. Единственное, заниматься своим проектом времени мало, потому движение всё равно медленное и хоть бот может сам брать тикеты из гитхаба и выполнять их, я всё же не разрешаю ему пушить код - хочу всё же в конце понимать что он сделал. Но проект я изначально писал сам, и только потом начал изучать как сделать работу автономной. Всё работает настолько хорошо, что я даже задумался: а не запустить ли новый проект вообще без моего участия? Описать только PRD, проверить сгенерированную документацию и список задач, а на выходе просто принимать готовые фичи. Я даже пробовал запускать так несколько личных проектов (один из них - простенькая игра): формировал всю документацию через ИИ, но на определенных этапах допускал ошибки в планировании и в итоге терял контроль.

    habr.com/ru/articles/1039836/

    #ИИ #разработка #программирование #AI_coding #code_review #тестирование #productivity #ownership #разработка_ПО #инженерный_контроль

  2. После ИИ писать код руками ощущается уже не как норма

    TL;DR: ИИ не заменяет инженерный контроль, но меняет базовую планку разработки. С ним проще удерживать скоуп, тесты, техническое качество и в режиме дедлайна. Главный риск - потерять ownership, поэтому уровень автономности должен зависеть от проекта, стадии и зрелости инженерного процесса. У меня есть один личный проект , где я полностью автоматизировал разработку и перестал читать код. Всё идёт практически без моего участия: я просто описываю в телеграмме своему боту что нужно сделать, что я хочу получить, а он выполняет, проверяет в цикле, коммитит, деплоит и сам проверяет логи. Единственное, заниматься своим проектом времени мало, потому движение всё равно медленное и хоть бот может сам брать тикеты из гитхаба и выполнять их, я всё же не разрешаю ему пушить код - хочу всё же в конце понимать что он сделал. Но проект я изначально писал сам, и только потом начал изучать как сделать работу автономной. Всё работает настолько хорошо, что я даже задумался: а не запустить ли новый проект вообще без моего участия? Описать только PRD, проверить сгенерированную документацию и список задач, а на выходе просто принимать готовые фичи. Я даже пробовал запускать так несколько личных проектов (один из них - простенькая игра): формировал всю документацию через ИИ, но на определенных этапах допускал ошибки в планировании и в итоге терял контроль.

    habr.com/ru/articles/1039836/

    #ИИ #разработка #программирование #AI_coding #code_review #тестирование #productivity #ownership #разработка_ПО #инженерный_контроль

  3. После ИИ писать код руками ощущается уже не как норма

    TL;DR: ИИ не заменяет инженерный контроль, но меняет базовую планку разработки. С ним проще удерживать скоуп, тесты, техническое качество и в режиме дедлайна. Главный риск - потерять ownership, поэтому уровень автономности должен зависеть от проекта, стадии и зрелости инженерного процесса. У меня есть один личный проект , где я полностью автоматизировал разработку и перестал читать код. Всё идёт практически без моего участия: я просто описываю в телеграмме своему боту что нужно сделать, что я хочу получить, а он выполняет, проверяет в цикле, коммитит, деплоит и сам проверяет логи. Единственное, заниматься своим проектом времени мало, потому движение всё равно медленное и хоть бот может сам брать тикеты из гитхаба и выполнять их, я всё же не разрешаю ему пушить код - хочу всё же в конце понимать что он сделал. Но проект я изначально писал сам, и только потом начал изучать как сделать работу автономной. Всё работает настолько хорошо, что я даже задумался: а не запустить ли новый проект вообще без моего участия? Описать только PRD, проверить сгенерированную документацию и список задач, а на выходе просто принимать готовые фичи. Я даже пробовал запускать так несколько личных проектов (один из них - простенькая игра): формировал всю документацию через ИИ, но на определенных этапах допускал ошибки в планировании и в итоге терял контроль.

    habr.com/ru/articles/1039836/

    #ИИ #разработка #программирование #AI_coding #code_review #тестирование #productivity #ownership #разработка_ПО #инженерный_контроль

  4. После ИИ писать код руками ощущается уже не как норма

    TL;DR: ИИ не заменяет инженерный контроль, но меняет базовую планку разработки. С ним проще удерживать скоуп, тесты, техническое качество и в режиме дедлайна. Главный риск - потерять ownership, поэтому уровень автономности должен зависеть от проекта, стадии и зрелости инженерного процесса. У меня есть один личный проект , где я полностью автоматизировал разработку и перестал читать код. Всё идёт практически без моего участия: я просто описываю в телеграмме своему боту что нужно сделать, что я хочу получить, а он выполняет, проверяет в цикле, коммитит, деплоит и сам проверяет логи. Единственное, заниматься своим проектом времени мало, потому движение всё равно медленное и хоть бот может сам брать тикеты из гитхаба и выполнять их, я всё же не разрешаю ему пушить код - хочу всё же в конце понимать что он сделал. Но проект я изначально писал сам, и только потом начал изучать как сделать работу автономной. Всё работает настолько хорошо, что я даже задумался: а не запустить ли новый проект вообще без моего участия? Описать только PRD, проверить сгенерированную документацию и список задач, а на выходе просто принимать готовые фичи. Я даже пробовал запускать так несколько личных проектов (один из них - простенькая игра): формировал всю документацию через ИИ, но на определенных этапах допускал ошибки в планировании и в итоге терял контроль.

    habr.com/ru/articles/1039836/

    #ИИ #разработка #программирование #AI_coding #code_review #тестирование #productivity #ownership #разработка_ПО #инженерный_контроль

  5. AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять

    Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотеки react-native-tdlib и довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали. Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR. Решение оказалось довольно простым — AGENTS.md . Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.

    habr.com/ru/articles/1038786/

    #AGENTSmd #AIагенты #open_source #pull_request #спам #React_Native #GitHub_Actions #code_review #мейнтейнер #Claude_Code

  6. AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять

    Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотеки react-native-tdlib и довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали. Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR. Решение оказалось довольно простым — AGENTS.md . Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.

    habr.com/ru/articles/1038786/

    #AGENTSmd #AIагенты #open_source #pull_request #спам #React_Native #GitHub_Actions #code_review #мейнтейнер #Claude_Code

  7. AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять

    Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотеки react-native-tdlib и довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали. Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR. Решение оказалось довольно простым — AGENTS.md . Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.

    habr.com/ru/articles/1038786/

    #AGENTSmd #AIагенты #open_source #pull_request #спам #React_Native #GitHub_Actions #code_review #мейнтейнер #Claude_Code

  8. AGENTS.md создавали, чтобы помогать агентам. Я использую его, чтобы их вычислять

    Вместе с растущей AI-индустрией приходят и её побочки. Я мейнтейнер библиотеки react-native-tdlib и довольно быстро заметил: все больше PR выглядят как чистый вывод агента. Сначала я честно реагировал — писал в каждый такой PR вопросы: тестировали ли вы это, что именно меняет ваш код, зачем вот эта строчка. В какой-то момент понял, что трачу время на переписку с людьми, которые сами не знают, что написали. Первая мысль была — написать большой README или CONTRIBUTING и прямым текстом сказать: «сгенерированный код не принимаю». Но тут же упёрся в вопрос: а как доказать, что код сгенерирован? Аргумент «чую, тут пахнет Claude Code» — так себе позиция для публичного спора в комментариях к PR. Решение оказалось довольно простым — AGENTS.md . Он конечно не доказывает, что PR сгенерирован, но отлично ловит самые очевидные автоматические PR, где автор, кажется, вообще не участвовал в процессе.

    habr.com/ru/articles/1038786/

    #AGENTSmd #AIагенты #open_source #pull_request #спам #React_Native #GitHub_Actions #code_review #мейнтейнер #Claude_Code

  9. Ошибка найма «рок‑звезды» — как один супер‑инженер разрушил команду за полгода

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

    habr.com/ru/companies/otus/art

    #найм_разработчиков #рокзвезда #тимлид #управление_командой #токсичный_сотрудник #code_review #bus_factor #онбординг #психологическая_безопасность #инженерная_культура

  10. Ошибка найма «рок‑звезды» — как один супер‑инженер разрушил команду за полгода

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

    habr.com/ru/companies/otus/art

    #найм_разработчиков #рокзвезда #тимлид #управление_командой #токсичный_сотрудник #code_review #bus_factor #онбординг #психологическая_безопасность #инженерная_культура

  11. Ошибка найма «рок‑звезды» — как один супер‑инженер разрушил команду за полгода

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

    habr.com/ru/companies/otus/art

    #найм_разработчиков #рокзвезда #тимлид #управление_командой #токсичный_сотрудник #code_review #bus_factor #онбординг #психологическая_безопасность #инженерная_культура

  12. Ошибка найма «рок‑звезды» — как один супер‑инженер разрушил команду за полгода

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

    habr.com/ru/companies/otus/art

    #найм_разработчиков #рокзвезда #тимлид #управление_командой #токсичный_сотрудник #code_review #bus_factor #онбординг #психологическая_безопасность #инженерная_культура

  13. ИИ-агент сам создал тикет, сам же его взял, и сам закрыл. Менеджер ничего не заметил

    Автономные агенты в разработке уже встроены в CI/CD живых команд, закрывают реальные тикеты и пишут код, который идёт в прод. Проблема не в том, что они это делают плохо, а в том, что метрики при этом выглядят слишком отлично. Разобрали, как агенты проходят каждый этап SDLC, что именно идёт не так на каждом из них и почему зелёный дашборд стал наименее надёжным источником правды о состоянии команды.

    habr.com/ru/companies/simpleon

    #ииагенты #SDLC #автоматизация_разработки #управление_командой #Agile #тимлид #Devin #claude_code #github #code_review

  14. ИИ-агент сам создал тикет, сам же его взял, и сам закрыл. Менеджер ничего не заметил

    Автономные агенты в разработке уже встроены в CI/CD живых команд, закрывают реальные тикеты и пишут код, который идёт в прод. Проблема не в том, что они это делают плохо, а в том, что метрики при этом выглядят слишком отлично. Разобрали, как агенты проходят каждый этап SDLC, что именно идёт не так на каждом из них и почему зелёный дашборд стал наименее надёжным источником правды о состоянии команды.

    habr.com/ru/companies/simpleon

    #ииагенты #SDLC #автоматизация_разработки #управление_командой #Agile #тимлид #Devin #claude_code #github #code_review

  15. ИИ-агент сам создал тикет, сам же его взял, и сам закрыл. Менеджер ничего не заметил

    Автономные агенты в разработке уже встроены в CI/CD живых команд, закрывают реальные тикеты и пишут код, который идёт в прод. Проблема не в том, что они это делают плохо, а в том, что метрики при этом выглядят слишком отлично. Разобрали, как агенты проходят каждый этап SDLC, что именно идёт не так на каждом из них и почему зелёный дашборд стал наименее надёжным источником правды о состоянии команды.

    habr.com/ru/companies/simpleon

    #ииагенты #SDLC #автоматизация_разработки #управление_командой #Agile #тимлид #Devin #claude_code #github #code_review

  16. ИИ-агент сам создал тикет, сам же его взял, и сам закрыл. Менеджер ничего не заметил

    Автономные агенты в разработке уже встроены в CI/CD живых команд, закрывают реальные тикеты и пишут код, который идёт в прод. Проблема не в том, что они это делают плохо, а в том, что метрики при этом выглядят слишком отлично. Разобрали, как агенты проходят каждый этап SDLC, что именно идёт не так на каждом из них и почему зелёный дашборд стал наименее надёжным источником правды о состоянии команды.

    habr.com/ru/companies/simpleon

    #ииагенты #SDLC #автоматизация_разработки #управление_командой #Agile #тимлид #Devin #claude_code #github #code_review

  17. Джуны теперь пишут лучше, чем понимают. Что с этим делать

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

    habr.com/ru/companies/simpleon

    #джуны #найм_разработчиков #онбординг #code_review #ИИ_в_разработке #инженерная_культура #SDLC

  18. Джуны теперь пишут лучше, чем понимают. Что с этим делать

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

    habr.com/ru/companies/simpleon

    #джуны #найм_разработчиков #онбординг #code_review #ИИ_в_разработке #инженерная_культура #SDLC

  19. Джуны теперь пишут лучше, чем понимают. Что с этим делать

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

    habr.com/ru/companies/simpleon

    #джуны #найм_разработчиков #онбординг #code_review #ИИ_в_разработке #инженерная_культура #SDLC

  20. Джуны теперь пишут лучше, чем понимают. Что с этим делать

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

    habr.com/ru/companies/simpleon

    #джуны #найм_разработчиков #онбординг #code_review #ИИ_в_разработке #инженерная_культура #SDLC

  21. Почему 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 теряет контекст

    habr.com/ru/articles/1033510/

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

  22. Почему 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 теряет контекст

    habr.com/ru/articles/1033510/

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

  23. Почему 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 теряет контекст

    habr.com/ru/articles/1033510/

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

  24. Почему 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 теряет контекст

    habr.com/ru/articles/1033510/

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

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

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

    habr.com/ru/articles/979862/

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

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

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

    habr.com/ru/articles/979862/

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

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

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

    habr.com/ru/articles/979862/

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

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

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

    habr.com/ru/articles/979862/

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

  29. 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 — поймал. Расскажу, какими паттернами в чтении кода я их вылавливал.

    habr.com/ru/articles/1033634/

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

  30. 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 — поймал. Расскажу, какими паттернами в чтении кода я их вылавливал.

    habr.com/ru/articles/1033634/

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

  31. 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 — поймал. Расскажу, какими паттернами в чтении кода я их вылавливал.

    habr.com/ru/articles/1033634/

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

  32. 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 — поймал. Расскажу, какими паттернами в чтении кода я их вылавливал.

    habr.com/ru/articles/1033634/

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

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

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

    habr.com/ru/articles/1033326/

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

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

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

    habr.com/ru/articles/1033326/

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

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

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

    habr.com/ru/articles/1033326/

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

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

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

    habr.com/ru/articles/1033326/

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

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

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

    habr.com/ru/companies/lesta/ar

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

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

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

    habr.com/ru/companies/lesta/ar

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

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

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

    habr.com/ru/companies/lesta/ar

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

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

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

    habr.com/ru/companies/lesta/ar

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

  41. 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-агентов.

    habr.com/ru/articles/1031124/

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

  42. 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-агентов.

    habr.com/ru/articles/1031124/

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

  43. 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-агентов.

    habr.com/ru/articles/1031124/

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

  44. 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-агентов.

    habr.com/ru/articles/1031124/

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

  45. 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 в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

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

  46. 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 в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

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

  47. 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 в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

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

  48. 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 в дедупликации. Остальные семь — поймал. Расскажу как искал и какими красными флагами зацепился.

    habr.com/ru/articles/1031010/

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

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

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

    habr.com/ru/articles/1030810/

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

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

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

    habr.com/ru/articles/1030810/

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