Диалог с инопланетным разумом
Вот люди мечтают, фантастику даже пишут: каким мол, он будет, контакт с инопланетным разумом? Я вам точно скажу, что ничего хорошего от такого контакта не будет, и максимально хорошим результатом будет ситуация, когда две цивилизации разойдутся краями и просто забудут о том, что где-то и когда-то пересекались. Вы спросите, почему я столь пессимистично настроен? Да я вам расскажу, как раз на живых, настоящих примерах из моей работы.
Проект, на котором я работаю сейчас, как я уже говорил, представляет из себя недоношенного уродца, от которого отказались его биологические родители, и который скинули нашей команде со словами:"сделайте так, чтобы это хотя бы могло само дышать". Начальство конторское, в неизмеримой мудрости своей, сказало:"Ха! Говна вопрос! Наши люди могут даже окаменелость динозавра довести до состояния бодро бегающего живого зверя!". Так что мы одновременно с помощью запретных ритуалов черной магии оживляем это, плюс клиент видя, что таки да, у скотинки начинают рефлекторно шевелиться конечности и даже иногда дергается левый глаз, подкидывает нам работенку типа:"А не могли бы вы прикрутить к животному еще рога и систему утилизации навоза?".
Со стороны заказчика у нас есть Нежный Мальчик, который как бы принимает работу и озвучивает хотелки заказчика. Сидит этот мальчик на сходняках напротив меня, в аккурат на фоне окна, и каждый раз, когда я смотрю на его нежные, отсвечивающие розовым, оттопыренные ушки, во мне просыпается внутренний садист: очень хочется взять ершик (сами знаете где) и вдумчиво, медленно прочистить ему ушки. Насквозь: в одно вставил, из другого вытащил. Но это лирика, перейдем к практике.
Я говорил и говорю, что самый страшный ночной кошмар разработчика - это работа с проектом, который был изначально написан с нарушениями архитектуры. Писал я по этому поводу много, часто и буду продолжать писать дальше. Этот проект не является исключением. Вот вам свежего, вкусного и сочного:
Приходит Нежный Мальчик (НМ) и говорит:
- Вот, нам надо к каждому юниту и заказу на него прикреплять документы. Я хочу, чтобы была защита этой операции от дурака.
- НМ, а расскажи мне, старому, как ты себе это представляешь? Эту самую защиту?
- Ну вот имя документа должно выглядеть так: номерзаказа_номеравтомобиля_названиедокумента.pdf
- Ты уверен в этом? Не хочешь выслушать мои соображения?
- Все нормально, Алекс, делай именно так!
- Ну... раз ты сказал....
- А что не так-то?
- Понимаешь, какая штука: в юните "заказ" у тебя уже есть юнит "автомобиль". Внутри. У юнита "автомобиль" уже есть свойство "регистрационный номер". Так как у нас нет и не предвидится сквозного поиска по документам, то "номеравтомобиля" как непременная часть имени файла является излишним, и только добавит геммороя тем, кто будет эти документы клепать. Я бы сделал иначе, если тебе это ТАК надо.
- А как?
- Я бы позволил втаскивать любые документы в систему, но в самой системе переименовывал бы их так, чтобы этот самый пресловутый "номеравтомобиля" вставлялся системой как часть имени. Это первое. Второе: часть клиентов у тебя - интернациональные компании. Это означает, что номер автомобиля - плохая привязка. Неумная.
- Почему?
- Да потому, что если автомобиль сменит свою прописку, ему выдадут новый номер. А у тебя масса вещей в системе завязана именно на номер автомобиля.
- Пофиг, делай, как я сказал.
- ОК.
Две недели спустя:
- Алекс..
- Да?
- А нельзя... нельзя убрать защиту от дурака?
- Ой, а что случилось? Ты же так ее хотел.
- Ну.. понимаешь... операторы дружно кладут хер на правила наименования документов перед импортом в систему, и постоянно жалуются, что срабатывает защита, и документ не втянуть в систему.
- И что ты хочешь?
- Пусть теперь обязательной останется только часть "номерзаказа".
- Как скажешь...
Еще неделю спустя:
- Ребята, у нас пиздец.
- Ой, НМ, расскажи нам за пиздец что-то новое, чего мы не знаем.
- Понимаете, тут выяснилось (!!!!) что часть клиентов решила перерегистрировать из-за налоговых причин автомобили, зарегистрированные в стране А, в свой филиал в стране Б....
- Дай угадаю: и у нас теперь жопа с номерами автомобилей и привязками к контрактам?
- Ну да... Приходится автомобиль снимать с баланса конторы, закрывать все заказы, с ним связанные, снова ставить тот же автомобиль на баланс конторы, только он не ставится...
- Дай еще раз угадаю: VIN автомобиля - штука уникальная, и в систему не прописать два автомобиля с одинаковым VIN, так?
- Ну да... Мы вышли из положения, правда...
- И как же?
- Мы теперь тот же VIN записываем в систему как VIN_1
- За-ши-бись. А потом будет VIN_2, VIN_3.... Так?
- Ээээээ....
И в этот момент хочется взять ершик. Тот самый.
И вот такое - оно везде. Повсеместно. Сегодня с утра НМ сообщил, что они теперь запутались нахен, потому что часть перерегистрированных машин было добавлено в систему с новыми псевдо-VIN как VIN_1, а часть других - как Господь на душу положит. Теперь у нас добавилось веселое шоу под названием "правка рабочей базы данных в ручном режиме на ходу". Делает это два человека, каждый - с нехилыми почасовыми рейтами.
За одно я спокоен: мне еще очень долго не грозит побираться на кусок хлеба.
Спасибо за внимание.
- cynic's blog
- Login to post comments
Как я понимаю, с
Как я понимаю, с Data Architects, также как и с System Archtects
большая напряженка. В умных книжках они есть, а в реальной жизни - вымерли.
Я думаю все вы сталкивались с такой штукой как DSGVO, год сейчас такой, почти всех задело.
Дак вот у нас такая-же петрушка, надо анонимизировать данные клиентов.
Правила анонимизации выдумываются всеми, кем попало и как попало.
Иногда тупо скремблируется, а иногда выдумываются отдельные правила для номерных знаков в каждой стране.
Как результат - процедура анонимизации только номера машины - почти мегабайт размером.
Количество IF - просто немеряно.
Грустно.
А md5(param) - не? Не
А md5(param) - не? Не работает? Подари им идею.
Им не нравится,
Им не нравится, потому что НЕКРАСИВО!
ну мы не
ну мы не догматики, подари sha(param), пусть люди потащщатся
А что, в проекте
А что, в проекте нет такой роли как Data architect?
Я ж пишу: нам
Я ж пишу: нам скинули полумертвое нечто. Мы правим это по-живому. Бюджет заказчика не предусматривает сделать это по-людски.
Там все мрачно с архитектурой, причем как на фронте, так и на заднике. Ну и в базе тоже.
Не, ну проект
Не, ну проект кривой - это понятно. Но в команде-то должен быть какой-то порядок?
Я обычно приходя на проект сразу спрашиваю о распределении ролей.
Умный менеджер, а таких единицы, развешивает ключевые роли типа архитекта и интегратора на членов команды. Глупый менеджер берёт это на себя, а дальше как в анекдоте "и после этого мне карта и попёрла!"
Слушай, ты там в
Слушай, ты там в своих Япониях совсем от реальности оторвался. Кимоно ему выглаженное подавай, на положенный угол кланяйся, подарок двумя руками в полупоклоне вручай и ни в коем случае палочки в еду не фтыкать.
Вот тебе наши реалии: заказчик подключен к Джире. Создает тикет. Пишет там о проблеме. Как проблему воспроизвести - ноль инфы. Какие исходные данные - ноль инфы. Сношайтесь, мон колонель, у вас есть весь день.
Ты пойми, наша работа - это интеллектуальные ассенизаторы. Разгребатели дерьма. Знаешь, на Востоке в свое время в бандах были слепцы. Когда банды шли по следу караванов с целью грабежа, слепцы обнюхивали стоянки и давали заключение: столько-то человек, больных - столько-то, везут вот это, жрут вот это. Так вот это в точности наша работа. У нас в отделе ни одного постоянного работника нет, они с воем сбегают на хер через неделю. Чтобы тут работать, надо иметь зад, анодированный молибденом, и мозг с принудительным охлаждением жидким азотом, что бы не вскипел. Жаль, не могу тебе кинуть сюда скриншоты некоторых тикетов: "пойди туда, не знаю куда, принеси то, не знаю что" на этом фоне - ясная и четкая инструкция.