Довелось мне как-то писать для некоей конторы анализатор рабочего времени. Программка бегала по базе системы контроля доступа и считала время прихода/ухода по людям в заданной группе. При этом учитывалось, что кто-то может работать посменно, кто-то сутками, а еще существовал дивный параметр, позволявший ограничить время, которое считалось рабочим днем. То есть, если ты ушел с работы на 5 минут раньше - это будет отмечено, а вот если пришел на работу раньше - ничего подобного, счет начнется с утвержденного времени начала рабочего дня.
На тестовый прогон подсунули программе некую базу реальной конторы. И все вроде бы считалось хорошо, но внимательные тестеры обнаружили некоего гражданина, у которого суммарное рабочее время было отрицательным. Мы, конечно, стали искать ошибку в подсчете. Ошибок в нем не было, все стройно и логично, время ухода минус время прихода, или начала рабочего дня, если пришел раньше чем надо. А сумма отрицательная, хоть ты тресни!
Оказалось, что этот зловредный дядя приходил за два часа до начала рабочего дня, а уходил... за час до его начала. А мне, как нормальному разработчику, который прекрасно понимает людей, способных смыться из конторы за час до конца дня или наоборот проторчать до полуночи, даже в голову не приходило, что найдется деятель, способный уйти раньше, чем остальные на работу приходят. Программа честно вычитала из времени ухода время начала дня, получала примерно минус час и впихивала это в результат.
Я крякнул и спросил, как мне реагировать на такое самоуправство. Начальство почесало репу и выдало: ну раз уж он такой умный, что явился невовремя, хотя ограничение на день стоит - значит вообще эту явку не учитывай. Так я и сделал, но с тех пор при разработке программ стараюсь учесть не только все возможные комбинации ситуаций, но и все невозможные и ряд невероятных.
Случилась история давно и с моим товарищем. Он, будучи вежливо попрошенным, "настраивал компьютер" одной экспрессивной девице. Подобрал конфигурацию, поставил систему и некоторый пакет программ, чтоб "всё работало".
Неделей позже девушка пожаловалась на то, что привод у неё не работает - только тем и занимается, что болванки портит. Лучшим способом выяснить причину поломки оказался следственный эксперимент.
Вставляет он, значит, диск, запускает программу Nero, ставит на запись и далее следит за прогрессом записи - все так, как делала девица. Запись успешно без единого намека на ошибку доходит до 100%, и тут девица выдает: "Ну всё, записалось, нажимай отмена. Что смотришь на меня, видишь 100% показывает? Записалось ведь значит!.. (выскакивает окно "Прожиг завершен") Ой, наверное этого окошка надо было дождаться да?.."
Откуда берется такая прыть, и как её направить в нужное русло?
Работаю тестером. Прислали на проверку сайт - функционал, юзабилити. В общем, полный набор. Между прочим, сайт делала очень серьезная компания. По спецификациям он под эксплорер, хотя разработчик использовал Firefox3 и под первым сайт никогда не запускал. Естественно, ничего не работает.
Но! На самом видном месте на сайте висит большая кнопка с крестиком "Х", без подписи. Если ее нажать, полсайта гарантированно падает. И потом поднять его может только разработчик, да и то за пару часов. Но кнопку все равно почему-то не убирают.
В итоге, если мне лениво заниматься этим сайтом, я нажимаю заветную кнопку, и целый день гарантированно о нем не думаю. И ведь не придерешься ко мне - я просто делаю свою работу.
Дело было еще в бытность мою в Бауманке. Препод, по совместительству наш куратор, человек довольно молодой и со своеобразным юмором.
Как-то на паре по алгоритмике он рассказывал про бинарные деревья или что-то вроде того. И вот я стал делать прогу, назвал ее fuck.cpp и кодил со спокойной душой уже около часа, не компилируя и не сохраняясь. Наконец, она была дописана. Пришло время, так сказать, тест-драйва. Внезапно подлые си выдают непонятную ошибку о невозможности записи на диск. Мучаюсь около пяти минут, результата - ноль.
Подзываю препода, на что он говорит на полкласса: "Какой же ты, Миша, грубый! Еще бы у тебя программа с таким названием работала! Назови ее как-нибудь ласково, например, ПРИВЕТ". Тут я краем глаза замечаю подозрительный значок на панели задач и понимаю, что недописанная откомпилированная программа была запущена час с лишним назад, но так и не получила кода на выход, и посему не может перезаписать откомпилированный файл.
Все же подыгрываю преподу, сохраняю файл, как preved.cpp, и - о чудо! - программа работает. Потом еще полгода между одногруппницами ходили рассказы про то, как наши компы любят ласку и доброту.
VirtualBox 2.0.6, русская локализация. В программе есть возможность прервать работу виртуалки с сохранением статуса, для того, чтобы можно было потом работу с того же места продолжить. И это сохранение можно, не запуская машину, удалить. При нажатии на кнопку "отменить сохранённое состояние виртуальной машины" появляется такой диалог:
"Вы уверены, что хотите отменить (удалить) сохраненное состояние виртуальной машины? Эта операция равносильна перезапуску или выключению питания машины без надлежащей остановки средствами гостевой ОС."
И внизу две кнопки. Угадайте, какие? "Отменить" и "Отменить".
Крупная компания. ИС в, которой я админ, перенесена на другой сервер. Но на новой машине в ОС я не включен в группу администраторов. Так как за железо и сервера в том числе отвечает другой отдел, надо на него писать служебную записку. Документооборот естественно автоматизирован, ЭЦП и все как положено. Служебку два раза заворачивали в отделе информационной безопасности. Созванивался, уточнял, переписывал. На третий раз она снова вернулась ко мне. В раздел "К исполнению". Автоматизация.
Товарищ по долгу службы ездил в коммнадировку показывать программу (что-то там с ГИС картами связано). И вот, показывает он свою программу генералу ВДВ, строгому, суровому дядьке.
Наконец, генерал не выдерживает и спрашивает: "Что так мелко-то всё, не видно нифига?!". А всё это дело показывалось на военных ноутбуках с очень маленьким экраном. Ну, товарищ и говорит: "Тут экран маленький, разрешение маленькое".
На что генерал побагровел и злобно спросил: "Тебе что, моего разрешения мало?"
Я как-то написал программку для проверки таблицы умножения.
Меня попросили знакомые, у которых ребенок после школы первым делом за комп садится, а уже потом, с хорошего пинка, начинает учить уроки.
И вот, сделал я так, что компьютер, пока не прорешаешь ему всю таблицу умножения, вообще ничего запустить не дает. Дописал прогу и выложил на работе в общую папку с названием "Запусти меня".
Через полчаса все менеджеры повторяли таблицу умножения.
Есть такая замечательная программка - keyboard ninja. Она по буквосочетаниям на лету понимает, на каком языке набирается текст и сама делает переключение. Кроме того, она же делает исправление ошибок и много других вкусностей. А у меня еще и клавиатура MS Natural, ну, горбатая, разделенная с разворотом половин, с поднимающимся передом (а не задом, как обычно). В общем - сказка для привыкшего человека. А для непривыкшего - дыба.
Итак, к делу: Приходят сегодня гости. Точнее, пришел знакомый, привел своего знакомца, владельца нескольких магазинов, но больше ничем не обезображенного. Среди прочего, этот владелец просит письмо отослать. Как-то меня все достали с такими просьбами, и я придумал простой выход: пожалуйста, но набивай сам. Второй раз приходят не все.
Начинает сам, путается, ругается... Я тихо, чтобы не мешать, беседую с приятелем. Вдруг наступает тишина. Ну, думаю, сдался парниша. Поворачиваюсь к нему. А у товарища глаза - квадратные! - Сколько,- говорит,- эта клава стоит? - 30, - хотя отдал за нее 10, но новая она и правда когда-то была даже 40. - Завтра же возьму! За такую клаву не жалко и 130! - Да зачем тебе? Тяжело ведь, я же вижу. - Зато я на ней без ошибок набираю.