Добавить комментарий

Правильно или вовремя? - небольшой писк души

Во время беседы с одним работником из моей команды, я еще раз задумался о некоем спектре. На одном конце его находятся личности типы Дымова, которые, если программа крашится под Borland, переходили на VC++ и наоборот. Такие люди не смущаются вставить уродливые подпорки "чтобы работало". Такие люди плохо работаю в длинных проектах, слишком много энтропии они вносят в код. Зато если надо кровь из носу сделать так, чтобы работало здесь и сейчас к 4 часам - они лучше всех

На другом конце спектра находятся люди, которые считают, что все должно быть "идеологически правильно". Они против создания абы чего, но быстро. Они хорошо работают в длинных проектах, но разговаривать с ними - часто сущее мучение.

Вот вчера. Задача. Ищутся соответствия записей в базе клиента и базе нашей. Клиент данные давать не хочет. Придется ему давать нашу базу. Но ее тоже давать не хочется. Я (ближе к "дымному" концу спектра), быстро ваяю извращенное решение. Обфускированная аппликация .Net держит в себе все скрипты. База дается клиенту бэкапом с зашифрованными колонками. Они расшифровываются в таблицы tempdb в транзакции (в SQL 2005 их не прочитать совсем из другой коннекции) и уже с ними делаются JOINS. Потом отчет записывается, а транзакция откатывается. Да, сама аппликация защищается от профайлирования добавкой and ''=left(pwdencrypt(''),0) во все квери

Все можно сбацать за две недельки max. Клиент доволен. Сотрудник (снисходительно):
- Это плохое решение. Есть же стандартные методы решения таких задач. зачем изобретать велосипед
Я: ну так подскажи
Он: надо все переписать на .Net
Я: (падаю под стол) Год работы??? Это все существует в виде скриптов.
Он: Ну а что?
Я: (хочу перенести спор из идеологического в прагматическое русло) Клиент ждет результата в сентябре!
Он: Ну тогда можно давать базы шифрованную в виде DLL в SQL Express Edition
Я: Там ограничение на 1 процессор и 1Gb оперативки
Он: ну и что
Я: Express работает с базами до 4Gb. А там базы от 100Gb
Он: Ну тогда все таки надо делать на .Net
Я: В адресном пространстве 32bit машины, ограниченной 2Gb?
Он: Ну выгрузку какую нибудь сделать
Я: Сравнение 2M записей с одной стороны и 40M с другой дает такое число комбинаций, что перебирая по 10Mln комбинаций в секунду, сравнение будет идти 63 дня. Без hash join не обойтись. Ты же не собираешься писать hash join сам и "изобретать велоспед"?
И тут он меня убил окончательно
- 63 дня? А клиент ведь до этого ни разу отчет не запускал? Ну так он и не будет знать, сколько он идет

Вот я теперь думаю, уволить его или оставить, чтобы он облагораживающе действовал на меня с идеологической стороны?

А вообще вспомнился анекдот:

Жили-были мыши и все их обижали. Как-то пошли они к мудрому филину и говорят:
- Мудрый филин, помоги советом. Все нас обижают, коты разные, совы.
Что нам делать?
Филин подумал и говорит:
- А вы станьте ёжиками. У ёжиков иголки, их никто не обижает.
Мыши обрадовались и побежали домой. Но по дороге одна мышка сказала:
- Как же мы станем ёжиками? - и все побежали обратно, чтобы задать этот вопрос мудрому филину.
Прибежав, они спросили:
- Мудрый филин, а как же мы станем ёжиками?
И ответил филин:
- Ребята, вы меня ерундой не грузите. Я стратегией занимаюсь.