TGViewer
StringConcat - разработка без боли и сожалений StringConcat - разработка без боли и сожалений @stringconcat · 3.72K subscribers
Post #431 3.41K
Я случайно открыл новый (или давно забытый) способ писать промпты.

Летел я из Джакарты домой в Сингапур. Как обычно:
- на Netflix ничего не скачано
- Wi-Fi в самолёте стоит как крыло от него самого
В общем, надо чем-то себя занять.

Решил пописать код. Тем более была вполне интересная задача: написать небольшой rule engine для банка. Но есть нюанс:
- интернета нет
- локальных LLM нет
- писать всё руками, как наши деды в 2022-м, тоже не хотелось

И тут мне пришла идея: а что если поиграть с LLM в TDD ping-pong? То есть я руками пишу самое важное — спецификацию в виде тестов.
А модель потом сама генерирует реализацию под этот контракт.

Получалось примерно так:

@Test
fun `when term deposit created allow only deposit`() {
val awaitFundingTd =
accountRuleSet {
withdrawal {
default { denyAny() }
}
deposit {
allowAny() { balances("funded") }
}
}

awaitFundingTd
.makeDecision(Withdrawal, "ATM Withdrawal")
.shouldBeDenied()
}

Сразу захотелось сделать красивый DSL для правил. Потому что если делать DSL — то обязательно универсальный, расширяемый, чтобы потом переиспользовать для всех продуктов (да-да, конечно). Иначе зачем вообще начинать 😄

В итоге за полтора часа полёта я написал 7 тестов, 0 строк реализации и абсолютно ничего не компилировалось. То есть классический успешный TDD session. А уже дома вместо огромного промпта на 3 экрана с объяснениями что я вообще хочу я просто сказал Cursor "Сделай так, чтобы тесты проходили"

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

Выходит, что LLM намного проще быть хорошим инженером, когда ты перестаёшь разговаривать с ней как продакт и начинаешь как разработчик
  • 👍 55
  • 🔥 11
  • 🍓 5
  • 💯 4
  • 🤝 1
  • 🫡 1
More from @stringconcat
  1. Sep 26, 2026Вы не заметили, но в интернетах разразился скандал вселенского масштаба. Вопрос вот в чём:…
  2. Sep 21, 2026А сегодня снова не совсем обычный пост (пока я занят написанием духоты). Знаю, что у многи…
  3. Sep 18, 2026Сегодня необычный выпуск — подкаст с нашим старым бро Константином Могилевкиным. Константи…
  4. Sep 15, 2026Я частенько в своих постах упоминаю ключевую характеристику для сотрудника — автономность.…
  5. Sep 8, 2026Продолжаем обзор микросервисных изделий. На этот раз подписчики прислали мне архитектуру,…
  6. Sep 4, 2026Начинаем сезон видосиков с обзора карьерных путей (не переживайте, духота тоже будет, но п…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →