Работала в одной фирме сисадмином. В одном из отделов собралась дивная коллекция блондинок всех оттенков, слегка разбавленная неизвестно как туда попавшей парой сотрудников мужского пола. Каждый раз, когда я заходила в этот «курятник», от щебетания юных дев уши сворачивались в трубочку, и мне становилось невыносимо стыдно за весь женский род и свою принадлежность к нему.
В один прекрасный день я не выдержала. Оторвавшись от настроек очередной «громоптицы», я громко и задумчиво вопросила: «Кто-нибудь знает, у канареек только самцы отличаются умом и сообразительностью или у самочек тоже можно развить какие-нибудь способности?»
Гробовая тишина пролилась бальзамом на мою израненную душу. Мужская часть коллектива тихо захихикала. Мозги блондинок я подвесила всерьез, но, кажется и до них в общих чертах дошло содержание сказанного. Вскоре, к моему большому облегчению, «птички» попросили к себе в отдел сисадмина-мальчика.
На днях пили пиво с другом. Он рассказывал о новом «звере», буйствующем в интернете, и о том, как героически несколько часов чистил от него компьютеры в одной конторе.
Прихожу домой, запускаю машину и вспоминаю рассказ друга. Все симптомы налицо: пустой рабочий стол, окола десятка процессов, включая подозрительный «explorere.exe». Непонятно, как ко мне эта зараза попала — антивирус и файрвол стоят, да и винда регулярно обновляется.
Со злости резко разворачиваюсь на крутящемся стуле и, не успев поджать ноги, со всей силы врубаю по системнику. Компьютер обиженно зависает и выдаёт синий экран смерти.
Перезагружаюсь. Винда докладывает об исправлении серьезной ошибки. Запускаю диспетчер — всё как надо, все 30 процессов захламлённого компа и настоящий Explorer. Осталось только дочистить хвосты.
Дедовские методы еще действуют — один сильный удар способен вправить мозги, выбив всю дурь!
В своей деятельности я придерживаюсь инженерного подхода, а не научного. Но вот сомнения стали одолевать...
Лет пять назад выпала мне халтурка — написать парсер не сильно прямого языка — объектно-ориентированного расширения SQL. Порекомендовали меня одной конторе, поскольку их штатный программер просидел над этим делом год, нарисовал много схем и, доказав, что это контекстно-зависимая и не LR грамматика, заявил, что быстро написать парсер — дело неподъемное.
Я не стал научно доказывать возможность или невозможность, выкинул ANTLR, взял старый добрый bison написал на коленке грамматику, добавил ручками переключение контекстов... Неделя работ. Остальные два месяца занимался стилем форматирования выходного файла.
А потом задумался. Штатный программер получил никак не меньше 15000 баксов, и работа осталась "неиспорченной". Такую работу можно было еще работать и работать. А я, как урод, решил проблему за жалкие 2 штуки. Ну и кто после этого дурак?
Привелось мне в начале девяностых работать в очень амбициозной творческой программерской команде. Интернет в эмбриональном состоянии, наработок и технологий кот наплакал. Наша звёздная команда (лингвисты-профессионалы, профессора и доктора наук, со словарями и опытом, при этом отличные программеры) разрабатывала систему русскоязычного полнотекстового поиска.
Вкратце о поиске с учётом морфологии: задача состоит в том, чтобы найти каждое слово из пользовательского запроса во всех формах, падежах и склонениях; к примеру, «иду», «идёшь» и «шли» — формы глагола «идти». Для этого при индексации страниц надо было привести каждое из встречающихся слов к основе. Сейчас это воспринимается как само собой разумеющееся, но в то время ни Гугла, ни Яндекса ещё не было.
Написали — пора отлаживать. Нужен текст приличного размера. Начало девяностых, начало Рунета, начало российской государственности; как результат, лучшим текстом, найденном в почти девственном отечественном кусочке интернета, оказалась свежеиспеченная Конституция РФ. Ура — запускаем!
По задумке движок должен выдать в алфавитном порядке список основ, встречающихся в предложенном тексте. Народ толпится у монитора, жадно вчитываясь в каждое очередное слово. Через несколько секунд раздаётся дружный хохот — в середине первой же страницы гордо красуется глагол «АДЫГЕТЬ». Прежде чем окончательно сползти под стол, на излёте успеваем заметить еще один не менее шедевральный глагол «АЛТАТЬ»...
Прозрение пришло быстро — всё-таки профессиональные лингвисты. Вспомнили классику типа «дочь генерала» (кто? — дочь, что делала? — генерала), а также географию великой российской империи — республики Адыгею и Алтай.
В общем, как писал известный сатирик Александр Иванов, «велик могучим русский языка». Адыгев от выкрутасов поискового движка, после работы всем коллективом мы отправились алтать.
Сижу как-то в чате, общаюсь с народом. Чат дико тормозит — естественно, я вслух выражаю свою досаду. Первое, что приходит на ум моим собеседникам — вирусы.
Я отрицаю наличие и вирусов, и антивирусной программы: «Линукс у меня, ребята».
В чате повисает небольшая пауза. Следующая же реплика сбивает меня с ног: «Ну, реестр почисть тогда, если не в вирусах дело». Повторяю, что я все-таки в Линуксе. Чат слегка молчит, а потом выдает гениальнейшую реплику: «Ну и что?»
Мои робкие попытки объяснить, в чём дело, натыкались на поток идиотских советов: «выключи программу Линукс», «установи антивирус в правильную папку», «обнови базу».
В конце концов мне пришлось сдержанно поблагодарить собеседников за «советы» и закрыть браузер — все мои логичные возражения воспринимались как капризы.
С того момента я больше никогда не жалуюсь своим собеседникам на трудности со своей машинкой, если нет уверенности в том, что меня поймут правильно.
Мы давно уже собираемся со знакомыми программистами: чайку попьём, поболтаем, программку вместе напишем. На очередную встречу один из наших прибегает с флешкой и кричит: «Народ, срочно надо программу доделать!»
Написать ему надо было физический симулятор каучукового попрыгунчика. На флешке уже была небольшая заготовка; все собрались, стали помогать, и через час наступило время тестирования.
Всё шло нормально, пока кто-то не решил запустить шарик так, чтобы он, отскочив от пола, ударился об угол. После столкновения попрыгунчик начинал как-то совершенно неестественно скакать на одном месте.
Начался кропотливый двухчасовой безуспешный дебаг. Мы были столь поглощены поиском ошибки, что даже не заметили, как застенчивый, новенький в нашей компании программист тихонько куда-то отошёл и вернулся с настоящим попрыгунчиком.
Оказалось, что мячик действительно скачет настолько странно. Словами не передать, как мы радовались! С тех пор запомнили крепко: физические процессы при возможности надо тестировать вживую.
Работаю в крупной компании-интеграторе. Приходит жалоба от серьёзного заказчика: «К нам пришел IP-телефон в пакетике с полопавшимися пузырьками. Это недопустимо, так как увеличивает риск повреждения оборудования при транспортировке. Просьба разобраться!»
Реагировать как-то надо — через пять минут получаю письмо от начальника, отправленное всем сотрудникам с копией заказчику: «Кто лопал пузырьки в пакетике? Просьба впредь исключить подобные ситуации».
Я человек не суеверный (что не мешает избегать переходящих дорогу черных пушистых существ), но старая шутка про крутость админа, измерямую расстоянием до него, с которого техника начинает работать исправно, похоже не лишена некоторой доли правды.
Стандартный звонок в офисе: «Не отправляется на печать документ». Утро понедельника — или забыли бумагу положить, или баба Дуся слишком активно махала тряпкой, выдернув кабель. Подхожу к кабинету, заглядываю: у вас не печатает?
Да, говорит девушка, гляди! Щёлкает мышкой, смотрит на принтер — тот послушно печатает. Наслаждаюсь видом красиво округлившихся глаз, пожимаю плечами, ухожу к себе.
Спустя какое-то время звонок из другого кабинета: «Уже пять минут пытаюсь отправить почту, не уходит!»
Понедельник — день тяжелый. Иду смотреть, как на этот раз умудрились сломать почтовый клиент. Подхожу к кабинету, навстречу вылетает сотрудница: «Всё ушло! Спасибо!»
Смех смехом, но с того случая 90% вопросов решаются либо пятиминутным ожиданием, либо (после повторного звонка) словами «сейчас зайду». Не знаю, что на меня нашло, но главное, чтобы оно длилось как можно дольше!
Серьёзный космический проект. Интегрируется система дифференциальных уравнений движения спутника. С точки зрения программеров — примитивное консольное приложение, которое периодически выводит в левый верхний угол экрана время, в течение которого летает спутник, и его координаты. Все данные мы сверяем с аналогичной программой, созданной в другом институте — так сказать, проверяем друг друга на вшивость.
Всё бы хорошо, но время от времени спутник «прыгает назад» во времени часов на двенадцать. При этом в каждый момент времени он по нашим расчётам находится там, где и должен быть — вроде как ошибок нет.
Однако временные скачки напрягают, и после изучения кода я таки нахожу баг — даже и не баг, а глупую опечатку. Исправляю, запускаю прогноз движения... и спутник «улетает» со свехсветовой скоростью за пределы галактики!
Восстанавливать старый код смысла нет. Продолжаю поиски и через час нахожу второй баг, который полностью компенсирует влияние первого. Между двумя ошибками и стоял оператор вывода информации на экран.
С тех пор я помню: при отладке программер, как правило, наблюдает сложный результат интерференции нескольких багов и исправление одного из них не всегда меняет ситуацию в лучшую сторону.