Год назад писал тестовое задание для %companyname%. Задание было несложное: отображение дерева элементов из базы данных с использованием AJAX.
Сел ночью, написал, прикрепил резюме и отправил. В обед проснулся, сел за ноутбук - перед глазами исходный код.
alert ('Процесс секса JS,PHP и MySQL начат. Скоро будет новый бэби'); var child_name = prompt('Как Вы желаете назвать малыша?', 'Имя ребенка');
В шоке стучусь в аську менеджеру HR, та переправляет на тимлидера программистов. Извиняюсь перед ним, прошу посмотреть новую версию скрипта, а ту вообще выкинуть.
В ответ: Все нормально, чувак! Даже если с тобой не подпишут контракт - мы тебя не забудем. Давно так не ржали!
С тех пор подобные заглушки не пишу, чего и вам настоятельно желаю.
Позвал меня молодой товарищ - не компилится в Borlanc C++ Builder новый проект со старыми файлами. Модули исправные - только что сам компилировал.
При попытки компиляции в новом проекте даёт ошибку в глубинах wtypes.h, на строку LONGLONG int64;
Долгая медитация вывела на потрясающей по своей глубине строчку, гласящую #define __int64 int64. LONGLONG, понятное дело, где-то в wtypes определён. А wtypes совсем не в курсе, что есть на свете извращенцы, которые переопределяют int64, да ещё и таким суровым образом.
В результате сейчас юный гений сидит и мрачно делает автозамену строк вида "([\(\s])(u)?int(\d{1,2}) " -> "$1(unsigned) __int$3 ", так как в его творениях мы нашли и int8, и int16, переопределенные таким образом.
А виновник торжества сидит и с наивным видом оправдывается - "ну я ж не знал", "ну это ж было для другого писано", "и ваще, чо вы от меня хотите", "я не знал, что __intXX - стандартная конструкция" и так далее. Так что я совсем не удивлюсь, если мы реально обнаружим #define TRUE FALSE где-нибудь в глубинах его кода.
В общем, в офисе всегда должно быть две линейки - деревянная для обычных глупых ошибок и железная для подобных творений нечеловеческого гения. По пальцам больно бить.
Стучится товарищ в асю - помоги, просит, с функцией на php. Кидает код. Смотрю, забыл передать нужную переменную, о чем ему и сообщаю.
Я: Ты забыл $num передать. Товарищ: Может мне через fopen все сделать? Я: Можно, конечно. Но лучше все-таки $num передать. Товарищ: Ну, можно и так, да...
... a=a; b=b; ... Видимо это было напоминание программе, чтобы точно не забыла...
Шутки шутками, а в SharePoint некоторым контролам действительно нужно напоминать их значения, иначе они обнуляются. В результате появляются подобные строчки:
dtc1.SelectedDate = dtc1.SelectedDate; // так надо :( dtc2.SelectedDate = dtc2.SelectedDate; // не трогать, сломаю руку dtc3.SelectedDate = dtc3.SelectedDate; // по другому работает некорректно dtc4.SelectedDate = dtc4.SelectedDate; // обожаю SharePoint
В нашем баг-треккере занесено 39.998 багов. Сейчас все двенадцать человек сидят и ждут, когда кто-нибудь запостит один баг, чтобы потом внести свой, 40.000-й. Работа стоит.
В середине 90-х я и мой друг писали игры для Спектрума на ассемблере. Я создавал всю графику и писал интро, а мой головастый друг занимался исключительно кодом.
Спустя какое-то время моему другу понадобилось написать маленькую демку за один день. Утром он попросил меня придумать с десяток спрайтов и вечером ему принести, пока он, чтобы не терять время, скопирует куски кода из нашей второй по счёту игры (скроллинг-аркада, наподопие Zynapse, с момента её выпуска прошло где-то года полтора).
Вечером я приношу ему дискету со спрайтами и застаю своего друга чуть ли не в слезах. Я: Что случилось? Друг: Пришлось всё переписывать с нуля. Я: Почему? Друг: Я не понимаю, как этот бред сивой кобылы вообще может работать!
Ну что ж. Прошло полтора года, взгляды на программирование немного поменялись.
/** The Constant NUMBER_3. */ public static final int NUMBER_3 = 3; /** The Constant NUMBER_4. */ public static final int NUMBER_4 = 4; /** The Constant NUMBER_5. */ public static final int NUMBER_5 = 5; /** The Constant NUMBER_6. */ public static final int NUMBER_6 = 6; /** The Constant NUMBER_6. */ public static final int NUMBER_7 = 7;
Индийский код, индийский код. Иногда бывает так заработаешься, что любому индусу фору дашь. Безо всякого злого умысла.
Модуль. Переписанный уже, наверное, раз двадцать, причем разными людьми. Заказчик выставляет новые требования. Лезу внутрь, переписывать куски в двадцать первый раз. После чего долго медитирую на фрагмент:
... a=a; b=b; ...
Видимо это было напоминание программе, чтобы точно не забыла...