russo> Мне интересно.
Наверное, начать надо с того, что тут есть и правда, и ложь, и непонимание. Чем это вызванно? Скорее тем, что человек никогда не руководил проектами, не учился этому, а сам стал программистом после окончания какого-нибудь стандартного колледжа (может и совесткого ВУЗа, где этому делу не учили совсем). Но это мои догадки.
Немного про систему. Система огромна, работает в параллель и допускает изменение огромного числа данных сразу — количество рождающихся и умирающих в день составляет в США просто огромные цифры. Все эти записи взаимосвязаны. Значит изменение в одной автоматически влечёт изменения в сотнях тысяч, если не миллионах записей. Поэтому всё вовсе не просто. Надо учесть, что систему начали разрабатывать очень давно. Т.е. фактически, эти вещи начали обрабатывать ещё на перфокартах. Есть куча старого Кобольного софта, который ещё работает. Система плавно эволюционировала в течении 50 лет. Новые ОС, новые языки программирования, новое железо. Всё это работает часто вместе. Поэтому поправить в одном месте не удаётся.
Bredonosec> Я работаю в Америке, програмирую (а-ля) в медикейте - ну, та государственная программа, которая поставляет медицинское обслуживание тем, кто не в состоянии его купить сам....
Платят там не топ доллары, но гораздо выше, чем средняя по США. Т.е. за 60,000 уе в год точно (есть знакомый тоже там). Плюс отличные бенефиты в виде страховок, отпуска и прочего.
Bredonosec> (Уже офигеть - сказал эти пару слов, и готов поднять несколько тем на разные элементы высказанного: и о государсвенности, и о 'не в состоянии'... но)Bredonosec> Тема - о .. куда идут средства!Bredonosec> Да черт с ними с деньгами налогоплательщиков, мой поинт именно в этой категории (т.е. это можно и так назвать) в том, что я в этой системе делаю, куда идут мои усилия, ну и оплата за мой 'труд'.Bredonosec> Начну с того чего я это вылез: а достало то что делаю фигню за неплохое деньги!!!Bredonosec> Что значит 'неплохие' - ну, жить можно (самому, но не с детьми.. я об учебе и становлении, и о родителях-пенсионерах..)
Ну, здесь товарищ с одной стороны говорит, что платят нормально, с другой говорит, что хочется больше.
Я согласен. Хочется больше. Он типичный средний класс (с чем tt будет опять не согласен и не доволен). С точки зрения обучения детей, таки средний класс в попе. Получает гораздо больше того, когда можно расчитывать на помощь федералов, штатов или местных, но недостаточно для того, чтобы спокойно оплатить обучение и прожить. Значит брать в долг. Но два таких работника в семье уже будет за 100,000 уе в год. Что позволит худо-бедно провести пару детей в жизнь и кушать хлеб с маслом. Но даже второй заработок в 30,000 уже позволит жить ненамного хуже.
Bredonosec> Ну, так вот, чтоб определить тему - мой текущий 'проэкт' - здесь любую фигню называют проэктом!
Хм, а как называть, если надо посчитать, протестировать, деплоить, поддержать? Это вовсе не разовые затраты часто.
Bredonosec> Ну, предоснова: - медикаид - программа государственная, и связанная с настроениями государства, ессно!Bredonosec> Итак, чего-то так кому-то вожжа под хвост попала и надумали повысить 'сек'юрити' - т.е. сохранность (кого, чего, - не ко мне, меня это не .. колышит - я вааще к сек'юрити отношусь предвзято!) - но, решено выдавать новые ССН-номера не связанно с местом проживания (до этого первые 3 цыфры ССН номера определяли где был выдан этот номер) - вах, какие меры предосторожности!!!
Товарищь просто не в курсе, что есть массовые попытки автоматической генерации SSN с целью обмана. Формат SSN — XXX-YY-ZZZZ. При этом, Первые три связяны с местом выдачи. Последние четыре сейчас хранят везде и они не являются секретом. Т.е. надо угадать всего две цифры. Добавь три цифры ещё и неожиданно сложность увеличилась на три порядка. Для аналогии — повесить замок с двумя циферками и с 5-ю — какой откроют быстрее?
Bredonosec> Ну да ладно, делайте, что хотите,... НО.. почему-то в связи с этим, решили изменить 'условный ССН'.Bredonosec> Т.е. когда человек появляется на свет и у него нет ССН-номера еще (а медицина ему предписана по статусу его безденежных родителей) то ему (для системного оформления требуется номер) создается временный номер, начинающийся с '888'.Bredonosec> Теперь государство решило начинать временный номер с '990'!
Номеров стало не хватать. Ну и организовали группу номеров, когда иностранцы не имеющие SSN и платящие налоги, его указывают. Т.е. он не настоящий — как ID проходит, а как SSN полноценный — нет.
Bredonosec> Фантастическое решение!Bredonosec> Ну да фиг с ними и с их решениями! Bredonosec> Что дальше?Bredonosec> Система отработки всех данных должна быть изменена!Bredonosec> И здесь я.
Ага, здесь он. Как видно, не очень понимающий область, где он работает. Т.е. совсем не subject matter expert. Такого сплошь и рядом. Называют их кодерами. Поэтому, надо смотреть на техническую экспертизу и не более. Системные советы, как правило, надое херить.
Bredonosec> Любой програмист сразу скажет: нет проблем - это минимальные изменения - одно входное условие надо изменить!
Хм, входное условие? Я таких терминов не встречал. Чего-то это напоминает не совсем профильный колледж.
Bredonosec> Фиг вам!Bredonosec> Оказывается код '888' вписан в код всей системы жестко, т.е. прямо в тексте програм!
Да, такие глюки есть. И тоже не от ума. Правда, на Коболе раннем были проблемы с создание именованных констант, но товарищ не в курсе.
Bredonosec> Уже фантастика - потому что, одно из правил програмирования - не вписывать никакие значения в код программы, а делать файлы с данными, которые читаются програмами. Т.е. что-то изменили - в одном месте коректируем, дальше все работает соответственно!
В общем случае, даже файлы настроек не всегда спасают. Особенно в распределённых и параллельных системах. В том же кластере, к примеру, эти изменения надо синхронизовать. Иначе попа получается при обработке. Помним, что я сказал про огромность системы? Это тот случай, когда надо либо всё остановить, а потом запустить, либо при разработке системы был сделан специальный протокол синхронизации. И не нашлось ни одного умного программиста, который бы для себя бы решил загнать данные в локальный кэш, который не обновляется (а обновления делать по протоколу — ещё тот геморрой).
Но что товарищ не учитывает совсем — а что делать с теми данными, которые уже внесены туда с кодом 888? Эти записи надо тоже обработать (поставить 990), как и связанные с ними. Т.е. простым изменением тут и не пахнет. И как отличить эти данные от тех, которые уже новые, но с кодом 888? Учитывая при этом, что ежедневно в систему поступают многие миллионы записей данных. Вроде бы, наилучшим способом будет останов системы, замена кода, обработка уже существующих данных, обработка того, что в очереди, запуск системы. Но такой вариант значит, что система будет down на значительный период. Т.е. кучав данных будет ждать в очереди. Всё остальное отложится на неопределённый период. А, если вдруг ошибку нашли? Как откатить систему назад? Можно себе представить бэкап и восстановление такой системы.
Bredonosec> Ну да ладно, все здесь написанное - на уровне школьников!
Ага, товарищ, похоже, дальше и не ушёл.
Bredonosec> Чем теперь все воплощается?Bredonosec> Оказалось ,есть штук 10 програм, где эти '888 в начале' осмысляются!Bredonosec> Прекрасно: их надо переписывать!
Их надо переписать. Надо написать кучку новых, для обработки тех случаев, что я описал раньше. Надо сделать возможным восстановление при неудаче. Надо очень тщательно это всё протестировать, чтобы уменьшить вероятность нахождения ошибки при вводе новых программ в производственную систему. Надо обеспечить сопровождение программок на случай требуемых изменений, надо задокументировать программки, сопровождение, руководство оператору и эксплуатанту, много чего ещё.
Bredonosec> Казалось бы, как просто: измани '888' на '990' ну и пересоздай систему!
Гы, лол. Ему бы в винде такое сделать, а потом сказать — твои старые программы не пашут, данные потеряны — пересобери и набей заново.
Bredonosec> Ну да, таки вроде и не сложно (хотя уже какого хера тратить деньги на херьню)!Bredonosec> Но тут выясняется, что есть под-система определения человеческой ошибки ввода данных, и она осмысляет временный ССН как соответсвующий любому (ну да, он временный, кто ж знает что ему присвоят после) , ну и другие параметры должны совпасть: имя, день рождения....Bredonosec> И вот в системе оказывается штук 10 програм, где такая проверка проводится.
Проверки могут быть разные. И временный SSN завязан на многие разные вещи. И их везде надо править и тестировать. Кстати, это к давнему спору про надёжность программ. Вот у товарища типичный подход, когда надёжность не просто херится, а товарщи в принципе не понимает, что это такое.
Bredonosec> Что скажет любой начинающий програмист: функциональность повторенная дважды должна быть вынесена в отдельную функцию, которая будет использованна где надо.
Это правильно. Только я бы посоветовал ему посмотреть на старый Кобол и особенности использования подпрограмм там.
Ну и написание библиотек — это особый склад ума и квалификации. Не каждому дано, не каждый может.
Bredonosec> Но не здесь!!!! (А деньги то налогоплательщиков!)Bredonosec> Итак тупое изменение 3 цифр вызывает изменение около 10 програм!
Это требует не просто изменение 10 программ. А много другого. Часть я расписал выше.
Bredonosec> Что это значит?Bredonosec> 10 разработчиков работают над этими программами!Bredonosec> Что делает разработчик?Bredonosec> Это уже процессинг!Bredonosec> Он отключает программу (чек-оут); делает изменения (эти 3 символа); тестирует ее, создает тест-план для тестирования заказчиком (ой, отдельная история - очень затратная); проводит изменненный код по необходимым для изменений шагам (недели уходят) и отслеживает функциональность измененной программы!
Вот в этом пункте возникают очень серъёзные в квалификации. Checkout/checkin никак не могут быть переведены в качестве отключают. Ну и процес чекина совсем забыл товарищ. Для непрофикос объясняю. Чекаут — процесс извлечения исходника из системы хранения и создания версий с целью его модификации и создании новой версии файла (в данном случае, исходного текста). Файл проходит через различные стадии: изменение, отлаживания, тестирования девелопером, code review коллегами, чекина, передаче системы тестерам, передаче в релиз, деплоймент. На каждой стадии возможны откаты в самое начало. А ещё на каждом шаге полагается писать документацию.
Фраза про тестирование опять говорит о полном непонимании надёжности систем и зачем это нужно.
Bredonosec> О- перфект - процессинг! Bredonosec> А теперь 10 раз!Bredonosec> А тепрь вспомним о бессмысленности в основе!
Йес. Финальный аккорд про надёжность.
Bredonosec> И вспомним, что надо было иметь по-другомуBredonosec> И надо было иметь функцию - или делать это сейчас, имея одного!!!!! а не десять разработчиков для всего этого!!Bredonosec> А всем нам (10-ти) платят деньги за каждую минуту..
А зачем 10 разработчиков? Он один может. Другое дело, что тестировать все 10 программ всё равно придётся. Правила такие. Regression testing — оно такое. Поменял библиотечную ф-цию, которую использует 100 программ — надо тестировать все 100.
Bredonosec> (Да ладно, я беру эти деньги - жить-то надо - но как тошно делать НИШТО!!!)Bredonosec> (но,... только не надо - уходи, найди по-сути - не прохожу местные интервью...формализм выше крыши!!! )
ЫЫЫ!
Bredonosec> Вот и хочу услышать мнения людей на тему что мы делаем на работе и имеет ли это хоть какой либо смысл!!!!!!!!!!!!!!!!!!!Bredonosec> Я свое действо в этой системе ощущаю бессмысленностью и очень расстраиваюсь!!Bredonosec> А вы?
Может надо поучиться Software Engineering вместо стенаний?