Фото из Гугла, это не мама автора
Моя мама начала работать в одном из крупнейших банков ЕС ещё до моего рождения, а я всегда был неравнодушен к её специальности, особенно в последние годы, поскольку сам стал программистом. Меня много раз просили взять у нее интервью, и я, наконец, решил это сделать.
Объясню немного
Мир банковского программного обеспечения — это другая вселенная. Она сильно отличается от той, к которой привыкло большинство из нас. Я публикую этот пост на HN и на Reddit. Публикую интервью не в виде вопросов-ответов, а в виде рассказа. Я добавил некоторые вопросы и ответы в нижнюю часть поста.
1991
Год, когда она начала внутреннее обучение в банке Nordea, который тогда назывался Nordbanken (Северный банк). В 2001 году его переименовали в Nordea. Во время обучения она должна была проходить различные тесты, в первую очередь тест IQ, чтобы показать, что она обладает интеллектом, достаточным для работы в этой области. Тест на психологическую устойчивость — что у неё достаточно нервов для этой специфической работы и тест на многозадачность, который она завалила с оценкой 22/100. Остальные тесты она прошла успешно и заняла одну из 16 доступных позиций.
Должность звучала «как программист мэйнфреймов IBM на языке COBOL», и до сих пор, уже 25 лет, моя мама работает на этой должности в том же банке.
Эта позиция в банке самая важная, по крайней мере, с технической точки зрения. Если, скажем, мама и члены её команды одновременно бросят работу, банк разорится в лучшем случае в течение нескольких недель. Её коллектив работает посменно с круглосуточной доступностью. Помню, когда я был младше, она брала такси и ехала на работу посредине ночи, в воскресенье, чтобы исправить взаимную блокировку.
Мой брат (ему 1 год, он слева), моя мама и я (справа)
COBOL...
… это не такой крутой язык программирования как функциональный Haskell или Golang для параллельных вычислений. COBOL — это императивный, процедурный язык, а с 2002 года — объектно-ориентированный. В самом языке ничего плохого нет, проблема в том, что его почти никто не знает, как минимум в контексте программирования мэйнфреймов. Моя мать — вторая из самых молодых членов команды, а она родилась в 1964 году. У самого молодого из персонала разница с ней в два года. Это глобальная проблема, поскольку почти все крупнейшие банки в мире работают с мэйнфреймами IBM и COBOL у них — основной язык программирования. У банков помельче ситуация лучше, они обычно работают, например, на Java, без мэйнфреймов.
Мама раньше спрашивала меня, не хочу ли я изучить этот язык, но я тогда уже работал с более продвинутыми технологиями вроде Postgres, Redis, Node, Crystal, PHP и всегда отвечал «Да ни за что!». Мне до сих пор интересно то, что она делает, но такие типы систем вызывают, кажется, самое плохое ощущение корпоративщины, которое только можно представить и которого мне хотелось бы избежать.
Правда, я могу только представить жирную зарплату 20-летнего программиста старого мэйнфрейма, потому что возраст в этом случае бесценен.
Базы данных
Их основная база данных называется IMS. Это иерархическая база данных, созданная IBM для программы Apollo. Между собой они называют её DL/1, Язык Базы данных 1 (Database Language One). Они пытаются мигрировать на DB2, реляционную базу данных, которая понимает нормальный SQL. Но, учитывая огромный объем данных, которые хранит банк Nordea, такая задача займёт несколько лет. Нужно не просто переместить данные из IMS в DB2, в дополнение надо обновить модули для загрузки и сохранения данных из DB2 вместо IMS, а модулей тысячи, многие из них были разработаны программистами, которые либо умерли, либо вышли на пенсию.
Каждая транзакция хранится в DB2. Они избегают записей в IMS насколько это возможно, и только считывают из неё данные, пока их новая купленная система не интегрируется полностью, и они не смогут хранить данные там.
IMS — чрезвычайно старая и очень медленная (для некоторых задач).
Поиск данных может занять несколько часов. Ха, а мы тут спорим о том, что у MySQL скорость выполнения запросов на две миллисекунды выше, чем у Postgres. Немного иронично.
Они также используют плоскую файловую структуру для целого ряда задач, которые сами по себе делятся на несколько подвидов, поддерживаемых IMS. Один из примеров — GSAM, из-за которого маме не раз приходилось мчаться на работу на такси. И всё из-за модулей, работающих с одним и тем же GSAM-файлом одновременно, создавая взаимные блокировки.
Давайте поговорим о размере их баз данных. DB2 хранит данные только о транзакциях, и транзакции отличаются по размеру, в зависимости от типа счетов, между которыми протекает транзакция. Частные счета, как мой личный банковский счет, на порядок проще, чем корпоративные счета. Каждая транзакция весит где-то от 500б до 2Кб, в среднем примерно 1Кб.
Сейчас их база данных DB2 хранит 11 миллиардов транзакций, а закон требует хранить каждую транзакцию в течение 10 лет, а по факту — 11 лет. На данный момент транзакциям только 7 лет, а их количество, предположительно, растёт на 5-8% каждый год, и так, пока они не дождутся 11 лет, когда можно будет уничтожить записи старше 11 лет.
Получается, сегодня DB2 хранит около 10Тб данных, и это только транзакции. Через четыре года это превратится приблизительно в 13-14Тб.
Большая часть оставшейся информации хранится в IMS. Эти данные сильно отличаются по объёму, так что трудно оценить размер, но я предполагаю, что их намного больше, чем в DB2.
Ещё они хранят некоторые данные на лентах, а их программы указывают машине загрузить или сохранить данные с конкретной ленты. Это довольно круто!
IDE
У всех есть что-то вроде IDE или текстового редактора, правда? У них, вот, есть. Их IDE называется ISPF и напоминает операционную систему. ISPF можно расширять, и часть, которую можно назвать IDE — это расширение ISPF под названием Endevor.
ISPF напрямую связана с мэйнфреймом, и у них нет такого понятия, как локальная среда разработки.
Интерфейс ISPF, найденный в интернете
Пакетная обработка
Примерно 80% их систем — пакетная обработка. Это задачи, которые запускаются в определенное время или интервал времени, выполняя какую-нибудь обработку данных или отправляя данные в другие банки, агентства или ещё куда-то. Например, когда я покупаю банку кока-колы, деньги снимаются с моего счета, но фактически деньги никуда не поступают, пока одно из их пакетных заданий не проведёт эту операцию. Эти задания, как правило, выполняются в ночные часы, поэтому обычно требуется день, чтобы операции между банками завершились. Транзакции внутри банка обычно мгновенные, поскольку выполняются сразу.
Пакетные задания работают с гигабайтами, иногда терабайтами данных, и в некоторых случаях могут занять несколько часов. Хотелось бы посмотреть, как мэйнфреймы IBM внезапно переходят на полную мощность в их датацентрах в ту секунду, когда на часах 00:00. Это было бы офигенно!
Проблемы, с которыми сталкиваются банки
У банков, которые работают на мэйнфреймах, множество проблем, которые они должны решать, но времени на это, к сожалению, не хватает.
Программисты становятся старше, не многие хотят учиться, а время, через которое новый сотрудник сможет уверенно выполнять свои функции, составляет 2-3 года, и даже после этого он может попасть в нетипичную ситуацию.
Есть программы, которым десятки лет: никто не понимает, как они работают, а человека, который их писал, уже давно нет.
Многие банки хотят приобрести новые крутые системы, чтобы заменить старые, а все их программисты в один голос заявляют: «это не сработает, нашего монстра нельзя ничем заменить».
Отчасти, причина огромного размера их систем в том, что они изначально допустили ошибку и начали подстраивать свою систему под другие системы. Хороший пример: мы создаём RESTful-сервисы, в которых программы, которым нужно получить от нас данные, подстраивают свои системы под нашу. В некоторых банках всё не так, и они посылают данные другим системам, например, налоговым службам, а налоговые службы могут в любой момент обновить свои системы, которые, в свою очередь, сломают те, что банки используют для отправки данных.
Банковские системы также чрезвычайно продвинутые. Личный банковский счет сильно отличается от корпоративного банковского счета. В дополнение существует как минимум 50 различных видов банковских счетов для каждого из типов. А в случае с Nordea, есть ещё и шведские правительственные счета, которые отличаются от личных и корпоративных. Думаю, что существуют финские правительственные счета и, возможно, часть датских, которые тоже чем-то отличаются.
В заключение
Будет очень интересно послушать, что банк Nordea и другие банки собираются делать в ближайшие годы, и какие новые технологии они собираются реализовывать.
Q&A
Почему ты решила программировать на мэйнфрейме IBM на COBOL?
— Я всегда хотела «работать с компьютерами», но не искала эту конкретную работу. Я увидела объявление в газете, подала резюме и получила работу. Правда, на тот момент у меня уже было немного опыта в сфере компьютерных систем.
Что тебя больше всего шокировало?
— Мой коллега однажды забыл добавить точку в конце инструкции для программного модуля в самой важной части нашей системы, которую мы называем «кассой». Она отвечает за обработку всех денег. В результате на 16 часов остановилась работа всего банка, исключительно из-за модуля, который продолжал выполняться, хотя должен был остановиться после той инструкции. Это буквально повесило нашу систему, устроив, можно сказать, DoS-атаку самой себя.
Как ты думаешь, какое будущее ждёт банки, работающие в той же инфраструктуре, как Nordea?
— Большинство банков признало, что нужно заменить старые мэйнфреймы на более современные. Nordea купил новую систему, которой обещал заменить текущую в течение 4-х лет, но банк обслуживает несколько стран, и в реальности 4 года уйдёт только на одну страну, так что в общей сложности — 16 лет.
Банки и финансовые системы, которые не поняли этого, окажутся в очень сложной ситуации. Хотя мне до сих пор кажется, что мы будем использовать инфраструктуру IBM.
С какими проблемами тебе пришлось столкнуться как женщине-программисту, которая начала работать в 90-х?
— Совершенно никаких проблем не было. В моём коллективе есть несколько женщин, но мужчин больше. Меня это не особо беспокоит.
Ты работаешь над одним модулем и, возможно, над одной кодовой базой больше 20 лет. Это вообще надоедает?
— Да, определенно, как и в других сферах деятельности. Но за время работы здесь я создала множество абсолютно новых систем по разным финансовым направлениям, и это всегда было интересно. К сожалению, с этого момента мы уже никогда не создадим ничего нового, только будем поддерживать текущее и ждать новую систему, которую купили для замены.
Насколько страшно писать код для банка?
— Очень страшно, особенно, когда мы делаем изменения на главном сервере по воскресеньям. Когда мы что-то там меняем, крупные блоки системы нужно переводить в оффлайн. Один из этих блоков — вся IMS. В этот промежуток времени может случиться что угодно, но у нас очень надежная тестовая система, так что, как правило, всё проходит без проблем.
Ты когда-нибудь допускала серьёзные ошибки в работе?
— Определенно, одну довольно серьёзную ошибку я сделала еще в 1997 году, когда мой младший сын (это я, автор) только пошёл в детский сад и кончился мой декретный отпуск. У нас есть накопительная пенсионная система. Этот тип банковских счетов в то время был не закрытым, а по закону нельзя было снимать деньги с этого счета пока не исполнится 55 лет. Поскольку счета не были закрытыми, при наличии номера банковского счета деньги можно было снимать. Поэтому решение было простым — не давать клиентам номера их банковских счетов.
Я ухитрилась облажаться и изменила модуль, который стал добавлять номер счета в письмо, отсылаемое клиенту по почте. Клиенты начали снимать деньги (с которых еще не списали налоги!) со своих пенсионных счетов раньше, чем им полагалось по закону.
Это повлекло за собой огромное внутреннее расследование. Вмешалось шведское правительство, нас атаковали финансовая инспекция и СМИ. Это всё — я.
Какая у тебя рабочая атмосфера?
— Мы недавно переехали в более «модное» место. Раньше у нас были личные столы, а теперь «выбирай любое доступное место» — открытое пространство. Мне это совсем не нравится.
(Перевод Наталии Басс)
Комментарии (90)
sparhawk
20.07.2016 17:20-1почти все крупнейшие банки в мире работают с мэйнфреймами IBM и COBOL у них — основной язык программирования
Ну еще есть вариант перевести на мейнфрейм несколько (или кучу) БД Oralce и запускать их под Linux'ом.daihatsu
20.07.2016 18:26+1Вы описали «каким ПО можно занять имеющееся железо».
А дело то не в железе, а напротив — в ПО.
И довольно внятно описано, что это не просто — почитайте то место в статье, где говорится о переходе на DB/2
romxx
20.07.2016 18:51+5Ой, слышу я, не было у вас реального проекта хотя бы близко похожего, иначе не бросались бы вы такими словами )
Crystal_HMR
20.07.2016 18:51>Ну еще есть вариант перевести на мейнфрейм несколько (или кучу) БД Oralce и запускать их под Linux'ом.
А так оно сейчас и делается. В большинстве случаев, правда, сами базы крутятся под AIX'ами, но тем не менее связка AIX+RHEL+Oracle — работает во многих крупных банках.
dmitry_ch
21.07.2016 11:41Главное — кто будет переводить и отвечать, и кто платить за вечеринку, в смысле за работу и за ответственность. Работа ради работы — милое дело для оплаты, нужно ли?
Idot
21.07.2016 12:00Ну, в ситуации сменился начальник IT, и он решил всем показать, что «новая метла метёт по-новому», подобное вполне реально.
taulatin_one
20.07.2016 18:19+325 лет на одном месте? одна платформа? схожие задачи изо дня в день?
Да, не приведи господь к такому!
brainick
20.07.2016 23:07Значит, зарплата компенсирует это. С другой стороны, а что так круто бежать-бежать-бежать за технологиями?
daihatsu
20.07.2016 23:58+10Вы из тех, что считают, что успешный человек — это сначала фриленсер, а потом владелец собственного бизнеса?
Или успешный и счастливый тот, что сменил 50 мест работы и стал большим начальником?
Люди по разному устроены.
Что плохого, что человек назубок знает свою систему и любой рабочий вопрос решает точно зная что и где искать?
Не всем надо новшества каждый день.
Кроме того там же написано, в статье — она множество новых вещей реализовала. И это ей очень нравилось.gaki
21.07.2016 06:19+2Вот так в один прекрасный день выгонят — и никуда больше не возьмут!
(Хотя складывается впечатление, что замену уволенному программисту на Коболе найти нереально, т. е., чтобы тебя выгнали, это незнамо как надо налажать.)daihatsu
21.07.2016 09:46ТАКОГО специалиста возьмут. И сразу на золотую зарплату.
Разумеется, не в Гугль.
А только в ДРУГОЙ БАНК.gaki
21.07.2016 15:38Это еще смотря за что его из предыдущего банка выгнали…
daihatsu
21.07.2016 22:52Выгнанного за мошенничество со счетами, к примеру — больше вообще НИКУДА и НИКОГДА не возмут в серьезную контору, служба безопасности которой пробивает своих сотрудников.
gaki
22.07.2016 04:05Представляется Чёрный Властелин службы безопасности, из кабинета которого сотрудник выходит уже пробитым…
soniq
24.07.2016 16:19В статье даже написано, когда и почему выгонят. Через 16 лет, когда последний модуль переедет с мейнфрейма, программисты на коболе станут не нужны. Или идти в другой банк, или джуниором на ПХП.
luarviq
20.07.2016 18:51+8Маме памятник нужно ставить при жизни, и это не какая-то там фигура речи. Году в 99-м мне пришлось работать в одном банке на IBM AS/400. Приходилось писать исключительно на RPG, так как весь софт был на этом языке. Был там и кобол, но попробовать его так и не пришлось. Единственное, что доставляло — это DB2, работать с ней действительно одно удовольствие. На мой взгляд, почти совершенная реляционная база. Сегодня, глядя ежедневно на б-гомерзкий мускул, испытываю что-то вроде ностальгии по тем временам.
Sild
21.07.2016 01:13Немного потрогав продукты IBM, плевался с их монструозности и накрученности. Однако, когда пришлось поработать с DB2 — всё действительно оказалось довольно просто и удобно. Так что поддерживаю.
luarviq
21.07.2016 06:35Высокомерие и чрезмерно раздутое ЧСВ — визитная карточка IBM. Та же OS/400, которая крутилась на AS/400 — замечательно годный продукт, объектно-ориентированная ОС, полностью написанная на С++ (привет этому вашему Линусу), где, в отличие от ущербной философии Unix «все есть файл», исповедуется совершенно иная идеология — все есть объект, что, имхо, более естественно (по крайней мере, для программиста). И почему она умерла? Из-за снобизма руководства IBM, не пожелавшего идти по пути MS и Apple и тиражировать свою OC. И с DB2 та же ситуация — крутится она на банковских серверах как «БД для избранных», а все остальные юзают оракл (кто побогаче) или (тьфу, тьфу, не к ночи будь помянут) мускул. Особняком пока стоит postgres, но стоит уже давно, и до оракла ему, на мой взляд, еще далековато.
d1f
21.07.2016 20:52-3> ущербной философии Unix «все есть файл»
В UNIX так никогда не было, это ущербное представление.luarviq
24.07.2016 18:34+2Да? А вот некто Э.Танненбаум так не считает. Более того, на страницах своей книги он нет-нет да и упомянет в очередной раз, какая это замечательная концепция — представлять все в виде файла. Ведь тогда и интерфейс нужен единый — интерфейс доступа к файлу, т.е. тот самый, набивший всем оскомину с начала 70х open/creat/read/write/close. Но конечно, кто сейчас знает и помнит Танненбаума. Все знают парня, который нашел (т.е. быстро стырил и ушел) его MINIX и выдал за свое гениальное изобретение. И если в юникс никогда так не было, то покажите мне, пожалуйста, как в этом вашем юниксе, например, примонтировать внешнее устройство, не прибегая к вышеупомянутому интерфейсу. Буду очень благодарен.
merlin-vrn
25.07.2016 08:55Укажите, какой файл отвечает в юниксе за сетевую карту? Любой юникс на ваш выбор.
Скажите, зачем потребовались ioctl? Какое это имеет отношение к файлам, когда файлы можно читать, писать, перемещаться по ним?
Про Plan9 я знаю. В нём действительно «всё есть файл», во всяком случае, система гораздо ближе к этой парадигме.
daihatsu
21.07.2016 22:57> Высокомерие и чрезмерно раздутое ЧСВ — визитная карточка IBM.
Оно не из воздуха возникло.
Все же вот уже полвека IBM — поставщик мейнфреймов в крупнейшие банки мира.
daihatsu
21.07.2016 23:01> где, в отличие от ущербной философии Unix «все есть файл», исповедуется совершенно иная идеология — все есть объект
ООП — модный претендент на серебряную пулю.
Но со времен Smalltalk прошло много лет. И человечество уже переосмыслело концепции объектов и сочло, что полноценные объекты во многих случаях слишком неудобны (громоздки).
Для этого и в языки программирования вносят изменения: полноценные «классы» нередко урезают до простых «интерфейсов».
Так что я бы не настаивал на том факте, что объекты — это архиудобно для программирования.Idot
22.07.2016 06:27Интересно, а существуют Операционные Системы основанные на Функциональной Парадигме?
MacIn
22.07.2016 07:19«Все суть объекты» и не требует полноценности. В принципе, реализацией вашего видения можно считать микроядро. А так — «все суть объекты» — например, NTшный девиз — те же интерфейсы.
luarviq
24.07.2016 19:00Простите, но у вас тут терминологическая путаница. Я о классах и интерфейсах. Когда я пишу что-то вроде template class myClass, то это интерфейс. Но с какого перепугу он вдруг стал урезанным классом? Этот самый класс class T, который параметризует мой класс, тоже может быть параметризованным, и тогда я получу уже иерархию интерфейсов, причем без всякого наследования. А классы-то где, спросите вы. А их нету, выпилены за ненадобностью. Эти мои интерфейсы и знать о них ничего не хотят. И это все происходит, прошу заметить, на этапе компиляции, когда никаких «громоздких объектов» еще и в помине нет. И кто там чего у вас переосмыслил, понятия не имею. Это, может быть, те парни, которые 20 лет писали на чистом Си, затем решили перейти на С++, не поняли, для чего он нужен и спрыгнули обратно? Ну так туда им и дорога, пусть отдыхают в своем раю. Или пускай присоединяются к питонистам и рубистам — те тоже плевать хотели на понятие типа, но чувствуют себя отлично — интерпретатор избавил их необходимости думать.
daihatsu
21.07.2016 23:05> И почему она умерла?
Не умерла.
Разработанная для AS/400 не предназначенная для PC она на PC и не переносилась.
До сих пор там и живет для чего разработана.
daihatsu
21.07.2016 23:06> И с DB2 та же ситуация — крутится она на банковских серверах как «БД для избранных», а все остальные юзают оракл (кто побогаче) или (тьфу, тьфу, не к ночи будь помянут) мускул. Особняком пока стоит postgres, но стоит уже давно, и до оракла ему, на мой взляд, еще далековато.
DB/2 применяется гораздо шире чем вы думаете.
Даже 1С — и та реализовала поддержку DB/2 для своего основного продукта.
Наряду с MS-SQL, Oracle и Postgresluarviq
24.07.2016 19:18-1Поддержку, да, это хорошо. Хорошо то, что сегодня каждый школьник может организовать такую «поддержку» — взять JDBC, например и указать в строке подключения тип драйвера — DB/2. Я говорю о том, что хотел бы работать с такой базой, как DB2, а не с такой, как (слово «база рука» не поворачивается написать) мускул.
merlin-vrn
25.07.2016 08:59+11С — объектная система, но почему-то пихают её исключительно в реляционные БД. Нет бы какой-нить Cache запилили.
navion
22.07.2016 01:09AS/400 (и Lotus) до сих пор живет в куче наших банков из 90-х, её тогда продвигали забавными роликами:
Laughing Boardroom
rrrav
26.07.2016 18:39У меня тоже был период общения с AS/400 и RPG в 90-е. Тогда AS/400 казалась вершиной компьютерной эволюции. Да наверно так оно и было — столько новых мощных идей было заложено в эту систему. Кажется, в то время из 100 крупнейших компаний мира 98 использовали эту систему. Да и безопасность у нее была безупречная.
Вроде база DB2 была встроена в систему уровнем даже ниже ОС — OS/400 использовала DB2 для своих задач. Даже в сегодняшних системах такого не припомню.
Вот RPG/400 поначалу сильно напрягал — старый (оставшийся с перфокарточных времен) позиционный язык. Пришлось написать для нее «IDE» на макросах редактора типа Multiedit.
mxms
20.07.2016 19:37+1Мне тут знакомый рассказывал историю. Довелось ему работать на одну из американских сетей АЗС cофт которой до сих пор работает на том же КОБОЛе. Копаясь в развестистом и плохо документированном коде он обнаружил каммент своего предшественника к одному из модулей с тестом типа «муй его знает что это делает». По-русски. :-D
amaksr
20.07.2016 19:58Какое-то время назад работал с Коболом — отличный язык для банков, биллинга и т.п. Легко пишется и читается, так что даже непрограммисту понятно что происходит в коде. Javascript-у у Кобола стоило бы поучиться в этом плане. Хотя засады тоже есть конечно (типа случая с забытой точкой в конце оператора IF, стоившей некой страховой компании миллиардов долларов, согласно легенде). Но куда ж без этого.
JIghtuse
20.07.2016 20:42+1Сразу скажу, что язык в глаза не видел. По статье и комментариям на Reddit сложилось впечатление, что нет там никакой простоты и удобства. Только за счёт легаси и живёт язык. Не сказать что это плохо — на момент рождения был крут, очевидно. Но понемногу устарел. Из ныне живущих только FORTRAN его старше, как я понимаю.
типа случая с забытой точкой в конце оператора IF, стоившей некой страховой компании миллиардов долларов, согласно легенде
В статье же об этом.
Что тебя больше всего шокировало?
— Мой коллега однажды забыл добавить точку в конце инструкции для программного модуля в самой важной части нашей системы, которую мы называем «кассой». Она отвечает за обработку всех денег. В результате на 16 часов остановилась работа всего банка, исключительно из-за модуля, который продолжал выполняться, хотя должен был остановиться после той инструкции. Это буквально повесило нашу систему, устроив, можно сказать, DoS-атаку самой себя.amaksr
20.07.2016 21:07Видимо это уже стало фольклором, так как каждый рассказывающий выдает это за произошедшее в их компании, но по вине коллеги, естественно.
Ну или случалось повсеместно.
luarviq
21.07.2016 08:59+1А кобол тут при чем? В этом вашем линуксе, в выражении
$ find. -type f -name "*.sh" -exec rm -fr {} \;
если вы забудете заменить первую точку на слэш, произойдет непоправимое. Это уже не выстрел в ногу, как в примере из статьи, это отстреливание шаров напрочь. И кто здесь виноват, bash, что ли?LynXzp
23.07.2016 16:08+1Один rm -rf {} уже пугает (ну или должен) и заставляет пересмотреть очень точно всю строчку.
luarviq
24.07.2016 19:09Да, точно, именно пересмотреть. И изменить. Именно это должен был сделать тот парень, программист на коболе, завесивший банковскую систему на 16 часов. Но произошло то, что произошло. Да и вообще, все закончилось хорошо. Никто не порезал таблиц с транзакциями, не выпилил оттуда юзеров с их счетами. Чистый вин.
virtustilus
29.07.2016 08:19Есть пример по-проще. Не так давно в проекте надо было почистить кэш, пальцы делают уже автоматически, но они иногда ошибаются.
В итоге вместо
$ rm -rf app/cache
написал
$ rm -rf app /cache
То есть добавил всего один пробел случайно перед слэшем. В итоге удаленная директория app целиком. Пришлось повозиться немного с восстановлением файлов в IDE, хорошо, что все в истории есть.
zeronice
21.07.2016 09:28молодой человек удивляется, что в таких системах почти все — пакетная обработка и говорит о postgre и mysql и миллисекундах на запрос. Он просто еще не в курсе, что на действительно больших объемах в независимости от СУБД обработка будет по прежнему пакетной. и более того, ни PG. ни тем более mySQL не пустят в ближайшие 10 лет ни в один банк в качестве ядра данных. Имею право так говорить, имя опыт работы в небольшом банке. Как можно себе представить систему с моментальной интерактивной обработкой всех операций, если операций миллиарды в день (для всей мировой банковской системы), размазанные по всей земле? Добавьте сюда все формальные требования к банковском делу по учету…
А по поводу жуткого легаси — это было и будет проклятьем банков (ну ок, может быть это проклятье снимет блокчейн). Потому что невозможно изменять систему на ходу. Зачем и во имя чего переписывать на новые технологии уже оттестированный код в условиях, когда нужно писать и писать свежие формы, отчеты, обработки и тому подобное? Время и ресурсы есть только на то, чтобы позаботиться о стабильности текущего состояния и проверить, что в перспективе стабильность не пропадет.
Да, системы со временем таки обновляются. Но на эти изменения уходят года. Год на планирование, год на выбор новых систем, год на проверку и пару лет на полную замену. Когда новая система вступила в бой — она уже устарела на 2-4 года, а ей еще теперь работать 10 лет.
Маме автора действительно нужен памятник — редкая порода инженеров, способных десятками лет поддерживать систему не забывая о развитии этой системыdaihatsu
21.07.2016 23:10> Да, системы со временем таки обновляются. Но на эти изменения уходят года. Год на планирование, год на выбор новых систем, год на проверку и пару лет на полную замену. Когда новая система вступила в бой — она уже устарела на 2-4 года, а ей еще теперь работать 10 лет.
Занимался автоматизацией средних оптовых фирм. Не банки. Не крупные фирмы.
По моему наблюдению с момента первых изменений до окончания работ по адаптации софта — при внедрении новой версии системы учета — проходит те же 2 года.
Так что не только в банках такие сроки.
Shamov
21.07.2016 10:49-1Теперь понятно, почему этот человек ( https://youtu.be/hqCsg4U3iqQ ) так рад, когда выходит с работы. Это из-за того, что на работе ему приходится программировать на Коболе.
AlexPu
21.07.2016 11:01+3Недавно проходил процедуру трудоустройства в Nordea. Все похоже — несколько собеседований, тестны… Тесты правда не IQ — в данном случае это Occupational Personality Questionnaire (OPQ) and Ability tests — последние это способность усваивать информацию из текста (нужно прочитать текст и ответить на вопросы. Тут самое сложное не фантазировать а использовать ровно ту информацию, которая следует ТОЛЬКО из данного текста), numerical tests — тест на способность работать с числовой информацией (даются таблицы с числовой информацией и нужно ответить на вопросы используя эти таблицы и вычисления по ним) и еще один тест — названия не помнб, но думаю он знаком многим — дается ряд картинок, нужно выбрать следующую картинку из предложенных вариантов — для меня самый провальный тест — в данном случае резултаты тестирования были на грани приемлимых — по первым двум результаты характеризуются как «хорошие», а учитывая тот факт, что я впервые сдавал такие тесты особенно (но не гений — однозначно). OPQ это не тест а опросник по резултатам которого состаляется психологический портрет…
В общем после двух месяцев собесеований (личных и по телефону), тестов, новых собеседований (причем то что мне ОСОБО не понравилось — профессиональное собеседование дыло только одно и было крайне поверхностным — по паре вопросов по темам Java, Spring, native javascript — здесь вопросы были хорошие — сам люблю такие задавать — особенности this в js), Angular… ну и на разные сопутствующие темы… типа как по моему мнению должен реализовываться RESTFul API (здесь мы лостигли полного согласия), как разворачивать микросервисы на AWS итп… в час уложились легко… но как я отметил — крайне поверностно… на других собеседованиях куда больше внимания уделялось вопросам типа готов ли я заняться в нерабочее время йогой или разведением гималайских кузнечиков если коллектив решит, что этим нужно заниматься? ну в смысле насколько я социабельный тип… вот с этм у меня (точнее у них) проблема я искренне считаю, что в рабочее время нужно заниматься работой или написанием комментариев к статьям на habrahabr.ru, а нерабочее время принадлежит только мне и я враждебно отношусь к тем, кто на него покугается :)
так что… когда цикл собеседований пошел на новый круг (типа тесты показывают, что у вас такие-то и такие-то особенности характера, давайте об этом поговорим… А не могли бы вы дать координаты еще каких нибудь рекомендателей? итп), я рещил, что с меня хватит… особенно учитывая тот факт, что мне был предложен тот минимум зарплаты, который я просил (да, я получил предварительный job offer), но уже через три недели я получил оффер с зарплатой выше того минимума, что я просил… В общем я решил, что с меня хватит, и отпислся в том духе, что если тесты что-то показывают, то стало быть так оно и есть, и даже если я или кто либо другой убедит их, что тесты ошибаются, подозрения все равно останутся и это не прибавит комфорта не мне не им… в общем меня поблагодарили за честный ответ…luarviq
21.07.2016 12:26+1Это еще что. При прохождении собеседования в некоторых компаниях в Малайзии вас попросят написать что-то вроде сочинения на вольную тему, например «Что такое успех». На английском, естественно. И количество слов — 300 минимум. А потом ответить на вопрос «в чем ваши слабые стороны». Здесь главное — долго не думать, иначе они подумают, что у вас завышенная самооценка. Я, например, ответил: я не люблю работать после обеда, и это прокатило.
AlexPu
21.07.2016 14:50Для ответа на вопрос про сильные и слабые стороны (а это у нас дежурный вопрос НА ЛЮБОМ собеседовании) у меня заготовлено несколько вариантов ответа для компаний разного типа… Причем ответов достаточно оригинальных (и таких, чтобы соеседник мог как минимум улыбнуться)
daihatsu
21.07.2016 23:14А как вы попали в Малазию?
А что там за фирмы?
А какие плюсы и минусы работы в Малазии?luarviq
22.07.2016 04:32+1Малайзийские компании делятся на две большие, никак не пересекающиеся ни по каким параметрам категории: собственно малайзийские и иностранные. Попасть в местную, конечно, проще: требования пониже, процесс трудоустройства занимает не так много времени. Но и зарплата соответственная. Процесс примерно такой: HR звонит вам и задает несколько общих вопросов: образование, опыт работы, языки и технологии и т.п. Затем он просит вас пройти онлайн-тест. Как правило, эти тесты — что-то вроде дилеммы осла, никак не могущего сделать правильный выбор, и результат почти не релевантен вашему уровню знаний. Например, по результатам одного из тестов, я показал хорошее владение ASP.NET, которую я на дух не переношу (как, впрочем. и весь этот микс дельфи и вижл васика, называемый дотнет). Затем, если все хорошо, вас приглашают на собеседование в офис (вариант — по скайпу). Там будут сидеть 2-3 серьезных мужчины и выворачивать наизнанку вашу подноготную. Молитесь, чтобы среди них не оказалось расового китайца. Почему? Вы просто не поймете его вопросов. Например, он может спросить: ват изе джава клас рут, ансеми, ансеми, что можно перевести как answer me please what is the root java class' name. Европейцы, как правило, относятся к нам хорошо и стараются на собеседовании не валить.
daihatsu
21.07.2016 23:15Да обычный корпоративный формализм.
Было бы даже подозрительно — если было бы иначе.AlexPu
22.07.2016 08:05Да, и в принципе против оного не возражаю. Объясняется он на самом деле не просто просто а очень просто — никто не хочет брать на себя ответственность (вообще говоря ЛЮБУЮ ответственность), если ее можно переложить на кого-то другого.
Так, в случае если нанятый сотрудник оказывается редиской (даже если речь идет не о криминале а просто о ненадлежащем исполнении своих обязанностей, чего довольно трудно добиться ибо трудовых подвигов от сотрудников никто не требует… даже в этом случае компания оказывается в нехорошей позиции ибо закон стоит на страже наемных служащих), любое лицо на которого попытаются свалить ответственность всегда может сказать: «а я чо? вот бумажка — тесты говорят, что он хороший — обращайтесь к создателям теста или к тем, кто вообще принимал решение об использовании этих тестов в процессе найма»…
ну и так по любому вопросу — есть процедура, есть бумажка которая прикрывает задницу… и есть большое количество кандидатов… точнее сказать количество кандидатов не очень большое, но время отпускаемое на поиск кандидатов достаточно велико, так что подходящие сотрудники рано или поздно находятся. И чем больше компания, чем строже в ней всякие правила безопасности, тем изощреннее процесс найма… Так скажем процесс найма в нокию был для меня даже более геморным чем в нордеа… Но нокия это статусное место работы, так что я дотерпел до конца… Причем одновременно по трем позициям (что нимало не смущало будущего работодателя)
instigator21
21.07.2016 15:53Могу со стопроцентной уверенностью заявить, что сегодняшний Фонд гарантирования вкладов Украины, разрабатывает новый софт на Delphi xe+ и Oracle в качестве DB.
degs
21.07.2016 16:20+1Не хотелось бы хвастаться, но наши мамы круче. Моей например 76, она до сих пор работает и создавала с нуля ПО для одного из самых успешных советских проектов. К сожалению взять у нее интервью не получится из-за глубоко вьевшейся привычки к секретности. Я сам узнал чем именно они с отцом занимаются когда мне было уже за 30 и я работал в Москве, из воспоминаний детства остались только бесконечные рулоны бумаги с распечатками восьмеричных кодов. Так что даже не знаю что про себя сказать — то ли я потомственный программист, то ли наоборот, самоучка.
drc
22.07.2016 08:23+2Впечатление от статьи — на мэйнфреймах только COBOL. А это совсем не так, там и С/С++ и HLASM. Опять же не обязательно программировать сидя под ISPF, никто не мешает править код локально и заливать датасеты по FTP.
Также есть такая вещь как UNIX System Services, куда вполне можно подключиться по SSH. А конец эпохи мэнфреймов предрекали уже не раз :)
OCTAGRAM
28.07.2016 03:30COBOL — это императивный, процедурный язык, а с 2002 года — объектно-ориентированный.
С датировкой что–то явно не то. COBOL был одним из языков, которые реализовали Direct-to-SOM. Учитывая, что последнюю версию SOM для мейнфреймов выпустили в 1997м году (потом в IBM посходили с ума, прекратили разработку SOM и переключились на Java), и COBOL тут не какой–то, а именно IBM, то объектно–ориентированным он стал ну явно не позже, чем закрыли SOM.
Vurtatoo
Отличный рассказ, но у нас всё на много лучше выглядит, правда ?!
sparhawk
Если считать, что DOS да Clipper с Btrieve — лучше, чем COBOL, то да.
Portnov
Cobol — это 50е-60е годы, а дос — уже восьмидесятые-девяностые. Так что да, у тех у кого дос всё сильно лучше.
daihatsu
А…
То есть любой софт под Ондроид лучше чем под мейнфреймы. Вот оно как.
homebody
Clipper, кстати, вполне себе функциональный язык, похожий по модели данных на JavaScript. В смысле да, функциональный — это то, что вы подумали.
fAdd = &("{x, y| x + y}")
z = eval(fAdd,{1,2})
@0,0 say z // output: 3
tsklab
daihatsu
У нас есть замечательная история.
Система бронирования (продажи) авиабилетов, созданная еще в СССР, работала на неком «большом компьютере». Не мейнфрейм, но его младший брат.
Техника эта выходила из строя… В СССР ее больше не производили, а заграничную покупать было слишком дорого (это же техника класса — для поддержки старых систем, дешевле она с годами не становится).
Написали эмулятор. На обычном персональном комьпютере (мощном, надо полагать) эмулировали старое железо.
Написать эмулятор оказалось проще, чем переписать софт бронирования авиабилетов.
Собственно мы и сейчас подобные вещи наблюдаем — VDS/VPS/Docker…
Потом его, все же — переписали.
Но далеко не сразу.
Он несколько лет успешно жил на эмуляторе.
safari2012
С некоторой натяжкой можно сказать, что окно с DOS-сессией в windows — тоже свое рода эмулятор.
daihatsu
Их эмулятор ближе к полноценным виртуальным машинам.
merlin-vrn
Окно с DOS-сессией в Windows — это в чистом виде виртуальная машина, там процессор выполняет аппаратную эмуляцию 8086.
hiddenman
А что за софт? 15 лет назад все сидели на Сирене 2.3 и Сирене 2000. С первой плотно поработал в свое время.
Idot
Конечно! У нас ведь в банках… Delphi! *cool face*
MacIn
Вы так говорите, как будто это что-то плохое.
Idot
Нет. Просто язык объявили мёртвым и похоронили, но он по-прежнему живёт в банках. И надо заметить со своими задачами — прекрасно справляется.
daihatsu
Почему мертвым?
До сих пор выпускается среда Дельфи.
Да, она сменяла пару раз владельцев.
Да, она растеряла былую популярность.
Да, она на фоне JS, PHP — почти никакое количество программистов.
Но почему мертвой-то?
MacIn
Мертвым он не является, но вот свою нишу они в первой половине-середине 2000х упустили. Пока другие (тот же net) развивались, Дельфи стоял на месте.
sim31r
Дельфи и тогда и сейчас стоит весьма больших денег, просто появились бесплатные языки программирования (близнец Lazarus, и множество других), плюс демпинг со стороны Microsoft, в том числе переманившей ведущих программистов на разработку C#. Сложно выбрать Дельфи при наличии Qt например.
MacIn
Не таких и больших. Студентам — да, не потянуть, фирмам — никаких проблем вроде.
Idot
Не, не по этой причине. Помню как вышли кривые новые версии плохо совместимые с Legacy, что вообще убивало смысл использования Delphi — из-за того что Legacy-код на них зачастую не работал. Что было особенно критично для библиотек с компонентами, многие из которых оказались несовместимы с новыми версия Delphi, хотя до этого таких убийственных проблем со совместимостью и поддержкой Legacy не было. Из-за чего народ вместо этих кривых версий продолжил использовать старые добрые Delphi 6 и Delphi 7, а затем и вовсе стал переходить на другие языки программирования.
MacIn
Я о том и говорю: они потеряли свою нишу. Под «развивались» имеется в виду не только feature'и, но и увеличение стабильности. У нас в свое время хотели при появлении новой версии перейти на нее с Delphi 7, но оказалось, что IDEшка тормозная и глючная, компилятор медленее, код хуже оптимизирован. Плюс сверху проблемы с unicode'ом. В итоге от перехода отказались, так ядро и пишем на семерке.
daihatsu
Да они охренели в свое время. Их весь дельфовый мир проклинал.
Такая востребованная система как Дельфи — а у Борланда/Инпрайза она была где-то на предпоследнем месте по важности в течение весьма и весьма длительного времени.
Они тогда то ли на БД фокус перевели…
Потом правда вернулись, когда акционеры поняли что пахнет горелым. Но было поздно.
luarviq
Похоронили, да. И туда ему и дорога. И давайте уже будем честными сами с собой — дельфи так хорош не из-за непревзойденных качеств языка Object Pascal, от которого Вирт открещивается как только может, а из-за возможности лепить кнопки на форму. И какие это задачи, с которыми он справляется? Я хочу, например, иметь обобщенные списки и вообще полноценные коллекции объектов, хочу перемещаться по ним как положено, при помощи итератора, а не как этому вашему компилятору взбредет в голову. Если меня замучает ностальгия, я, так и быть, запилю что-нибудь на FreePascal (если совсем станет плохо — на трупопассале седьмом, но это уже будет клинический случай). И почитаю книгу пейсателя Фленова «дельфи глазами хацкера»
Idot
Там не только кнопочки, эти же компоненты делают очень удобной работу с базами данных. Помню, как я однажды, правил программу на Visual Basic, ну так вот кнопочки — там были, а вот работу с базами данных — пришлось всю писать ручками. А в Delphi всё это делается за несколько кликов мышкой — кинуть на форму компоненту для баз данных и подключить.
MacIn
Опять эти стародвание байки про «ляпнул кнопки на форму и готово». Откуда? Я СЕМЬ лет пишу на Дельфи по работе. За эти семь лет у меня было ровно 2 (ДВА) таска, связанных с окнами. Больше ничего связанного с UI не было вообще — серверная часть.
Есть коллекции в этом языке. Итератор — спорная вещь.
alan008
В новых версиях Delphi обобщенные типы (generics) есть. И итераторы есть. И свой собственный итератор можно написать. А вы говорите язык не развивается...
OCTAGRAM
Так я в 2005м году открыл для себя Аду.
Непревзойдённые (почти) качества в языке–таки имеются. Я рассматриваю Delphi как 2 языка в одном, и второй, менее мейнстримный язык, очень привлекателен. В первом языке — ручное управление памятью, единоличное владение и try…finally для объектов, а во втором — счётчик ссылок и RAII. Это можно видеть на примере, как реализаованы мейнстримный TJSONObject с ручным управлением памятью и мой CVariant. Диапазонные типы имеются, пусть даже ими сложнее пользоваться, чем в Аде (В языке Ада цикл от -1 до 0 не выбрасывает исключение нарушения диапазона, потому что система типов двухуровневая, для диапазонов обычно не создаются новые диапазонные типы, с которыми будут проблемы, как в Delphi, а делается ограниченный подтип существующего типа, и арифметические операции по умолчанию возвращают результаты в самом широком подтипе типа). Но даже такая плохонькая система типов может повышать целостность, особенно, если начать диапазон с -1 и не бояться использовать его в for. По крайней мере, в диапазоне от -1 до 15 не затесается 50.
Язык нативный, подходит для низкоуровневого программирования, при этом особенности компилятора позволяют контроллировать целостность. К сожалению, проверки по умолчанию отключены, как если бы каждый первый встречный писал на Delphi видеокодеки, но их хотя бы можно включить, и я видел, как всплывает вот это вот всякое, когда во всём проекте резко врубить все проверки, и как всё оздаравливается, если исправить ошибки, вызывавшие эти исключения. В C++ коде для vector<> вы так просто в проекте проверки галочкой в настройках не включите. Мне приходилось делать другой шаблон, который заменял operator[] на at(). Что касается контроля диапазонов, в Java для сравнения, свой тип нельзя определить, а для встроенных типов переполнение не проверяется. В C# ключ /checked нужно использовать при компиляции, тоже под видеокодекописателей язык заточен, наверное.
Наравне с C++ и Objective-C, Delphi и Ada позволяют в том или ином виде использовать RAII и счётчики ссылок, в то время, как многие разработчики инструментов разработки посходили с ума и заколебали остальных своей сборкой мусора. ARC в Objective-C очень распиарен, но хронологически в Delphi он был раньше, жаль только, что он был в немейнстримной версии языка.
MacIn
Золотые слова. Именно этот баланс, возможность когда надо, ковыряться руками, а когда не надо — доверить компилятору и привлекает.