«За что тебя приняли, за то тебя и уволят», гласит старинная мудрость. Меня позвали на этот завод для аудита учета, информационной системы, кода, процессов и т.д. Но начали с того, что у них – плохой программист. Стандартный, заводской, ужасный.
Завод создавал красивые продукты. И сам был красивый. Реально красивый – видимо, в проектировании здания участвовали те же дизайнеры, что рисуют продукцию. В цехах – тоже красота и гармония. Чистота, порядок, всё на своих местах. А главное – весь производственный процесс красиво автоматизирован.
Каждую партию продукции сопровождает маршрутный лист, в котором расписаны все необходимые технологические операции, что где брать, куда потом отправить и т.д. На бумажке – только штрихкоды, с минимумом текста.
Рабочий просто берёт партию деталей, пикает сканером – и система тут же знает, что он начал обработку. Партии небольшого размера, обрабатываются не больше одной смены, поэтому нет необходимости её дробить при отражении факта выпуска или прохождения операции. Рабочий, когда закончит обработку всей партии, просто пикает сканером, и система знает – партия готова, и может ехать к следующему человеку. О том, что детали зависли между обработками, система тоже знает – есть пик об окончании, но нет пика о начале следующей операции.
Красота и гармония. Мечта любого руководителя. Полная прозрачность – всегда известно, что, где, когда. Потому руководитель и проводит экскурсию в таком приподнятом настроении. Ему нравится, как всё устроено. Красивая автоматизация.
Мельком замечаю, что рабочие как-то подозрительно много разговаривают по телефону. Когда мы подходим к кому-нибудь, стоим и разглядываем красивый станок или проворную работу рук – человек улыбается и работает. Как только отходим – начинает кому-то названивать.
Ну, мало ли, может они тут общительные. Или корпоративная культура такая – можно трындеть хоть целый день. Мне некогда – надо разобраться, где тут скелет в шкафу. По-любому ведь бухгалтерия где-то сидит и вбивает дикое количество документов, фиксирующих выпуски, тех.операции и перемещение полуфабрикатов.
Идём в бухгалтерию – нет, там тихо. Сидят, пьют чай. На экранах компьютеров – да, конечно, информационная система – но точно не ввод выпусков. Обычная бухгалтерская работа. Идём дальше.
Наверное, завал в планово-диспетчерском отделе (ПДО). Идём туда. Ну, не то, чтобы завал – просто работы много. Руководитель честно говорит, что узким звеном в настоящее время является печать большого количества маршрутных листов – на каждую партию и заказ. С учётом небольшого их размера, бумаги получается довольно много – по сути, на неё и уходит основное время сотрудников ПДО.
Так, а где скелет? Не может быть, чтобы всё было так хорошо. Ладно, расстаёмся с руководителем, иду поговорить с программистом. Уж он-то точно знает.
Программист сидит в тесной каморке, и разговаривает по телефону, одновременно судорожно что-то делая в системе. Жду несколько минут, пока натрындится, успеваю быстро познакомиться – и опять у программиста звонит телефон. Снова жду. В следующую паузу вставляю вопрос «Можно глянуть, как устроена ваша система?» — и опять звонок. Одновременно на компьютере программиста мелькают мессенджеры всех известных цветов – зелёный, синий, фиолетовый.
Программист, продолжая разговаривать, на соседнем компьютере открывает мне систему и исходники. Отъезжает обратно, открывает чаты, смотрит фотки, что-то быстро вбивает в систему.
От нечего делать смотрю систему. Формирую отчеты – по продажам, выпуску, себестоимости, ценообразованию и т.д. Все отчеты, как один – красивые. Минимум доступных настроек – только красивые переключатели, типа по регионам, группам продукции и т.д. Щёлкаешь и наслаждаешься красивыми видами – всё аккуратненько, вылизано, причёсано.
Обычно так не делают в корпоративных системах, для внутреннего использования. Там подход технологичный – есть некая универсальная форма, а от отчёта к отчёту меняется только запрос, добывающий данные. Дальше движок их крутит, как надо, даёт пользователю настройки – группировки, фильтры, сортировку, раскраску и т.д. Примерно как в BI-системах, только попроще, без кубов и прочей красоты. Странно, надо глянуть код.
Гляжу код – в рот мне ноги… 4-5 тыс. строк кода для формирования отчета по выпуску. Для сравнения – обычно достаточно 50-100 строк, и все они – текст запроса, остальное обеспечивается платформой. Странно, что он тут делает, в этих 4-5 тысячах строк?
Смотрю имена процедур и функций – опять дикость какая-то. Они человекочитаемые, и уже по названиям понятно – у него, блин, на каждое подразделение своя процедура. Одна выводит данные по цеху 1, вторая – по цеху 2 и т.д.
Не, ну ладно, бывает такое – декларация по прибыли пострашнее будет. Разворачиваю тексты, смотрю. Сколько видим отличий? Одно – параметр запроса меняется. Вместо цеха 1 – цех 2.
Шарю еще несколько модулей – та же фигня. Килотонны кода, которые рисуют красивые отчеты. Хотя, теперь отчеты уже не кажутся такими красивыми. Жду обеда. Обед – это святое.
Так и есть. Ровно в 12-00 программист завершает разговор, швыряет телефон под монитор, встаёт и направляется прочь из кабинета. Увязываюсь за ним. К счастью, он так зол, что готов поговорить.
Ну и оказалось. Работал себе программист на заводе, никого не трогал. Потихоньку помогал пользователям, чего-то дописывал, обслуживал систему и серверы, картриджи заправлял. Как обычно.
Но тут руководитель предприятия съездил в зарубежную командировку – посмотрел, как люди живут. А люди за рубежом живут красиво.
И привёз идею красивой автоматизации. Спросил программиста, тот ответил – чушь какая-то. Слабак. Руководитель нашёл подрядчиков, те вписались – чего не вписаться-то? Ключевые функциональные требования – чтобы в цехах все пикали сканерами, и не работали с компьютером руками, и данные о выпусках, операциях и перемещениях появлялись мгновенно, вслед за осуществлением реальных событий в жизни.
Сказано – сделано. Несколько месяцев мучений, и цеха наполнились волшебными пиками сканеров штрихкода, как заправский гипермаркет. На сдачу работ позвали руководителя, чтобы лично убедился в красоте автоматизации. Притащили большой телевизор, вывели табличку, которая отображала жизнь цеха в реальном времени.
Сдали «на ура». Рабочий пикал сканером – результат тут же отображался на телевизоре. Второй пик, третий, десятый – жизнь закипела, и в цехе, и на телевизоре. Руководитель был доволен. Акты подписал, подрядчики уехали.
А программист остался. Он пробовал сказать руководителю, что сделано было, мягко говоря, не то, что нужно. Что простая плоская таблица, в которую последовательно добавляются результаты считывания штрихкодов – это не есть отражение выпуска. Это просто лабораторная работа по подключению сканеров в режиме клавиатуры – прочитать данные, записать в таблицу, расшифровать штрихкод – он был длинный, составной, с зашитыми внутрь номерами заказа, партии, тех.операции, номенклатуры и т.д.
Но руководитель не хотел слушать эти глупости. В цехе было красиво. Мало ли, что несёт этот деревенский задрот. Остался без отката, наверное – и поделом ему.
Ну а дальше начался ад, для программиста. Несколько суток он безвылазно работал, чтобы обеспечить хоть какое-то функционирование системы. Сами посудите: раньше, хоть и через одно место, с опозданием, но данные о выпуске поступали туда, где они нужны. Были стандартные бумажки с цифрами выпуска, которые из цеха тащили в бухгалтерию или ПДО, и эти цифры вбивались в систему, внутренний товарооборот работал, остатки были правильные, себестоимость считалась.
Сейчас осталась только плоская таблица с отсканированными и расшифрованными штрихкодами. Ну и конский механизм формирования и печати этих штрихкодов из планов производства. Данные о выпуске просто не поступали в те части системы, где были нужны – ни в управленческий, ни в бухгалтерский товарооборот. Плоская таблица стояла рядом и просто накапливала данные сканирования штрихкодов.
Сначала программист, под давлением бухгалтерии, на коленке сваял печать этой самой плоской таблицы – примерно в том виде, как раньше выглядели рукописные бумажки из цеха. Печатал им раз в день эту таблицу, бухи вбивали в систему.
Потом, с горем пополам, написал код, который переносил данные из плоской таблицы в нормальные учетные данные системы. И вроде можно было успокоиться, но не тут-то было. Руководитель опять съездил на какое-то предприятие и узнал, что из системы можно получать красивые отчеты.
Раньше, как и на большинстве заводов, отчеты для руководителя готовили специальные люди – бухгалтера, экономисты, финансисты и т.д. Брали данные из системы и приводили в краткую, понятную, красивую форму. Теперь руководитель хотел получать отчеты напрямую из системы.
Начался второй круг ада. Сроки, естественно, были предельно сжатыми – программист уже считался утырком, саботирующим прогресс, и расслабляться ему никто не дал бы. Так появились килотонны копипастного кода, написанного в спешке и на коленке. И десятки красивых отчётов.
Третий круг ада пришёл, откуда не ждали – из плоской таблицы со штрихкодами. В качестве демонстрационного стенда она смотрелась неплохо, но в реальной работе очень быстро вылезли все ошибки проектирования, и в плане техники, и в процессе использования.
Для начала жутко снизилась производительность записи в таблицу. Затем упала скорость чтения. Начались блокировки. Обнаружились запросы, написанные подрядчиком, которые выполнялись при каждом пике сканера 1.5 тысячи (!) раз. Нашлись места с бесконечной рекурсией, которая прерывалась на десятитысячном шаге усилием воли, выраженным комментарием «//ограничим для демонстрации». Каким-то образом у многих пользователей вдруг обнаружились права на ручное редактирование данных, чем некоторые не преминули воспользоваться. Контроль последовательности выполнения операций работал по номеру строки в тех.карте, а не по номеру тех.операции (это тупо разные колонки таблицы, и они не обязаны совпадать), в результате чего люди получали информативное сообщение «Нарушена последовательность выполнения операций». Использование бумажных маршрутных листов, без фиксации факта выдачи в цех и контроля изменений, приводило к постоянным сбоям сканирования – изменение данных в системе тупо меняло состав штрихкода, и распечатанный ранее уже не распознавался. И т.д.
Естественно, программист ходил с этой информацией к руководителю, и не раз. Естественно, слушать его никто не стал. Поэтому программист вошёл в жесточайший цейтнот.
С одной стороны, необходимо было обеспечить текущую работу системы. Это выражалось в постоянном сидении на телефоне и ручном редактировании данных в плоской таблице – банально, чтобы цех не встал колом. С другой стороны, потихоньку, насколько хватало времени, пытался всё это починить. Завод работал круглосуточно, но вечером и ночью как-то меньше звонили, поэтому программист использовал это время для ремонта красивой автоматизации.
Однако, накопленный у руководителя негатив уже ничем нельзя было сдержать. Программиста хотели уволить. Собственно, это была одно из причин аудита, на который я припёрся.
Через пару дней, когда отчёт был готов, я часа два убеждал их не увольнять программиста. Рекомендовал повысить его в должности и начать, наконец, слушать, что он говорит. Дать время на рефакторинг и наведение порядка. Удалось убедить их в том, что не надо программиста выгонять хотя бы сегодня. Договорились провести еще несколько встреч, в т.ч. – с программистом. И это была моя ошибка.
На следующий день собрались все вместе. Руководители всех мастей начали перечислять проблемы, которые программист не может решить. Тот уверенно отвечал на все вопросы. Как правило, одной и той же фразой – «я это уже сделал, показывал вам», на что вопрошающий умолкал. Я, в большинстве случаев, подтверждал, что программист говорит правду.
Для более эффектной аргументации достали компьютер и стали на ходу показывать то, чего «программист никак сделать не может». Нашлось практически всё, «чего нам так не хватало для нормальной работы». И всё – достаточно красиво. Как минимум – работает.
Под конец встречи уже никто не понимал, в чем её цель. Программист, с надеждой в глазах, ушёл на свое рабочее место. Руководители тоже разошлись, остались пара главных. Я сидел и ждал вердикта – надеясь, разумеется, на второй шанс для программиста и следование моим рекомендациям («у вас есть всё, что нужно, просто пользоваться не умеете»).
Но вердикт вышел другой – «вот видите, его надо уволить». За что?! Разумеется, за то, что система красивая. Но не работает. И виноват в этом программист.
P.S. Программист был рад, что его уволили. Сам не уходил, потому что чувствовал ответственность, или даже гиперответственность за происходящее на заводе. Через неделю работал на новом месте, с большей зарплатой.
Красота, которая не спасла программиста
См. также
О жизни Россия Бесплатно (free)
Данная статья сугубо для раздела «О жизни», но может оказаться полезна многим членам сообщества. Все описанное ниже соответствует актуальному российскому законодательству на момент публикации статьи. У вас нет и в ближайшее время не предвидится детей возрастом до 1.5 лет? Вспомните о родственниках / друзьях / коллегах / знакомых, у которых они есть, и отправьте ссылку на эту статью — она может быть им чрезвычайно полезна. Распространите среди жильцов вашего ЖЭКа, как говорилось в одном классическом произведении. Помните, что, ставя плюсы к статье, вы поддерживаете её автора!
01.07.2024 5201 madonov 47
О жизни Linux Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)
Использование Linux в качестве основной ОС для программиста 1С, возможно ли это? Решил поделиться личным опытом работы перехода на эту систему. В статье моя история без технических деталей максимально простым языком. И, спойлер, да, жизнь на Линуксе для разработчика 1С возможна и с каждым годом становится всё комфортней. Статья рассчитана на людей, с Линуксом не знакомых, специалистов прошу не кидаться помидорами.
16.05.2024 5570 soulner 33
О жизни Россия Бесплатно (free)
Подводим итоги работы в 1С за 2023 год. Все о вас: 4 подробных раздела с цифрами, графиками и ужасными цветами диаграмм (должна же где-то быть стабильность).
08.02.2024 27749 Neti 85
В процессе написания статей на тему Идеальное место работы ЗУПера нужен аргументированный текст про адекватного работодателя. Информации получилось много, поэтому выделю в отдельные 2 статьи. Рассмотрим все недостатки работодателей от момента собеседования до момента увольнения. Все этапы, как всегда, подкреплены реальными случаями из моего опыта.
22.01.2024 5438 biimmap 67
О жизни Конфигурации 1cv8 Бесплатно (free)
В процессе написания статей на тему Идеальное место работы ЗУПера нужен аргументированный текст про адекватного работодателя. Информации получилось много, поэтому выделю в отдельные 2 статьи. Рассмотрим все недостатки работодателей от момента собеседования до момента увольнения. Все этапы, как всегда, подкреплены реальными случаями из моего опыта.
16.01.2024 7067 biimmap 100
О жизни Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)
Импортозамещение увеличило потребность в архитекторах, аналитиках, разработчиках 1С, в т.ч. по ЗУП. Все их ищут всеми возможными способами, но не могут найти и не знают, чем же их завлечь к себе!? Давайте разберёмся в этом вопросе!
27.11.2023 5672 biimmap 52
О жизни Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бесплатно (free)
Чисто поржать
19.10.2023 5046 1c-intelligence 25
О жизни Сообщество Бесплатно (free)
Прочитав название публикации, мысль возникает о свадьбе... Но речь не об этом!
25.08.2023 3163 biimmap 24
По статье - история проста и стара, классика.
ее можно даже в печатном виде заказать )))
А программист остался. Мало ли, что несёт этот деревенский задрот. Остался без отката, наверное – и поделом ему.
Вот именно, что остался без отката!!!
Поле этих слов дальше можно не читать - всё понятно. Тема откатов по сути не раскрыта, а я и не заметил, как рынок переформатировался - похоже сейчас выгоднее работать у таких фрачей, чем на фикси - откаты решают всё. Наёмные менеджеры в компаниях почему-то стесняются брать откаты непосредственно у программистов - наверное пока такая "культура" не сложилась и нужна прокладка в виде франча.
Исходя из рассказа, программисту нельзя доверять принятие решений в части организационных действий.
Что бы цех не встал колом - это ответственность других людей.
Если сантехника выйдет из строя - он будет ее ремонтировать? Что бы кое что другое колом не встало.
Там скорее вопрос о нецелевом расходовании ресурсов предприятия. Программист - это ресурс предприятия. Его час работы стоит явно дороже, чем у "Мастера смены", работу которого выполняет программист. Понятное дело что программист сделает его работу быстрее но - "провиснет" работа программиста. Результат чего мы и видим, исходя из рассказа.
и цеха наполнились волшебными пиками сканеров штрихкода,
как заправский гипермаркет.
вот когда нужно было уходить
а через три дня попросили бы компанию подрядчика исправлять,
и программист смог бы донести свое мнение руководителю .
...и на ИС ещё некоторые удивляются, откуда у меня такой поганый характер)))
меня больше интересует, кто еще работал в 1с, кроме программиста :)
по рассказу получается, что нет админа,нет пользователей, всем нравится и все молча советуются с программистом. так не бывает....
не могу понять, насколько эта ситуация реальная или виртуальная.
А про (22)
Программист сидит в тесной каморке :)
еще читал про бухгалтерию,но
руководителю никто не говорил, что тормоза в базе или проблемы при выводе отчетов
только все почему-то обращаются к программисту
который (один !!! ) на предприятии, от кого зависит работа системы в целом ?
_____________
Создание новых элементов базовых справочников и базовых настроек - то, чем должен заниматься админ.
это что еще за админ - это пользователь с правами и все....но не админ.
я уже молчу о разделении админ операционной системы и админ 1с
Разумеется, дальше собеседования дело не пошло.
Раньше думал, что это наш местный краснодарский подход к бизнесу:)
Но выходит, что не так, проблема глубже и масштабнее.
Системой активно пользуются, это ERP. И таких сейчас много - и на ERP, и на УНФ, и на КА2.
Конфа на замке, небольшие доработки через расширения, обновляют сами, обращаются к программистам редко. Правда, там такая дичь с учётом обнаруживается :)
Конфа на замочке, какие-то не понятные доработки франчей, и хрелион ошибок в учете, в каких-то очевидных и банальных местах, а всё потому, что нет в штате хотя бы аналитика, который пальцем может тыкнуть как правильно делать.
Из рассказа не совсем верная картина вырисовывается: мол жил завод прекрасно и в один момент через гендира поступило предложение. На самом деле будучи в должности ИТ руководителя я ежедневневно отбривал таких автоматизаторов, которые лезли со всех щелей через всех должностных хоть немного имеющих власть в компании.
До сих пор не понимаю как можно нормально спать, когда ты сдал проект такого низкого качества. Лишь убедить того, кто подписывает акт. А то что не работает - это Вы пользоваться не умеете.
Но да, часто добрые люди с краю делают видимость, а не работу.
С другой стороны, что-то не могу понять, откуда там рекурсия при записи ШК в табличку? При расшифровке что-ль? В общем что-то Иван недоговаривает, плохо продумал или явно не до конца понял...
Не могу представить такой глубокий передел переделов, чтобы все умерло. Зацикливания откуда-то брались?)))
Ну и просто банально отказаться от объемов работ, которые объективно не тянешь, иначе тебя же виноватым и сделали.
Программист хотел как лучше, но не хватило как технических навыков, так и понимания организационной ситуации.
Размножение кривого кода, созданного и своими, и чужими руками, приводило к росту технического долга, как снежный ком.
Размножение кривого кода ничем, кроме недостатка квалификации, объяснить нельзя.
А желание сделать все самому, а не пойти на принцип - где моя команда или аутсорсеры - привело к обратному эффекту. Хотел как лучше, но свои же и сожгли в благодарность, как Жанну ДАрк :(
Скорее всего, героя - одиночку еще и по ЗП прогнули
Кроме этого не вяжется как то "красота", описанная на телевизоре с тем в каком виде эта красота представлена... Возможно я что то не понял.
Для получения уведомлений о новых публикациях автора подключите телеграм бот: Инфостарт бот
№ 1459508
Создание 15.06.21 12:28
Обновление 15.06.21 12:28
Просмотры 8737
Загрузки 0
Рейтинг
52
Комментарии 80
Код открыт Да
Рубрики О жизни
Кому Для всех
Тип файла Нет файла
Платформа Не имеет значения
Конфигурация Не имеет значения
Операционная система Не имеет значения
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)