Entry tags:
Death by thousands cuts (AI), part 2
Codex, в целом, не изобретает новых абстракций и пишет как сказали сколько сказали. Проблема из первой части (https://amarao.dreamwidth.org/123971.html) в полный рост.
Но с клодом ситуация ещё хуже. Он ИЗОБРЕТАЕТ новые термины. В пределах сессии. После чего, термин остаётся кусочками где-то, после чего новая сессия его частично видит и частично может использовать, но так как оно использовалось только где-то только как-то, оно там и умирает.
Меня с клодом это возмущает больше всего.
Вот, попросил я тесты (рецепт в just'е) 'tests' переименовать в tests_l1, чтобы освободить tests_l2 и сделать test штукой, которая запускает обои. Как называется 'test' в этом случае? Поскольку мы не планируем из этого делать фреймворк и design pattern, никак. Общие тесты запускают подмножества тестов.
Клод в плане? Он это решил назвать Promote the orchestrator (где, собственно, это и описывает).
Что произошло?
Он только что изобрёл терминологию:
* to promote (допустим, может быть в переносном смысле, написали и забыли). А если нет? У нас где-то в коде останется комментарий с этим словом, навсегда загрязнив понятийное пространство проекта.
* orchestrator. Он решил это назвать orchestrator. Правильно? Правильно, если мы планируем это осознанно называть и испльзовать. А если нет, то в микроскопический словарь проекта только что нассали дважды.
Вот это - death by thousands cuts. Брошенные термины. Напоминаю про то, что кожанные мешки так тоже делали.
https://www.infoq.com/presentations/os-rust
Every Language H program begins with CHAPTER ONE ... there’s no chapter two ... Every program ends with the keyword OBEY.
Вот такую брошенную мерзкую фигню оно оставляет. Можно закрывать глаза? Сколько-то. Люди тоже иногда делают, и хуже. Можно исправлять. Но оно пишет быстрее, чем люди читают или даже удаляют. (fun fact: если зажать Ctrl-Shift-K или его экивалент в редакторе для удаления строк, то autorepeat на клавиатуре работает медленее, чем AI пишет, то есть в буквальном смысле, оно пишет быстрее, чем ты можешь удалять. For real.)
Можно отлавливать на этапе планирования - но чем больше ты напишешь ему, тем больше он напишет в ответ, и он пишет быстрее, чем ты.
Заметим, пример выше про переименование тестов - именно thousands cuts. Это не big feature. Это вообще не фича, это небольшой рефакторинг тестов, чтобы освободить место для нового подмножества. Такие моменты происходят 100500 раз в любом фичебранче. Человек в такой ситуации либо не даёт названия (просто "это"), либо думает о том, не переиспользовать ли это ещё раз - но тогда он садится и думает, "а пригодно ли оно? А хорошее ли название?". Напоминаю, вторая сложная проблема в IT, "naming things".
И ведь оно аккумулируется. Почему это меня волнует больше, чем slop в тестах или даже в коде?
Потому что код дешёвый. Мы признали это. От $30 до $0.75 за миллион токенов (~20-60k строк).
Но когда ты описываешь проблему, ты описываешь её словами. Если твои слова криво придуманы, не отображают предметную область правильно, если они - thick concepts, которые несогласнованы, ведут не туда или приносят свойства, на которые нельзя опираться, то как ты опишешь свою проблему в чатике? Мой окрестратор был промоучен не туда? В какой-то момент теряется возможность думать о проблеме.
Думать (рассуждать) можно только на языке. Если нет языка, думать невозможно. И вот эту возможность забирают ошибки в терминологии.
У меня в карьере был момент, когда я осознал (до появления AI), что количество кода зашкаливает и я просто не могу говорить что мне нужно сделать. Никто не ожидал, что столько кода нужно в том месте, все надеялись отделаться парой тысяч строк. Оказалось несколько тысяч файлов в сложном runtime отношении между друг другом, и стадии этого runtime'а никак не назывались.
Я потратил 3 месяца на рефакторинг (слов!). Это был самый сложный рефакторинг в моей жизни, потому что мне нужно было придумывать слово, пытаться понять, подходит ли оно, нырять в код и приносить это слово. И каждый раз, когда оно не срабатывало мне нужно было ментально откатываться назад, что, наверное, наиболее точное описание интеллектуальной боли, которую можно прдумать. Я, всё-таки, эту штуку одолел и терминология устоялась и живёт, и даже используется в других проектах, как только они заползают в такую сложность.
И вот теперь всё это отданно AI на откуп, которое не может потратить 3 месяца на рефакторинг во имя слов. У него нет "боли" и он не может сказать "доколе" и пойти и перепридумать всё. Что означает, что эта штука прямо сейчас закладывает в большой brownfield проект тысячи таких бритвенных лезвий и иголок, чтобы любой, пытающийся понять систему, умер от интеллектуальной боли.
Может быть, когда "горизонт исполнения" для AI достигнет трёх месяцев, можно будет отправить его нормализовать терминологию и быть достаточно уверенным, чтобы согласиться с ней и начать использовать.
Но не сейчас. Сейчас это невозможно, а это означает, что pain is ahead.
Но с клодом ситуация ещё хуже. Он ИЗОБРЕТАЕТ новые термины. В пределах сессии. После чего, термин остаётся кусочками где-то, после чего новая сессия его частично видит и частично может использовать, но так как оно использовалось только где-то только как-то, оно там и умирает.
Меня с клодом это возмущает больше всего.
Вот, попросил я тесты (рецепт в just'е) 'tests' переименовать в tests_l1, чтобы освободить tests_l2 и сделать test штукой, которая запускает обои. Как называется 'test' в этом случае? Поскольку мы не планируем из этого делать фреймворк и design pattern, никак. Общие тесты запускают подмножества тестов.
Клод в плане? Он это решил назвать Promote the orchestrator (где, собственно, это и описывает).
Что произошло?
Он только что изобрёл терминологию:
* to promote (допустим, может быть в переносном смысле, написали и забыли). А если нет? У нас где-то в коде останется комментарий с этим словом, навсегда загрязнив понятийное пространство проекта.
* orchestrator. Он решил это назвать orchestrator. Правильно? Правильно, если мы планируем это осознанно называть и испльзовать. А если нет, то в микроскопический словарь проекта только что нассали дважды.
Вот это - death by thousands cuts. Брошенные термины. Напоминаю про то, что кожанные мешки так тоже делали.
https://www.infoq.com/presentations/os-rust
Every Language H program begins with CHAPTER ONE ... there’s no chapter two ... Every program ends with the keyword OBEY.
Вот такую брошенную мерзкую фигню оно оставляет. Можно закрывать глаза? Сколько-то. Люди тоже иногда делают, и хуже. Можно исправлять. Но оно пишет быстрее, чем люди читают или даже удаляют. (fun fact: если зажать Ctrl-Shift-K или его экивалент в редакторе для удаления строк, то autorepeat на клавиатуре работает медленее, чем AI пишет, то есть в буквальном смысле, оно пишет быстрее, чем ты можешь удалять. For real.)
Можно отлавливать на этапе планирования - но чем больше ты напишешь ему, тем больше он напишет в ответ, и он пишет быстрее, чем ты.
Заметим, пример выше про переименование тестов - именно thousands cuts. Это не big feature. Это вообще не фича, это небольшой рефакторинг тестов, чтобы освободить место для нового подмножества. Такие моменты происходят 100500 раз в любом фичебранче. Человек в такой ситуации либо не даёт названия (просто "это"), либо думает о том, не переиспользовать ли это ещё раз - но тогда он садится и думает, "а пригодно ли оно? А хорошее ли название?". Напоминаю, вторая сложная проблема в IT, "naming things".
И ведь оно аккумулируется. Почему это меня волнует больше, чем slop в тестах или даже в коде?
Потому что код дешёвый. Мы признали это. От $30 до $0.75 за миллион токенов (~20-60k строк).
Но когда ты описываешь проблему, ты описываешь её словами. Если твои слова криво придуманы, не отображают предметную область правильно, если они - thick concepts, которые несогласнованы, ведут не туда или приносят свойства, на которые нельзя опираться, то как ты опишешь свою проблему в чатике? Мой окрестратор был промоучен не туда? В какой-то момент теряется возможность думать о проблеме.
Думать (рассуждать) можно только на языке. Если нет языка, думать невозможно. И вот эту возможность забирают ошибки в терминологии.
У меня в карьере был момент, когда я осознал (до появления AI), что количество кода зашкаливает и я просто не могу говорить что мне нужно сделать. Никто не ожидал, что столько кода нужно в том месте, все надеялись отделаться парой тысяч строк. Оказалось несколько тысяч файлов в сложном runtime отношении между друг другом, и стадии этого runtime'а никак не назывались.
Я потратил 3 месяца на рефакторинг (слов!). Это был самый сложный рефакторинг в моей жизни, потому что мне нужно было придумывать слово, пытаться понять, подходит ли оно, нырять в код и приносить это слово. И каждый раз, когда оно не срабатывало мне нужно было ментально откатываться назад, что, наверное, наиболее точное описание интеллектуальной боли, которую можно прдумать. Я, всё-таки, эту штуку одолел и терминология устоялась и живёт, и даже используется в других проектах, как только они заползают в такую сложность.
И вот теперь всё это отданно AI на откуп, которое не может потратить 3 месяца на рефакторинг во имя слов. У него нет "боли" и он не может сказать "доколе" и пойти и перепридумать всё. Что означает, что эта штука прямо сейчас закладывает в большой brownfield проект тысячи таких бритвенных лезвий и иголок, чтобы любой, пытающийся понять систему, умер от интеллектуальной боли.
Может быть, когда "горизонт исполнения" для AI достигнет трёх месяцев, можно будет отправить его нормализовать терминологию и быть достаточно уверенным, чтобы согласиться с ней и начать использовать.
Но не сейчас. Сейчас это невозможно, а это означает, что pain is ahead.
no subject
С терминологией ещё больше проблем, если не один код пишешь, или если отдаёшь на ревью (на растерзание) другим. Людям другой культуры, например.