Законы робототехники сегодня

Рядовой, в сущности, случай подвиг меня написать то, что вы сейчас читаете. Любой, кто так или иначе сталкивается с программой 1С, попадал в подобную ситуацию не раз. Не знаю даже, что меня так разозлило. Может быть это словечко... Позвонили клиенты и сказали, что теперь они не могут распечатать счет на оплату. Раньше у них была одна редакция, но 1С решила прекратить ее поддержку. И теперь у них новая редакция, в которой они делают все тоже самое. Но счета не печатаются.

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

НЕ ТРЕБУЕТСЯ!

Да, нет, ребята! Вы не угадали. Именно это и требуется этим добрым людям, которые ко мне обратились. Они годами формировали счета, отправляли их своим клиентам по электронной почте, получали от клиентов деньги. А теперь оказывается все это НЕ ТРЕБУЕТСЯ. И что им теперь делать? Разойтись по домам?

Проблема, конечно, пустяковая. Но разработчики, имеющие какой-никакой опыт в 1С, знают, что пустяковость проблемы вовсе не означает пустяковость усилий для ее решения. В этот раз мне повезло. На все ушло меньше часа. Но я все равно был зол. Мне было жалко этого часа. У меня (впрочем, как и у большинства у нас) по жизни времени считай, что нет. В очереди стоят дела гораздо более важные, чем вот это вот все. Зачем, черт возьми, нарушать второй закон робототехники?!

Чтобы перестать злиться, я попробовал представить себе человека, который это сделал. Мне даже показалось, что я вижу его лицо. Оно было немного грустным. Ему очень нужна была зарплата, подумал я. И ему можно было бы даже посочувствовать. Но кто посочувствует мне? А вместе со мной еще и тысячам и тысячам таких же, как я. Он один, грустный со своей зарплатой, а нас тысячи. В этом-то и проблема.

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

Разумеется, эти правила не будут в точности повторять то, что сказал 80 лет назад Азимов. Над этим еще думать и думать. Но одно правило можно четко сформулировать уже сейчас.

Любое ограничение действий пользователя в программе допускается только при строгом выполнении двух условий.

Первое. Данное ограничение может быть немедленно (в один клик) и навсегда отменено пользователем.

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

В самом деле. Пусть все-таки объяснят: какие-такие египетские казни падут на голову того наглеца, что посмел распечатать счет на оплату. Что-то мне подсказывает, что в 95% случаев разработчикам нечего будет сказать в этом описании, кроме как: "мы придумали для вас это, потому что нам нужна была зарплата". А поняв это, они просто откажутся от своих вредных идей.

@exwill
06.04.2021 16:47 UTC
Первоисточник

Комментарии

@apapacy
06.04.2021 11:57 UTC
+2

Думал что открыл не ту статью Начали с Айзека Азимова а закончили петатью счетов в 1с. 1с это и есть ИИ?

@v1000
06.04.2021 11:57 UTC
0
Первое. Данное ограничение может быть немедленно (в один клик) и навсегда отменено пользователем.

даже если это попытка деления на ноль?

@
06.04.2021 12:02 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@exwill
06.04.2021 12:26 UTC
+1
Так поделите. Жалко вам что ли? IEEE 754 разрешает
@lair
06.04.2021 12:55 UTC
+1
Первое. Данное ограничение может быть немедленно (в один клик) и навсегда отменено пользователем.

Пользователь согласен за это заплатить?

@exwill
06.04.2021 12:59 UTC
0
Ну это же (гипотетически) закон. Платить должен тот, кто нарушает.
Но если вдуматься, имплементация такого закона приведет к сокращению расходов пользователей, а не к их росту. В описанном мною случае, пользователь заплатил за то, что ему создали ограничения
06.04.2021 13:03 UTC
-1
Ну это же (гипотетически) закон. Платить должен тот, кто нарушает.

А давайте введем закон, что любому человеку должны давать любые нравящиеся ему материальные блага? А тех, кто отказывается эти благо предоставлять — заставлять платить.


Но если вдуматься, имплементация такого закона приведет к сокращению расходов пользователей, а не к их росту.

Да, я вижу, что вас волнуют расходы пользователя. А меня, как разработчика, волнуют мои расходы.

@nickolaym
06.04.2021 13:30 UTC
+1

Роботы Азимова — это идеальные рабы. Абсолютно безопасные (1), послушные (2) и надёжные (3).


