• Приложение 1. Разбор задачи для собеседования с программистами
  • Приложение 2. Из записных книжек периода внедрения
  • Приложение 3. Страшный сон в приказах
  • Приложения

    Приложение 1. Разбор задачи для собеседования с программистами

    Итак, разбор задачи.

    Тест проверяет достижения соискателя скорее по п. 2 перечня требований, приведенного перед задачей, чем по п. 3 (если вы, конечно, еще помните, что там написано) Одновременно вы получаете представление об аккуратности кода и «доверчивости» при получении исходных данных. Вот решение, которое я хотел увидеть, без заморочек синтаксисом языка.


    Комментарий: если поезда могут приходить раньше или опаздывать более чем на половину суток, то для решения задачи необходимы дата фактического прибытия и прибытия по расписанию. Далее задача решается в предположении, что время опережения и опоздания не превосходит 12 часов.

    ЕСЛИ НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_РАСП) ИЛИ

    НЕ КОНТРОЛЬ_НА_ВРЕМЯ (ВРЕМЯ_ФАКТ)

    ТО ВЫЙТИ.

    Комментарий: Я бы удовлетворился и без описания функции КОНТРОЛЬ_НА_ВРЕМЯ.

    РАЗНОСТЬ:= МИНУТЫ (ВРЕМЯ_РАСП) – МИНУТЫ (ВРЕМЯ_ФАКТ);

    Комментарий: 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 попытки.

    * * *

    Руководитель проекта от фирмы-разработчика грустно говорит:

    – Кнопку для массового пересчета всех договоров вы уже заказали. Меня удивляет, что вы еще не заказали кнопку «Уволить всех».

    * * *

    Программист, отвечающий у разработчика за работу со словоформами, узнал, что в русском языке шесть падежей, а не семь, как он предполагал. Он мне объяснил, что перепутал с количеством цветов радуги. Хорошо, что число апостолов первого круга ему неизвестно.

    * * *

    – Получил письмо от вашего директора. Он пишет, что описанная проблема легко решается. Но если она легко решается, то почему она не решается?

    – Ну как же… потому что она решается легко, но до-о-о-олго….

    * * *

    – Вова, у них что, в системе нет механизма транзакций?

    – Есть у них в системе механизм транзакций. Просто они им не пользуются. И голова у них, наверное, тоже есть.

    * * *

    Софт, не отчуждаемый от разработчика. Никаким способом не отчуждаемый.

    * * *

    Внедряемая информационная система при заполнении приказа о приеме на работу нового сотрудника задает вопрос: «Создать новое физическое лицо?»

    Внедряемая система при попытке ввести код страны «Россия» в заказ выдает сообщение «Выбрана неправильная страна». – Д.К.

    * * *

    Внедренцы хотят получить дополнительные деньги. На вопрос «За какие работы?» отвечают: «За доводку системы на площадке заказчика». При этом деньги за доработку и настройку они уже взяли. Бурно не понимаю, какую такую доводку системы нужно проводить после ее доработки. Один из моих сотрудников меланхолично замечает: «Теперь систему нужно подогнать по месту с помощью напильника».

    * * *

    Становлюсь нарицательным. Передали разговор между директором и сотрудником фирмы-разработчика: «Что вы со мной разговариваете как Орлов!»

    * * *

    Обсуждали идею создания специального продмага для женатых программистов. В таком магазине обязательно должны продаваться продукты с названиями «Мясо хорошее», «Картошка крупная», «Бананы негнилые» и «Колбаса какая-нибудь». Мне сказали, что я забыл главные продукты: «Что-нибудь к чаю», «Что-нибудь на десерт», «Что-нибудь на ужин» и продукт-апофеоз «Что-нибудь из еды». Конечно, в этом магазине должны быть и соответствующие единицы измерения продуктов: «немного», «не очень много», «на один раз», «сколько я обычно покупаю».


    Поехали

    Проблемы с быстродействием. Внедренцы советуют поставить пользователям более мощные компьютеры. Удивленно сообщаю им, что в ТЗ их система определена как система с тонким клиентом. Похоже, в процессе доработок клиент не на шутку располнел.

    * * *

    На экране системы сопровождения программного продукта рядом выводятся два поля: «Заявитель» и «Плановая дата устранения».

    * * *

    Модальное окно «Вы действительно хотите выйти из программы?» должно содержать три варианта ответа: «Да», «Нет» и «Еще как».

    * * *

    Метод разработки: картошку порезать, пожарить, подать на стол, а если заказчик заметит, что картошка не чищена, начать чистить.

    * * *

    Сегодня сформулировал функции ключевых фигур в ИТ-проекте.

    Таких фигур три: руководитель проекта, главный разработчик и главный аналитик.

    Аналитик отвечает за вопрос «почему разработали?», разработчик – «как разработали?», а руководитель – «кого за это нужно взгреть?».

    Как следствие, на вопрос «что сделали?» ответить не может никто.

    * * *

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

    * * *

    Нет, смертная казнь для некоторых разработчиков – это слишком гуманно. Я бы приговаривал их к пожизненной эксплуатации собственных программных продуктов

    Предлагаю пожизненное форматирование дискет. – Д.К.

    * * *

    Причина увольнения: саботировал невысказанное желание руководства.

    * * *

    Тоже стиль руководства: всегда принимать меры и никогда не принимать решений. И ведь он хорошо держится на своей должности.

    * * *

    Поскольку любая система работает без ошибок только в одном случае – когда ею не пользуются, – то для адекватного отражения реального мира в системе следует остановить реальный мир.

    Похоже, что большинство IT-консалтеров именно это и пытается сделать.

    * * *

    Состояние внедрения: кома.

    * * *

    База загигела. Федя сказал, что размер базы превысил гигабайт, подчеркнуто вскользь, между прочим. Но я заметил. Все-таки событие. Нам еще долго предстоит выслушивать истерики пользователей и утирать их слезы, воевать с внедренцами по поводу каждой формы ввода, вытрясать недоделанные куски, но все-таки речь уже идет не об игрушке, а об информационной системе, в которую мы запихнули три года работы нашей компании.

    * * *

    Уволен менеджер по сопутствующим товарам. Пока ехали из офиса на склад, я поинтересовался у исполнительного директора, что произошло.

    – Я, по-твоему, не права?

    – Права, конечно. Она милая женщина, но я бы ее уволил на год раньше, когда мы ей не смогли объяснить, что нельзя менять розничную цену, не проводя инвентаризации. Но сейчас какие события к этому привели?

    – Как какие? – удивляется. – Вы же сами сделали новый отчет по товародвижению, который я просила.

    – Но в отчете про уволить ничего не было.

    – Зато там было про торговую наценку. А когда я увидела, что торговая наценка по всем товарам, отпущенным со склада за месяц, меньше фонда заработной платы склада, я уже сама догадалась, что делать.

    Начинаю понимать, что на самом деле значит «использовать информационную систему».


    Эксплуатация

    В два часа ночи дома звонит телефон. Старший оператор интересуется, не звонил ли я ему сейчас.

    * * *

    Данные не обязательно копировать ежедневно. Достаточно это делать перед аварией с базой.

    * * *

    Узнал, что операторы за глаза зовут меня «папа».

    Сначала расстроился. Потом понял, что это все-таки не худший вариант.

    * * *

    Напутствие гендиректора: «Делайте что хотите, работайте ночами, но результат должен быть через час».

    * * *

    Не издеваясь и не повышая голоса, абсолютно спокойно объяснить мальчику из техподдержки, что «артикль» и «артикул» – это разные слова, сообщить их значения, а потом попросить писать слово «лучше» через «ч», а не через «д», а то мне неудобно показывать журнал заявок исполнительному директору.

    * * *

    Этот мальчик очень старательный. Поняв, что хромое правильнописание несколько меня нервирует, он теперь все тексты, которые я должен прочесть, проверяет с помощью Ворда. И Ворд сообщает ему, что в предложении «Заместа поля Версия мы можем писать имя компьютера» это самое «заместа» нужно писать раздельно.

    * * *

    Грустная шутка: «Компания „Супер-Софт“ признала неисправимой в текущей версии своей системы очередную орфографическую ошибку».

    * * *

    Мой сотрудник звонит пользователю и представляется: «Это Йохан-программист».

    Он не кривит душой и не нарушает правила: футбольно-фанатичный папа назвал его в честь Йохана Круиффа, легендарного нападающего сборной Голландии, а в компании принято представляться по имени: «Саша-программист», «Паша-программист».

    Но каждый раз, когда Йохан звонит новому пользователю и представляется, я представляю, что в этот момент происходит на другом конце провода…

    * * *

    Сегодня молодой человек, одетый в малиновый пиджак, горячо благодарил меня за то, что полтора года назад я уволил его с должности оператора.

    * * *

    Лучшим сообщением программы времен MS DOS было:

    Invalid user. Replace and strike any key.

    А сейчас, конечно же:

    User was successfully ignored.

    * * *

    Кандидат пишет в резюме: «Не имею вредных привычек».

    Он не догадывается, что в нашей фирме вредной считается привычка ходить домой ночевать.

    * * *

    И по прочтении фразы «Ваши предложения прошу высылать в почту» бросил в мусорную корзину очередное резюме.

    * * *

    – Я сейчас еще подумаю, и скажу вам, какую программу вы должны были написать вчера.

    * * *

    Ощущения, которые я испытываю, когда понимаю, что забыл дома мобильник (на 80 % оплачиваемый фирмой), больше всего похожи на ощущения при потере невинности: смущение, перемешанное с неимоверным облегчением.

    * * *

    – Мы сегодня собрались, поскольку у сотрудников накопилось много вопросов, и по офису начали циркулировать различные слухи. Мы ответим сегодня на все ваши вопросы. Мы не уйдем, пока не ответим на каждый ваш вопрос.

    Но ответ на все вопросы у нас один: мы пока не знаем.

    * * *

    А знаете самый простой способ синхронизации любых баз данных? Это полное их уничтожение.

    Приложение 3. Страшный сон в приказах

    ПРИКАЗ

    №______ «___» ________20__ г.

    В связи с вводом в эксплуатацию новой информационной системы предприятия

    ПРИКАЗЫВАЮ с «___» ________20__ г.:

    1. Заморозить структуру предприятия.

    1.1. Запретить переименование подразделений и смену уровня подразделений (превращение отделений в отделы, отделов в управления, управлений в департаменты и обратно).

    1.2. Допускается только ликвидация подразделений с увольнением всех сотрудников и создание новых подразделений с набором нового штата.

    1.3. Запретить передачу дел при расформировании подразделений.

    2. Запретить сотрудникам предприятия изменять фамилии, имена и отчества.

    2.1. Допускается увольнение сотрудников для смены фамилии и прием их на работу под новыми фамилиями.

    2.2. Запретить передачу дел при увольнении сотрудников.

    3. Во все заключаемые предприятием договора вставлять обязательства контрагента не изменять наименование, организационно-правовую форму и учетные коды до выполнения сторонами обязательств по договору, а также не передавать обязательства по договору третьим лицам. Если контрагент отказывается от такого пункта договора, договор не заключать.

    Генеральный директор _____________________

    ПРИКАЗ

    №______ «___» ________20__ г.

    В дополнение к предыдущему приказу для успешной эксплуатации новой информационной системы

    ПРИКАЗЫВАЮ с «___» ________20__ г.:

    1. Заморозить заключение предприятием договоров с контрагентами.

    2. Прекратить любую иную деятельность, требующую изменения информации, хранящейся в информационной системе.

    Генеральный директор _______________________








    Главная | Контакты | Прислать материал | Добавить в избранное | Сообщить об ошибке