В 2002 году я работал автоматизатором в городском отделении пенсионного фонда. Где-то в апреле пришла из Москвы БД с данными пенсионеров-участников войны с графической оболочкой на Visual FoxPro. Задача: открыть в одном окне эту оболочку, в другом — нашу пенсионную базу и сверить данные по всем имеющимся пенсионерам: ФИО, адрес и ещё около тридцати пунктов.
Трудность в том, что пенсионеров в базе несколько тысяч, а интерфейс оболочки был написан в каком-то особо извращённом стиле. За давностью лет подробностей не помню, но для просмотра параметров нужно было нажать правую кнопку на фамилии, потом клавиш 5 на клавиатуре, а для перехода к следующему полю ещё какой-то хитрый аккорд.
Посмотрев на этот кошмар, я понял, что задача проста: надо лишь вытащить из нашей основной БД (благо, тоже написанной на FoxPro) необходимые данные по этим пенсионерам и поместить их в столичную базу. За пару часов пишу программку, дампящую из одной базы нужные поля и заливающие их в другую. Через двадцать минут, когда винчестер перестаёт шуршать, открываю московскую оболочку — всё отлично!
Отдаю работу начальству со словами: «Давайте остальным отделениям мой скрипт отправим, чего они зря мучаться будут?» В ответ получаю гневную тираду о том, чтобы и мыслей таких не было — ни в коем случае нельзя никому рассказывать о том, как у нас всё быстро получилось.
Потом я расспросил коллег из соседних отделений, как они справились с этой задачей. Все, кроме меня, стали строго следовать инструкциям Москвы и, потратив количество времени, прямо пропорциональное объёму БД, всё сделали вручную. В отделении с примерно нашим количеством пенсионеров работала пара айтишников: один смотрел в одну базу и читал записи вслух, другой сравнивал со второй базой и впечатывал отличия. Ушло у ребят на это две недели.
В техническом вузе я не обучался, зато с детства был весьма любознательным и любил заниматься интернет-самообразованием.
Пришел вчера устраиваться на работу к оператору мобильной связи на должность продавца-консультанта, понимая, что на большее у меня знаний не хватит. HR начинает меня расспрашивать, что такое GSM и чем он отличается от CDMA и HSDPA. Понимаю, что вопросы правильные — работодатель хочет знать, что я смогу рассказать клиенту при продаже.
Вскоре чувствую, что разговор начинает приобретать всё больший и больший уклон в технические аспекты. Собеседование затягивается, мои теоретические знания подходят к концу. Гонял он меня так минут сорок, последней темой к моему превеликому ужасу было объектно-ориентированное программирование, в котором я, мягко говоря, не очень силён.
Вышел я из кабинета мокрый, руки тряслись. Собеседовавший меня мужчина сказал, что мне перезвонят, и я без особой надежды поехал домой.
Оказалось, что общался я с заместителем главного инженера, а HR — его девушка, которую он на время подменял. Сижу сейчас в техническом отделе с кучей книг на столе на «дообучении», как говорят мои преподаватели. Больше всего меня пугают будущие экзамены — тут коробка конфет и коньяк уж точно не прокатят.
Работаю в техподдержке конторы по продаже софта. Звонит клиентка, которой недавно продали и установили винду, и почти в слезах просит приехать. Напоминаю, что вызов специалиста по негарантийным случаям платный, и пытаюсь выяснить, в чём дело.
Оказалось, женщина не может зайти на сайт знакомств, получая сообщение о неверном логине/пароле. Ехать пришлось бы через весь город, да и деньги за такие вещи брать стыдно, поэтому пробую объяснить по телефону, что надо ввести логин и пароль заново.
Минут через 15 выясняется, что пароль ей продиктовала по телефону дочка и точность совсем не гарантируется. Чуто позже всё-таки удаётся отправить запрос на восстановление пароля. Заходим на почту, но там письмо от сайта с битой кодировкой. Кое-как выясняю, что за браузер, чтобы сменить кодировку, но тут у женщины от пережитого шока и обилия «научных» терминов начинается ступор — дальше ничего добиться не удаётся, клиентка просит приехать спеца за любые деньги.
Почти отчаявшись решить вопрос удалённо, всё-таки вытягиваю с её помощью из Файрфокса (спасибо технику, что не оставил стандартного «осла») логин и пароль на почту, сам восстанавливаю пароль на сайте знакомств и меняю его на относительно простой цифровой, после чего диктую всё это клиентке. Та заходит на желанный сайт, и, похоже, от радости готова чуть ли не расцеловать меня по телефону. Обещала заехать в офис и привезти коробку конфет за помощь.
Операторы техподдержки, будьте вежливы и терпеливы. В мире ещё так много людей, для которых компьютер — необъяснимое чудо, а не кусок железа с набором программ.
Долгое время искал программу-«антивор» для коммуникатора. Нашел три-четыре подходящих, но все они, к моему сожалению, умели связываться с внешним миром только путём отправки СМС. Об A-GPS программы тоже не слышали, поэтому время нахождения координат было неприлично большим. Короче, практической пользы в программах не было — так, игрушки.
Ну что же, разве мы не кодеры? Напишем свой антивор, «с блекджеком и шлюхами».
Заседание совета проходило у друга дома. К трём утра прога была работоспособна — естественно, с зачаточным интерфейсом и без «свистелок». Наш «антивор» без проблем цеплял IMSI сим-карты, через виндовый GPS-интерфейс за 30–40 секунд находил координаты и рапортовал по джаббер-протоколу.
Сразу после компиляции первой работающей версии у нас кончились сигареты. Друг отправился в палатку и по пути домой наткнулся на двух гопников. Чёрт его дернул на автомате сказать «не курю» — удар в спину, встреча с асфальтом и осознание того, что новенький коммуникатор удаляется в неизвестном направлении.
Стоп, почему в неизвестном? Вот он, долгожданный бета-тест!
Очухавшийся друг добрался до дома, когда я уже подтвердил получение координат — девайс сбыли крайне оперативно. Через час хулиганы вместе со скупщиком сидели в весьма помятом виде в обезьяннике.
Решил перенести комп в другую комнату. Длины сетевого кабеля не хватило — зашли с другом в магазин за витухой. Встретил нас прилизанный, чисто выбритый мальчик-консультант:
— У вас есть УТПшка? — Что-что? — Витая пара. — Что это? — (в шоке) Сетевой кабель. Для интернета, понимаете? — (со вздохом облегчения) Так и говорите! Вот, держите.
Мальчик протягивает нам USB-удлинитель. Сдерживая хохот, выходим из магазина и заходим в соседний. Диалог вышел покороче:
— У вас есть витая пара? — Нет, впервые про такую фирму слышу.
Отправились на рынок. После 5 минут поисков нашли подходящую лавку. За прилавком сидела неопрятная базарная тётка и изысканно ругалась с кем-то по телефону. Деваться было некуда:
— Витая пара есть? — Ага, вам сколько? — Десять метров. А коннекторы? — RJ-45? Рубль пятьдесят штука. — А переходник «мама-мама»? — (ещё более неопрятному парню) Коля-я-ян! У тебя переходники для витой пары остааались? Да? Давай один!
Обрадовавшись такому успеху, я расплатился с тёткой. Только отошли, как она окликает нас: «Парни, а обжать не надо-о?»
Уважаемые сисадмины и прочий народ, имеющий дело с железом!
Я прочитал тут много историй о том, как аппаратуру приходилось по разным причинам в срочном порядке приводить в некондиционное состояние. Каждый раз моё сердце обливается кровью, ведь у всех девайсов есть душа. Железки не заслуживают такой жестокой казни, как погружение в воду, избиение молотком или облучение микроволнами. Умоляю всех, кому по той или иной причине потребуется поломать что-нибудь для списания — вытащите перемычку, шлейф или в крайнем случае перережьте провод в очевидном месте.
Если усыпить девайс нежно и аккуратно, он не умрёт, а впадёт в кому, и душа его останется в корпусе. Даже если это последний хлам, возможно, где-нибудь найдётся добрый самаритянин, готовый вернуть его к жизни...
Меня всегда удивляло, что код комментируют так сухо и бездушно. Привожу пример моих комментов одной VBA-процедуры, написанных в разные моменты времени:
Первая версия:
/* Сделано через жопу. Прошу прощения у того, кто будет дорабатывать — меня заставили сделать именно так. */
Исправленная версия:
/* Cобрался с силами и исправил код так, чтобы он выглядел более логичным и читаемым. Концептуально он остался жопой, но теперь стал больше похож на аппетитную женскую попку, чем на суровую мужицкую задницу. */
Комментирование — занятие крайне интересное и творческое. Сделайте немного интереснее жизнь человеку, которому придётся потом разбираться в вашем коде!
В своей деятельности я придерживаюсь инженерного подхода, а не научного. Но вот сомнения стали одолевать...
Лет пять назад выпала мне халтурка — написать парсер не сильно прямого языка — объектно-ориентированного расширения SQL. Порекомендовали меня одной конторе, поскольку их штатный программер просидел над этим делом год, нарисовал много схем и, доказав, что это контекстно-зависимая и не LR грамматика, заявил, что быстро написать парсер — дело неподъемное.
Я не стал научно доказывать возможность или невозможность, выкинул ANTLR, взял старый добрый bison написал на коленке грамматику, добавил ручками переключение контекстов... Неделя работ. Остальные два месяца занимался стилем форматирования выходного файла.
А потом задумался. Штатный программер получил никак не меньше 15000 баксов, и работа осталась "неиспорченной". Такую работу можно было еще работать и работать. А я, как урод, решил проблему за жалкие 2 штуки. Ну и кто после этого дурак?
Есть у нас один старый сервак, единственное обслуживание которого долгие годы заключалось в чистке сжатым воздухом и пылесосом. Недавно понадобилось сделать апгрейд системы объектного дистанционного контроля, которой и заведовал этот сервер. Как водится, пароль к нему за давностью лет забыли почти все, кроме одного парня — в армии шифровальщиком был. Звоним, спрашиваем:
— Привет! Дело срочное! Пароль на Жужу (имя сервера) помнишь? — (моментально) 3520485254. — Спасибо!.. (Минутная пауза). Слушай, что за число знакомое? — Количество экспы на 99 уровне в Diablo II.