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

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

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

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

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

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

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

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

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

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

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

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