Андрей Орлов - Записки автоматизатора. Профессиональная исповедь
ЕСЛИ НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_РАСП) ИЛИ
НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_ФАКТ)
ТО ВЫЙТИ.
Комментарий: Я бы удовлетворился и без описания функции КОНТРОЛЬ_НА_ВРЕМЯ.
РАЗНОСТЬ:= МИНУТЫ (ВРЕМЯ_РАСП) – МИНУТЫ (ВРЕМЯ_ФАКТ);
Комментарий: 1440 = 24 х 60 – количество минут в сутках, а 720 – в полусутках.
ЕСЛИ РАЗНОСТЬ <= —720
ТО РАЗНОСТЬ:= РАЗНОСТЬ + 1440
ИНАЧЕ ЕСЛИ РАЗНОСТЬ >= 720
ТО РАЗНОСТЬ:= РАЗНОСТЬ – 1440;
ЕСЛИ РАЗНОСТЬ = 0
ТО ПЕЧАТАТЬ («ПРИШЕЛ ВОВРЕМЯ»)
ИНАЧЕ ЕСЛИ РАЗНОСТЬ > 0
ТО ВЫВЕСТИ («ПРИШЕЛ РАНЬШЕ НА», ЧАС_МИН
(РАЗНОСТЬ))
ИНАЧЕ ЕСЛИ РАЗНОСТЬ < 0
ТО ВЫВЕСТИ («ОПОЗДАЛ НА», ЧАС_МИН (—РАЗНОСТЬ))
Если испытуемый не заметил, что поезд, прибывающий по расписанию в 0.05, а фактически прибывший в 23.55, не опоздал на 23 часа 50 минут, а приехал раньше на 10 минут, то это очень грустно. Если увидел, но не сообщил вам (устно или в комментарии к тексту), что решение не работает при расхождениях с расписанием более полусуток, то это просто грустно. Кодировать по блок-схемам последние сорок лет уже не требуется, а на что еще такой годится?
Наиболее поразившей меня за последнее время реакцией на эту задачу было удивленное «Как нет дат в исходных данных? Без дат вообще нельзя решить, без дат нет метода!». Я сразу почувствовал себя таким старым… Правда, как-то мы без методов обходились, поскольку объектно-ориентированных языков тогда еще не было.
Приложение 2. Из записных книжек периода внедрения
Обследование и разработка технического задания
Начал новую жизнь: стер куки.
* * *Этап обследования предприятия: слепой объясняет глухому, как выглядит Земля из иллюминатора космического корабля.
* * *У нас же госучреждение. Шаг вправо, шаг влево – сразу служебная записка.
* * *Сложно будет объяснить разработчикам, что «отдел» и «Отдел» – это разные виды подразделений, находящиеся на разных уровнях структуры. «Отдельный Отдел», наверное, тоже писать не стоит. Придется каждый раз писать «отдел (в составе Управления)» и «Отдел (вне Управлений)».
* * *Информация отдела кадров: «Руководство не возражает, чтобы начальство отпустило сегодня своих подчиненных в 17 часов». Надо привыкать к терминологии. Вчера, например, вызвал их искреннее возмущение неправильно заполненной ежедневной справкой: «Неужели вы не понимаете, что ваш Т-ов находится не в отпуске, а в отгуле в счет отпуска?»
* * *– В каком порядке визируется договор?
– Договор визируется в хаотичном порядке.
* * *Моя профессия уже давно стала бы мне невыносимо скучна, если бы я не менял предметные области. Ну где бы я еще узнал про бланковый индоссамент и нетелей средней степени стельности, да еще и в одном договоре?
* * *На то, чтобы объяснить своим сотрудникам, что смешного в выражении «племенной боров», ушло полчаса.
* * *Разбирали с программистом бухгалтерский сленг. Пришлось даже залезть в Даля, чтобы выяснить происхождение некоторых слов. Выяснилось, что «крыжить» происходит от «крыж», то есть крест, и исходно значило «помечать крестом», хотя сейчас большинство бухгалтеров крыжат галочками. Заодно разобрали слово «херить», происходящее от «хер», старого названия буквы Х, и означающее по Далю перечеркивать или помечать косым крестом. Программист подумал и сделал вывод, что херить – это крыжить под углом пи на 4.
Особенно креативно называются ситуации, в которых одному объекту необходимо сопоставить некий другой (например, связать задолженности и оплату). Обычно это именуется спариванием, сращиванием (это бухгалтерский фольклор), применением (а вот это уже из языка переводчиков системы Navision. Так и написали в интерфейсе – «применить операции». Нет чтобы голову применить).
Что до термина «крыжить», то по тому, понимают ли его с первого раза, можно безошибочно определить автоматизатора. – Д.К.
* * *Любые обсуждения любых проблем с любым сотрудником Х из множества {А, Б, В} на треть состоят из попыток доказать утверждение, что Y из множества {А, Б, В} – козел, где Y, как вы догадываетесь, не равен X.
* * *После обсуждения очередной задачи я обязательно оформляю задание на программирование в письменном виде и даю подписывать сотруднику, эту задачу поставившему. Менеджер А такие постановки читает внимательно и в процессе чтения крыжит, то есть помечает плюсиком каждый пункт, с которым согласился. В процессе согласования задания он пользуется почти такими же подсказками, как в игре «Кто хочет стать миллионером?»: «Помощь зала» (допрос подчиненных), «50 на 50» и «Звонок богу».
* * *Счастливы те, кто понимает разницу между учетом и регистрацией
Разница заключается в наличии проводки в главной книге. – Д.К.
* * *Мне приходится ходить в бухгалтерию, потому что по телефону полную информацию от бухгалтеров получить нельзя: часть ее передается только с помощью жестов.(Федор Клабуков.)
* * *Если в компании для документооборота используется электронная почта, никогда не задавайте руководству два вопроса в одном письме: если вы и получите ответ, то только на первый вопрос. Впрочем, в обычной служебной записке тоже не следует поднимать сразу две проблемы. Этот документ служит исключительно для наложения резолюции и направления по инстанциям (исполнять или согласовывать дальше), поэтому в нем глупо просить что-то у двух подразделений: документ окажется в итоге только в одном.
* * *Инструкция по организации инструктажа по пожарной безопасности.
* * *На станции Лосиноостровская кассир продает билеты как на обычные электрички, так и на скоростной поезд «Спутник». Для этой цели у него два одинаковых терминала с двумя принтерами для печати билетов и двумя программаторами для чиповых карт.
Специально сравнил билеты: ИНН на них стоит один и тот же. Лишние тысячи три долларов на каждое рабочее место вместо подумать. Ну действительно, зачем думать, если эти деньги можно собрать с пассажиров. Куда ж они денутся…
* * *Наказывать за отсутствие мозгов можно только из зависти.
* * *– Не отвлекайте меня вопросами, я же руковожу.
* * *У этого алгоритма логика, конечно, развесистая, но простая.(Андрей Янин.)
* * *Можно ли обозвать генерального директора словом «пользователь»? Или лучше выделить отдельный АРМ руководителя, пусть он даже от АРМа пользователя ничем не отличается?
И может ли гендиректор изменить или добавить запись в справочнике контрагентов?
А если не может, то кто ему об этом скажет? И нужно ли ему об этом вообще говорить?
* * *В большинстве компаний, в которых мне приходилось работать, штат делится на три части: руководство, сотрудники и «тоже люди».
Наличие последних становится очевидным по употреблению фраз «Операторы тоже люди», «Продавцы тоже люди» etc.
«Программисты тоже люди» я тоже слышал.
* * *При обсуждении некоторых вопросов появляется желание предложить каждому участнику совещания надеть на голову обруч. Чтобы ни у кого голова не треснула. Иногда и самому надеть хочется.
Я подозреваю, что короны в Европе именно таким способом появились. Сначала это был просто обруч, который надевал правитель, чтобы у него при решении сложных государственных задач не треснула голова. И только потом эти обручи стали делать из золота и украшать драгоценными камнями.
А сегодня до меня наконец дошло, почему к короне стали приделывать вертикальные зубцы, а потом и большое количество обручей. Похоже, что корона исполняла еще и функцию радиатора охлаждения для перегретой от размышлений головы короля или герцога.
Кстати, для теплоотвода идеальной была бы серебряная корона, затем следует корона из чистой меди (а вот бронзовая будет уже в четыре раза хуже) и только после них – золотая, а потом алюминиевая (но его еще не умели добывать). Применение других материалов было бы существенно хуже.
А Владимир Михалев подсказал, что процедура помазания на царство служила на самом деле для нанесения на голову будущего монарха термопасты, обеспечивающей высокий теплообмен между головой и короной.
А Intel все это по второму разу изобрел.
Доработка функционала
Смотрел настройки документов. Настройщик так и не понял, почему я веселюсь при виде экранных форм «Разнорядка» и «Страховой полюс».
* * *– Этот модуль работает, зуб даю.
– Значит, у тебя 32 попытки.
* * *Руководитель проекта от фирмы-разработчика грустно говорит:
– Кнопку для массового пересчета всех договоров вы уже заказали. Меня удивляет, что вы еще не заказали кнопку «Уволить всех».
* * *Программист, отвечающий у разработчика за работу со словоформами, узнал, что в русском языке шесть падежей, а не семь, как он предполагал. Он мне объяснил, что перепутал с количеством цветов радуги. Хорошо, что число апостолов первого круга ему неизвестно.