Skip navigation.
Home

История одного расследования.

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

Итак суть:

прибегает клиент, жалуется на ошибку. Ошибка выглядит следующим образом: когда формируешь заказ и вводишь данные заказчика, система матерится на почтовый код клиента.

Традиционно неизвестно, что делал клиент для достижения результата. Более того, если даже поставить всю семью клиента у расстрельной стены и сказать, что либо он сообщит, как именно он добился такого результата, либо сейчас будет штабель невинно убиенных, то даже в этом случае максимум, что можно получить, это: "Я нажал, а оно само". Ситуация осложняется тем, что с клиента невозможно получить лог приложения. Cовсем невозможно.

Хорошо, хоть есть скриншот проблемы, но это помогает мало: проблема с "живыми" данными, на рабочей базе данных клиента, и я буду последним, кто захочет экспериментировать с живой базой: за такое в случае сбоя к расстрельной стенке уже поставят меня, причем даже попрощаться с родней не дадут.

Имитирую ситуацию создания заказа на своей стороне. Все великолепно работает. Второй раз. Третий. Проходит заказ, нормально жрет система почтовый код. Систему, как помнит постоянный читатель, мы дописываем и реанимируем за группой гениальных рукожопов, которые слили нам код без комментариев, документации и прочих сопутствующих мелочей. НАСКОЛЬКО код проблемен, могу проиллюстрировать всего одним примером:

Отчет о продажах можно (опционально) рассылать по списку электронных адресов. Но. Если этот список пуст, то в коде жестко забито, что все равно надо отсылать отчеты на определенный адрес, написанный прямо в коде, что-то вроде "abs@xxx.com". Кто живет под этим адресом, почему ему надо отсылать отчеты, причем именно в случае, когда отчеты послылать некому, гениальные рукожопы так и не сообщили. С этого адреса никто живой не отвечает. И такого там - мегабайты.

Так вот, клиент ответ дать не может, хоть и очень хочет, группа рукожопов, формально все еще передающая проект нашей команде (в реальности они жрут кофе ведрами и курят у входа в контору) ответ дать не может и не хочет, а у нас нет способов заставить их дать такой ответ.

Начинаем археологические изыскания, причем в традиционном для нашего бизнеса стиле. Как, вы не знаете этого анекдота? Ну так я вам его расскажу:

- Первое место на соревнованиях по сборке и разборке автомобильного двигателя на скорость получил Джон Смит. После вручения призов с Джоном беседует корреспондент "Вестника Аризоны":

- Джон, скажите, как вы пришли к успеху?
- Годы упорных тренировок, изучения мануалов, отточенное владение инструментом с завязанными глазами.
- Джон, зрители очень интересуются, а почему вы разбирали двигатель через выхлопную трубу?
- Понимаете, когда-то я был проктологом, но решил сменить специализацию, а привычки остались...

Для того, чтобы проект заработал, надо запустить пять приложений. (это не считая базы данных и еще поддержки всякого стороннего добра типа адаптера к SAP и MQ). Запускаем тотальный поиск фразы "is wrong". Вываливается нам всего ничего, каких-то пять сотен файлов.

Расследование показывает, что ни один из случаев не подходит к моей ситуации. Снова лезу в код. Нахожу стыдливый, никем не комментированный вызов удаленного интерфейса, который принадлежит не нам. И вот там вот, в глубокой, сияющей дали (читай: еще оном приложении писанном все теми же бабуинами) оказывается, есть логика проверки, может ли такой-то почтовый код относиться к такому-то городу такой-то страны. Нам это поставляется как черный ящик, и писать какую-то развернутую диагностику оно не умеет, причем для того, чтобы мы меньше морочились, черный ящик, поставленный именно нам, всегда согласен с любыми введенными в него данными (реальный черный ящик имеет логику). Так ведь веселее, согласитесь.

Резюме: закачик обнаружил баг, скинул его на нас по принципу "на кого бог пошлет". Стоимость выяснения того факта, что баг не по нашей части, обошлась заказчику только прямых расходов на примерно тысячу евро. И вот так оно минимум пару раз в неделю.

Вспоминаю, как мы писали кредитную систему для крупного банка. В обед я как-то в шутку сказал коллегам:

- Мужики, а давайте в код вставим, что проценты по кредиту, если фамилии и имена аппликантов совпадают с нашими, должны быть ниже обычных раз так в десять?

Самый старый из нас посмотрел на меня, поднял бровь, и сказал:

- Алекс, знаешь, я не думаю, что найдут.
- Слушай, а может, сделаем тогда отрицательные проценты по кредиту, чтобы еще банк нам и должен был?
- Это мысль....

Отвечаю обоим

Отвечаю обоим комментаторам выше:

Для меня нет никаких проблем медитировать (или мастурбировать, кто как это видит) за клиентский счет. Вообще без вопросов. Я лишь демонстрировал организацию труда. Уровень оной.

Я, кстати,

Я, кстати, плюсую предыдущего оратора. Собственно, в чем проблема, кроме того что "разобраться в мудацком коде сложно"? Я, лично, сижу на проекте где кучу моих человеко-часов бросают на утопичные мечты или на бредовые идеи. Для меня это, в каком-то смысле челлендж, а в каком-то расслабуха. При этом я не напоминаю клиенту о моем ценнике, а просто делаю свою работу. Тому мальчику, который тебе слал баг-репорт, ему ведь на самом деле пофиг сколько там ты стоишь. Он отчитывается в форме:

Была найдена проблема Х.
Был направлен запрос в отдел Y человеку Z.
Проблема устранена.

Все танцуют. То что бюджет на это ушел - так он на то и бюджет. Им ведь "потратить бюджет" тоже важно, так как если отдел, к концу года остается с шапкой бюджета сверху - попросить больше денег на следующий год становится очень трудно, потому что аргумент - "Так вам и так хватает!" :)

SOA однако :). И

SOA однако :). И вообще я считаю, на заказчика, готового платить за такие расследования, молиться надо. Под них же можно списывать кучу времени, а обосновать всегда найдется чем. Это ж даже не коробка автомат, где все нормочасы в книге прописаны, можно дать волю фантазии.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.