Азимов поднял две проблемы.
Одна этическая: насколько человечными могут быть рабы, и насколько по-человечески людям относиться к рабам.
Вторая техническая: насколько непротиворечивы формулировки, и что делать при обнаружении противоречий.


Знаменитая "этическая машина" (каво давит будиш — бабущьку или дэвущьку? тормаз! тормаз дави!) — это техническая проблема, на самом-то деле.
У нас есть абсолютный первый закон ("не навреди!"), ну и как его применять, если любое действие хоть кому-нибудь да навредит? То есть, ломается абсолютность.


Ваше "хочу интерфейс с одним кликом" — это второй закон ("клиент всегда прав").
И он точно так же конфликтный. Потому что вы не один человек на земле.
Ваше требование что-то сделать может противоречить требованию, например, админа, не делать этого.
Поскольку админ — не раб, то он оставляет за собой право не объяснять вам, какого чёрта.


И вот тут мы выходим из парадигмы рабства и переходим в парадигмы обслуживания или сотрудничества.
Хороший UI — это не про подчинённость программы, а про доброжелательность программиста, продающего вам эту программу.




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


К галочке "запомнить выбор" должна прилагаться функция "сбросить выбор" или "настроить выбор". И ещё и функция обучения ("запомнить выбор. в будущем вы сможете поменять его вот_здесь").


Сообщения об ошибках/отказах с подробностями "почему облом" тоже могут варьироваться, в зависимости от априорной компетентности пользователя. Для сторожа на складе вполне достаточно может быть "вам печатать не нужно". Для ответственного сотрудника — "недостаточно прав, обратитесь к вашему руководителю". А разработчику и дамп стека показать.


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

@exwill
06.04.2021 13:54 UTC
+1
Вот и я про доброжелательность. Если есть кнопка, а при нажатии на нее получается «фиг вам!». Это — доброжелательность или издевательство? Если есть веские причины, тогда почему не убрал кнопку? Убери и не будешь ничего нарушать. Статья об этом
06.04.2021 14:28 UTC
0
Убери и не будешь ничего нарушать.

То есть убрать кнопку — это не "ограничение действий пользователя в программе"?

06.04.2021 15:12 UTC
0

Задисаблил кнопку печати. Юзер тыкает в неё, а система говорит "блям!". Если есть веские причины, почему задисаблил, а не удалил? :)
Убрал кнопку печати. Юзер лезет в меню "Файл", а там ничего. :)


Комментарий о том, что на вещи надо смотреть шире, чем "меня выбесило".


Конечно, месседжбокс "фигвам" — это плохой UI.
Но это не значит, что у проблемы есть универсальное решение. И это не значит, что именно клиент останется полностью удовлетворённым.


Как удовлетворить клиента, НЕ выполнив его команду, — это искусство!
Кого-то, может, удовлетворить — это и по пальцам ударить ("вы пытаетесь получить неправомерный доступ, безопасники и фсбшники уже извещены!"). Или рассыпаться в извинениях "в нашей пре-альфа-версии это ещё не поддержано, но честно-честно, дождитесь только релиза, спасибо за понимание!" (тот же самый фигвам, а приятно!)


Как в анекдоте:
в одном магазине вывеска "у нас есть всё, что вам нужно!"
в магазине напротив "если у нас чего-то нет, это вам не нужно!"

@nehrung
06.04.2021 20:01 UTC
0
Первое. Данное ограничение может быть немедленно (в один клик) и навсегда отменено пользователем
ППКС! Тут же вспомнился недавний случай, когда гугловская команда «корифеев софтостроения» (а кто в мире круче их?) подсунула нам, всем пользователям Хрома, «экспериментальную» медвежью услугу в виде страницы флагов с «улучшениями» (сарказм) свойств этого браузера.
Первое, что я сделал, попав на эту страницу — стал искать кнопку, которая отключала бы эти «флаги» насовсем и все сразу (т.е. ровно то, о чём пишет авто здешней статьи). Не нашёл. Пришлось перебирать их по очереди и отключать по отдельности — а их там около сотни или больше.
Они хотели принести пользу, а вместо этого добились того, что я начал всерьёз задумываться о переходе с Хрома на что-то другое. И ведь вроде бы это не первый случай в софт-бизнесе, когда принудительные «улучшения» портят хороший продукт и могут погубить бизнес.