— Имярек слушает. — Здравствуйте, я такой-то, представляю фирму такую-то. Я нашёл ваше объявление на фриланс-сайте. У нас есть работа по вашему профилю. Скажите, каков будет порядок её выполнения?
Немного подвисаю. Какой такой порядок? Нахожусь с ответом:
— Порядок будет очень прост: вы излагаете задание, я его выполняю, вы платите мне деньги.
Последовала краткая пауза, видимо, понадобившаяся собеседнику для переваривания этого перла программистской мудрости. Затем потенциальный заказчик рассмеялся, и разговор пошёл уже о конкретных деталях предполагаемой работы.
Моя работа состоит в тестировании программ для научных исследований. Когда аврал, сроки горят, половина отдела ушла в декрет, и ты скачешь с программы на программу — довольно интересно. Но перед плановым минорным релизом гонять одно и то же по восьмому кругу весьма скучно.
Тыкаю в менюшки очередной бета-версии. В меню надо указать атом или группировку атомов, а программа должна проанализировать спектрограмму и найти все вхождения. Набираю водород «H». Находит. Набираю углерод-водородную связь «CH» — находит водород. Набираю один углерод «C» — опять находит водород! Перезапускаю программу — снова ищет водород для всех вводимых группировок. Это уже тянет на критическую ошибку и существенную премию в конце месяца.
Проверяю предыдущий релиз — та же хрень. Проверяю две мажорные версии. В них диалоги выглядят коряво, но работают нормально — значит, поломали несколько месяцев назад. Сажусь за багрепорт. Подробно всё описываю. При этом замечаю, что когда перечисляю группировки, на которых глючит, на углероде язык сам собой переключается с английского на русский. Мелькает страшная догадка...
Отключаю Punto Switcher, проверяю. Если во вводимой формуле есть русские буквы, программа её игнорирует и работает с предыдущей введённой, а с «нормальным» углеродом ищет хорошо. Прощай, премия...
Потерял полчаса, зато обеспечил себе хорошее настроение до конца дня.
Написал форму с иерархическим деревом. Процедура, формирующая дерево, называется BuildTree. Кроме того, есть функция AddChild. Думаю, куда бы присобачить функцию GrowHouse, чтобы состояться как мужчина.
Был как-то у меня такой предмет в универе — «Архитектура ЭОМ». Смысл заключался в изучении ассемблера. Весь семестр я (как, впрочем, почти все) ничего не делал. Подошла зачётная неделя, и надо было сдать хотя бы пару лаб. Решил я обзавестись компилятором (вернее, интерпретатором) ассемблера и полез поискать в сеть. Быстро нашел нужное ПО, скачал и приступил, так сказать, к работе.
Так как ассемблер на протяжении семестра изучался мною не очень усердно, решил я почитать примеры. Пролистнув пару заумных программ по сто-пятьсот строчек каждая, остановился на одной короткой. Чтобы узнать, что данный код делает, запустил прилагающийся экзешник. На экране появилось окно с кнопками «Да» и «Нет». Машинально жму «Да», инстинктивно полагая, что другой вариант завершит прогу. Окошко закрылось, и через секунду из системника вылез привод. Смысл проги я понял, однако стало интересно, что же за текст был в сообщении — ничего вроде «CD-ROM» я там не заметил. Повторно запускаю программу, на этот раз не спеша щёлкать по кнопкам.
«Нужно дополнительное место для пива?» — вопрошала по-английски программа. Да, прислушиваются программисты к потребностям простых людей!
Спасибо незнакомым добрым людям, Что в сей угрюмый копирайта век Исходников рабочих не жалеют, Спасая от провала мой проект.
Спасибо вам, коллеги-программисты, Всем тем, кто тоже за открытый код. Без вас нам, молодым специалистам, Значительно б прибавилось забот.
Спасибо тем «компьютерным поэтам», Кому нетрудно комментарии вписать. Что код работает — спасибо и на этом, Но так ещё ведь можно и понять,
Прочесть, обдумать, вникнуть, научиться, Ваш программистский опыт перенять, И с ним ещё быстрее развиваться, И что-то новое, полезное создать.
Мы, программисты — творческие люди. Творец творца всегда поддержит и поймёт. Давайте ж помогать друг другу будем, Пусть будет он всегда — открытый код!
К девушкам из техподдержки провайдеров (как и к настройкам железа, ОС и программ) каждый находит свой подход. Кто-то упрощает, кто-то обвиняет (почему-то не свои кривые конечности), а кто-то взламывает, используя недокументированные возможности (по сути — знание основ или аппаратной части).
Примерный диалог с девушкой из техподдержки (с комментариями):
— Здравствуйте, это ваш абонент %companyname%. # reply с авторизацией Соедините, пожалуйста, с техническим специалистом. # запрос на redirect на нужный сервис
— Что у вас случилось? # отказ в redirect из-за запроса без комментария
— Проблемы с интернетом на вашей стороне. Соедините, пожалуйста, с техническим специалистом. # повтор запроса на redirect на нужный сервис с комментарием в начале
— Что у вас случилось? # отказ в redirect из-за несоответствия комментария шаблону. шаблонная схема, значит, буфер ограничен
— У нас не пингуется ничего дальше вашего третьего хопа по данным traceroute. # пакет с данными, содержащий ссылки на внешние источники информации
С технарём быстро выясняем, что один из их маршрутизаторов барахлит. Интернет появляется через пять минут. Через три подобных звонка у девушек выработался новый шаблон: переключают по первому требованию.
Заказчик письменно наехал из-за не появивишегося в репорте сервера «обязательного тега», значение для которого... не предоставила программа заказчика. Поле пусто, потому что пусто (генератор так решил), но тег-то обязателен — выньте да положьте. Отфутболили подачу к аналитикам. Полученный ответ заставил разработчиков где-то даже почувствовать себя отмщёнными: «При отсутствии во входных данных нужного значения ставить строковое значение „N/A“». Тут и спокойное «на, возьми», и ехидное «накося, выкуси», да и направление просматриватся тоже достаточно чёткое.
Дело было давненько, в конце восьмидесятых — начале девяностых. Кто помнит те времена, тот знает, что основой для работы на ЕСках были «простыни» — программные листинги, которые анализировали с целью поиска ошибок, а потом вносили в них правки.
Договорились мы компанией коллег «отметиться» на моей загородной даче. По ходу встречи у кого-то возникла потребность выйти до ветру. Во дворе у меня находился туалет типа «сортир», где в качестве необходимого аксессуара на гвоздике висел один из тех самых листингов. Отметившись, приятель садится за стол, с ходу заявляет: «Знаешь, а у тебя в программе там-то написано некорректно, я бы этот фрагмент сделал так...» — и тут же пишет на салфетке программный код.
1999 год, лето, утро. Я, молодой специалист, пишу прогу для микроконтроллера. После ассемблирования и линковки объем BIN-файла получается 666 байт. Заливаю. Не работает. Курю документацию, смотрю в код.
Вечер. От мануалов болит голова. Когда закрываю глаза, на тёмном фоне проступают белые mov и jmp, они гоняются друг за дружкой и пытаются укусить меня за нос. Контроллер не работает.
Утро следующего дня. Усмирив гордость, подхожу к старшему коллеге. Он программирует не головным, а спинным мозгом, в любом состоянии и... в общем, я за четыре года не видел его не программирующим.
— Не работает! — сказал я. — Паца-а-ан! — сказал Программист. — Сам дурак, — подумал я и пошёл к себе, напутствованный покровительственным «через полчасика зайди, я щас кофе допью и сделаю».
Обед, я у Программиста. У него бегающий взгляд и пепельница, наполовину забитая окурками.
— Попозже зайди — буркнул программист. — А-а-а, б#я! — подумал я и удалился.
Вечер, я снова у Программиста. Ряды пепельниц пополнились: их теперь две, обе полные. В кофейной чашке плавает окурок. Волосы на голове у гуру стали каждый жить своей жизнью, теперь они напоминают развевающийся на ветру куст.
— Завтра зайди! — рыкнул Величайший. — У-у-у, б#я! — подумал я и пошёл домой.
День третий, утро. Я у Программиста. Он, похоже, не спал. Глаза красные и какие-то шальные.
— @#$ %&*#@! #%$#@$#@!!! — сказал Величайший.
Я забрал макет. Я впал в когнитивный диссонанс. Я зашёл к себе, выкурил подряд две сигареты, дописал в конце проги одну-единственную команду nop. Прога стала весить 667 байт.
Ассемблер. Линковщик. Программатор. Макет. Питание на борту. Всё работает.
А вы говорите: материализм, материализм... Фигня ваш материализм, коллеги!