Хочу поведать вам, как я однажды сдавал экзамен по предмету «Алгоритмы». Точное название не помню, но суть в том, чтобы на бумаге изобразить блок-схему компьютерной программы со всеми её циклами и условиями.
Так как времени у меня было достаточно, то я приготовился основательнейшим образом: нарисовал блок-схему и вылизал её во всех смыслах, кроме самого прямого. Получилась идеально-оптимальная: ничего не выбросить, ничего не добавить. Несу её к преподу — ну, думаю, сейчас похвалит... Ага, держи карман шире, а сумку нараспашку! Я получаю «неуд», меня обзывают всеми возможными непечатными словами, а две девочки, которые на парах были всего несколько раз, становятся «талантами и самородками». А всё потому, что схема у меня очень большая.
Переписываю ещё раз. На этот раз не расписываю подробно, как, когда и что происходит в циклах, а даю два «намёка» в начале и конце. Препод говорит: «Уже лучше, но всё равно фигово. Перепиши нормально, тогда поставлю». Ещё два дня мучаюсь, благо сроки позволяют.
Совершенно случайно при перечитывании конспекта (вдруг что-то упустил?) нахожу точно такую же блок-схему, как у меня, только в его исполнении. Переписал, пришёл, сдаю. «Всё равно очень коряво написано, но так и быть, поставлю — устал я уже от тебя». Ставит трояк и наблюдает сцену громового ржача! Видели бы вы его лицо после того, как я ему показал, чьих рук эта схема, и продемонстрирова две глупейшие ошибки.
В общем, отыгрался я знатно, а свидетелями его позора стали ещё два препода и моя группа в полном составе.
Работаю программером в крупной зарубежной компании. Наверное, у всех бывают моменты, когда ничего не работает так, как должно. Тот день я запомнил надолго.
Придя на работу, я обнаружил, что комп был перезагружен, чего за полгода не происходило ни разу. Это порушило метаданные IDE, и около часа я просто восстанавливал вчерашнее благополучие. Далее неприятностью обернулся первый же запрос в гугле — инет работал ну просто дико медленно. В общем, пришлось вначале крепко задумываться над верной формулировкой и долго ждать ответа. Дело не шло совсем. Свежий код не работал, показывая ошибки, как в анекдоте про деньги, жену и тумбочку: откуда — непонятно.
В дебаге время пролетело незаметно, и вот я уже сижу один во всём офисе. Голова работает плохо, баг никак не хочет обнаруживаться. В процессе редактирования файла нажимаю Ctrl+Z и вижу, что ничего не поменялось, а вылез диалог закрытия окна. Я уже ничему не удивляюсь, ищу кнопку Undo и щёлкаю мышкой. Чуть позже нажимаю Ctrl+W, а получается как раз Undo. Опытным путем выясняю, что работают клавиши теперь наоборот. Меня начинает разбирать нервный хохот. В общем, разум отказался далее воспринимать эту реальность, и я «поплыл» домой.
Следующий день был откровением — инет работал замечательно, проблема в программе была найдена за десять минут, а загадочное поведение Undo оказалось случайно включенной французской раскладкой.
Мне кажется, что необходимы серьезные исследования на тему «Биополе айтишника и его влияние на технику». Сам, будучи студентом на практике, замечал неоднократно описанный здесь феномен: при моём появлении начинали работать программы, компьютеры, принтеры и даже настенные часы с севшей два месяца назад батарейкой. Конечно, после ухода всё опять капризничало. Однако был замечен и другой эффект: «эффект стыдливости техники».
При пристальном наблюдении за торрентами скорость падала или внезапно отваливались все сиды.
Если я больше пяти минут смотрел на роутер, то он наглухо вис; если же не вспоминал о нём, работал без сбоев неделями.
При наблюдении за процессом нарезания в 80% случаев болванка запарывалась.
Под моим взглядом однажды остановился кулер на витринном десктопе в магазине. Хотя, может, дело было в китайской сборке.
Если только что написанная программа не компилируется — надо нажать на кнопку «Компилировать» и отвернуться. Иногда срабатывает.
Комп, собранный на открытом стенде, отказывается работать, выдавая невнятные ошибки. Стоит лишь засунуть его в корпус и прикрыть крышкой, как система заводится.
В общем, надо либо искоренять пуританскую мораль у компьютеров, либо учиться работать с техникой вслепую.
Всегда удивлялся тому, что среди программистов есть весьма ограниченные личности, не разбирающиеся ни в чём, кроме своей предметной области. Сегодня в очередной раз программист подвесил меня своим вопросом:
— Сколько в сантиметре пикселей?
Уважаемые программеры, хоть изредка отрывайте свой взор от экранов!
Ковырял сегодня модуль на PHP. Уже было собрался заканчивать, но вспомнил, что не дописал одну необходимую функцию. Полез снова в код, и так его крутил, и эдак — не работает, и всё тут!
Через некоторое время, когда я уже исправил всё, что только можно, меня это окончательно достало — решил заняться чем-нибудь другим и закрыл редактор кода. Взгляд упал на файловый менеджер, в котором, конечно же, была открыта директория с локальной копией файла, с которым я только что работал. Неудивительно, что на сайте изменения не отражались.
Когда же я скопировал изменённый локально файл на сервер, всё сразу заработало без отладки. Для исправления кода мне оказалось достаточно одного лишь факта, что он не работает. Вот такое, блин, программирование вслепую!
Сдача дипломного проекта — экспертной системы с функциями самообучения. Гриф «секретно». Пишется код в спецпомещении на спецкомпьютере, все материалы после работы упаковываются в чемодан, сдаваемый на спецхранение. Язык — Пролог, который во всем вузе знают ровно два человека, я и товарищ-студент. За неделю до защиты вирус сносит всю информацию с диска. Бэкапов нет — «секретно».
В срочном порядке методом копипаста генерируется листинг программы позаковыристей, рисуются блок-схемы, оформляется сопроводительная документация. Диплом спасён: все документы налицо, всё проштамповано и зарегистрировано в секретной части, защита подготовлена и отработана. А что программа не работает — так она же секретная, ей нельзя!
Учился я в техникуме на программиста. Курс тогда был то ли первый, то ли второй. Урок программирования на Паскале. Была у нас в группе светловолосая девушка Ира, которая, как и большинство, ни черта не понимала в программировании, но очень выпендривалась, наслушавшись своего парня-программиста. Ира спрашивает учителя:
— Почему мы ещё учим Паскаль, а не Делфи? Мой парень говорит, что мы должны уже изучать Делфи. — Твой парень программист? — Да. — Ну, а на каких языках он программирует? — В смысле? Ну... на русском, английском...
Только бедняжка Ира не поняла, над чем все хохочут.
Работаю городской компьютерной скорой помощью. Так вот, моя жена училась на программиста. За трое суток до сдачи диплома созналась, что программа не работает. Двое суток плясал с бубном — написал ей новую.
Диплом жена сдала на отлично. А её куратор (мы давно знакомы по работе) через час после этого позвонила и попросила в следующий раз писать код для студентов так, как они их учат. А это как, простите?
У нас эксплуатируется взрослая система радиосвязи от одного маститого европейского производителя. Так вот, у этой штуки, в программе управления абонентами есть две вкладки: «Permissions» (разрешения) и «Blocking» (запреты). Так вот, в «Permissions» установка галочки напротив того или иного пункта означает запрет абоненту пользоваться услугой, обозначенной в пункте, а на вкладке «Blocking» — наоборот.
Интеграторы заметили это дело поздно, когда система уже пошла в серию, а поэтому просто задокументировали: «Это не баг, это фича».
8 марта 2010
В этот совершенно не-айтишный праздник мы ни в коем случае не можем забыть о вас, любимые наши женщины! Счастья вам и бесперебойной работы вашим компьютерам!