[recovery mode] Несколько историй про подпольных программистов

Попал я однажды в организацию, занимающуюся организацией оффлайновых конференций. Им нужен был человек для поддержки сайта. Разговаривал со мной мужчина в пиждаке и при галстуке, представившийся начальником отдела продаж. От общих тем быстро перешли к техническим. Заглянули в код. Свой ORM, самописный шаблонизатор, немного устаревшие приёмы, но в принципе всё стройно, логично и однообразно. Я спросил, что стало с предыдущим программистом, на что собеседник рассказал мне историю.

Лет десять назад моего собеседника наняли на должность продажника. Чуть ли не в первую неделю работы он сломал ногу и сидел дома три месяца. Работать по специальности он не мог, но директор, зная что у моего собеседника инженерное образование, попросил наполнить контентом их сайт-визитку.

image

За три месяца тот сумел не только наполнить сайт контентом, но и создать простенькую систему управления конференциями. С напоминалками, расписанием и отзывами. Выйдя на работу, он продолжал поддерживать систему, самостоятельно заполняя её информацией о новых конференциях. Время приходилось урывать от основной работы, поэтому вскоре пришлось прикрутить учётные записи, чтобы коллеги сами поддерживали базу данных в актуальном состоянии. А там, где есть учётные записи для коллег, можно добавить и учётные записи посетителей.

Со временем он заметил, что стал проводить меньше времени на телефоне, а больше — за выборкой данных и за оформлением почтовых рассылок. Продажи организации росли, его личные — росли чуть больше, чем в среднем по организации. Да и не удивительно, ведь новые приёмы он реализовывал сперва на «своих» конференциях.

В какой-то момент посетители стали просить оплату через интернет, так что пришлось добавить и банковский процессинг. Бизнес подрос ещё, нашего продажника повысили до начальника отдела. Времени на «сайт» стало не хватать.

И тут он столкнулся с проблемой. Никто в организации не понимал масштабов, до которых разросся «сайт». Чтобы нанять человека для поддержки сайта, надо было раскрыть карты, а моему собеседнику это не хотелось, да и не факт, что его бы поняли. Поэтому он из бюджета своего отдела стал нанимать фрилансеров, чтобы решать текущие задачи. Так я туда и попал.

Работал я как-то над интеграцией тулзы под названием Microsoft BizTalk в одной полугосударственной организации. Организация получала регулярные дампы данных от партнёров: по почте, по ftp или даже на CD и должна была их интегририровать. Форматы данных регулярно менялись, партнёры тоже, да и не были они заинтересованы в обмене данными. Так что несколько аналитиков занимались тем, что в текстовом процессоре набивали таблички, что куда конвертировать надо, обсуждали на митингах, несли на подпись начальству, а потом давали реализовать контрактнику-программисту. Иногда случались ошибки, да и весь процесс был ненадёжный, а тут как раз Microsoft пришёл продавать BizTalk, да ещё обещал, что поскольку это будет чуть ли не первый в мире проект с BizTalk’ом, на него приедет посмотреть сам Билл Гейтс.

После реализации проекта аналитики должны были забросить старые документы, а весь процесс конвертации данных делать в BizTalk. Это называлось «пасти барашков меж двух деревьев». Между деревом исходных данных и деревом внутренней структуры данных протягивались мышкой линии, а где надо было данные подправить — ставились маленькие квадратики-функции, напоминающие барашков. В них можно было обрезать строку или сопопоставить один список кодов другому.

image

К сожалению, у этого интерфейса было несколько существенных ограничений. Например, если во входящих данных не было какого-то значения, подстановка значения по умолчанию была проблемой.

Как-то так получилось, что стоимость BizTalk’a и проекта по его интеграции вышла слишком большой, годовой бюджет трещал по швам. Кроме того, «пасти барашков» оказалось непросто. Недовольство росло. Контрактника решили уволить сразу же. Большинство аналитиков разбежались сами, а один научился хитрости. В BizTalk правила конвертации данных хранились в виде документов XSLT в базе данных. Это был даже не XSLT 1.0, а какой-то черновой вариант XSLT, который понимала одна-единственная с трудом добываемая версия библиотеки MSXML. Так вот наш аналитик, вместо того, чтобы «пасти барашков меж двух деревьев», научился выковыривать WD-XSLT из базы данных, дописывать его и засовывать обратно. Получалось быстрее и надёжнее, и был один важный бонус: некоторые существенные детали конвертации данных можно было скрыть из интерфейса и утаить от зоркого начальственного глаза.

А Билл Гейтс так и не приехал.

Был у меня товарищ бухгалтер. Не просто бухгалтер, а с кучей заморских сертификатов. И занимался он не товарными ведомостями, а консолидацией счетов для международных корпораций. И никто, кроме членов семьи и близких друзей не знал, что бухгалтер по ночам программировал сайты и игрался с поисковой оптимизацией. Дело было в конце 90-х и начале двухтысячных. Возможностей было много, рисков тоже. В интернете заработать у нашего бухгалтера не получилось. Но вдруг оказалось, что навыки, приобретённые ночью, можно вполне использовать и на основной работе. Ведь процесс консолидации заключается в регулярном сливании десятков, а то и сотен табличек с циферками по правилам, которые он в общем-то знал. За пару лет наш бухгалтер написал сотни подпрограмм на Visual Basic. Внезапно работа, которая раньше занимала месяц, стала выполняться за день. Через несколько лет он стал начальником отдела. А потом перешёл на должность CFO к конкурентам и поехал колесить по пятизвёздочным отелям в разных странах мира, как и положено по его нынешнему статусу и должности.

А какие у вас есть истории про подпольных программистов?

© Habrahabr.ru