Guest User

Medium cobol

a guest
May 1st, 2018
2,438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.04 KB | None | 0 0
  1. root@localhost:~# links -dump 'https://web.archive.org/web/20160826003417/https://medium.com/@Svenskunganka/interviewing-my-mother-a-mainframe-cobol-programmer-c693d40d88f7' | nc seashells.io 1337
  2.  
  3.  
  4. Link: canonical
  5. Link: publisher
  6. Link: author
  7. Link: alternate
  8. Link: mask-icon
  9. Homepage
  10. Sign in / Sign up _____________________
  11. 461
  12. 37
  13. Go to the profile of Tom Jordell
  14. Tom JordellBlockedUnblockFollowFollowing
  15. Programmer
  16. Jul 149 min read
  17.  
  18. ----------------------------------------------------------------------
  19.  
  20. Interviewing my mother, a mainframe COBOL programmer
  21.  
  22. My 1 year older brother (to the left), my mother and me (to the right)
  23.  
  24. My mother has been working for one of the largest banks in the EU since
  25. before I was born and I've always been fascinated by her line of work,
  26. especially these last years since I've become a programmer myself. I've
  27. been asked to interview her plenty of times, and finally decided to do so.
  28.  
  29. Some notes
  30.  
  31. The banking programming world is a completely different world than what
  32. most of us are used to, and for the next couple of hours after posting
  33. this I'll accept whatever questions you may have for her, but keep in mind
  34. that some questions may not be answered due to security concerns. I'll be
  35. posting this to HN & Reddit and will answer questions over there as well.
  36. I won't write this as a Q&A, but more like I'm telling you her story.
  37. UPDATE: I've added Q&A of some FAQ to the bottom of the post!
  38.  
  39. 1991
  40.  
  41. The year she started internal training at Nordea, which back then was
  42. known as Nordbanken (The North Bank) but changed name to Nordea in 2001.
  43. During the training she had to take various tests, most notably an IQ-test
  44. to see if she had the intelligence to work within this field. Other tests
  45. includes a psychological checkup to make sure she had the psyche to handle
  46. that line of work and a multitasking test which she failed horribly where
  47. she got the score 22/100. She did very good on the other tests and among
  48. the 16 available positions, she managed to get one.
  49.  
  50. The position in question was an IBM Mainframe COBOL programmer, which to
  51. this day, 25 years later still work as for the same bank.
  52.  
  53. This position is the most important one in the bank, at least from a
  54. technical standpoint. If, let's say, my mother and everyone on her team
  55. would quit their job, the bank would go under within a matter of weeks if
  56. they're lucky. They have a rotation of people on her team being available
  57. 24/7. I remember when I was younger and she had to take a taxi to work in
  58. the middle of the night on a Sunday to fix a dead-lock problem.
  59.  
  60. COBOL...
  61.  
  62. ...is not a fancy programming language like your functional Haskell or
  63. concurrent Golang- it's an imperative, procedural language and since 2002,
  64. object-oriented. There's nothing wrong with the language itself, the
  65. problem is that barely anyone knows it-at least not in the context of
  66. mainframe programming. My mother is the next youngest person on her team,
  67. and she's born 1964, and the youngest person being 2 years younger. Since
  68. almost all of the largest banks in the world runs on IBM Mainframe with
  69. COBOL as the primary programming language, this is a global issue. The
  70. smaller banks however are better off which usually runs something like
  71. Java without mainframes.
  72.  
  73. My mother used to ask me if I wanted to learn, but since working with the
  74. more fancier stuff like Postgres, Redis, Node, Crystal, PHP, among others,
  75. I've always answered "Never, ever!". I am still very interested in what
  76. she do, but these types of systems gives off the probably worst
  77. enterprisy-feeling that you can imagine, which I'd like to avoid.
  78. I can only imagine the fat paycheck a 20-year old mainframe programmer
  79. would get though, because your age in this case would be invaluable.
  80.  
  81. Databases
  82.  
  83. Their primary database is called IMS, which is an hierarchical database
  84. built by IBM for the Apollo program. Internally they call it DL/1 which is
  85. short for Database Language One. They are trying to migrate to DB2 which
  86. is a relational database that speaks normal SQL, but considering the sheer
  87. volume of data that Nordea is storing, this is a task that is going to
  88. take years. It's not as simple as just moving the data from IMS into DB2,
  89. they also have to update their modules to load & save data from DB2
  90. instead of IMS and they have thousands of modules, many of which were
  91. developed by programmers that have either passed away or have retired.
  92.  
  93. Each transaction is stored in DB2. They're avoiding writing to IMS as much
  94. as possible, only reading data from it until their newly purchased system
  95. is fully integrated and they can start storing data there.
  96.  
  97. IMS is extremely old and very slow (for some tasks).
  98. Searching for data can take hours. Hah, and here we are, arguing that
  99. MySQL delivers 2ms better query speed than Postgres. That's a bit ironic.
  100.  
  101. They also use a flat-file structure for a lot of tasks, which themselves
  102. has different flavors that IMS supports. One such example is GSAM which
  103. has forced my mother to take a taxi into work many times due to modules
  104. working on the same GSAM-file at the same time, producing deadlocks.
  105.  
  106. Let's talk about the size of their databases for a moment. DB2 is only
  107. storing data about transactions, and each transaction is different in size
  108. depending on what type of account the transaction goes to/from. Private
  109. accounts like my personal bank account is orders of magnitude more simple
  110. than bank accounts used by business. Each transaction is somewhere between
  111. 2KB to 500 bytes, so let's say the average is 1KB.
  112. At the moment, their DB2 database holds 11 billion transactions, and the
  113. law requires them to save each transaction for 10 years, having settled
  114. for 11 years. At the moment, transactions are only 7 years old and the
  115. amount of transactions is estimated to grow roughly 5-8% each year, until
  116. they hit the 11 year mark where they can nuke transactions that are older
  117. than 11 years.
  118.  
  119. So at the moment, the DB2 database holds about 10TB of data, and that data
  120. is only transactions. In 4 years, it'll be somewhere around 13-14TB of
  121. data.
  122. IMS holds most other information. That kind of data differs a lot in size,
  123. so it's hard to estimate how large it is, but I guess it's much larger
  124. than their DB2 database.
  125.  
  126. They also store some data on tapes, where their programs tell a machine to
  127. load/save data from a specific tape, which is pretty cool!
  128.  
  129. IDE
  130.  
  131. Everyone has some form of IDE or text editor, right? Well, yes they do.
  132. The IDE is called ISPF which is like an entire OS. ISPF can be extended,
  133. and the part we would call an IDE is an extension to ISPF which is called
  134. Endevor.
  135.  
  136. ISPF is directly connected to the mainframe, and there's no such thing as
  137. a local development environment here.
  138.  
  139. ISPF Interface found on the web
  140.  
  141. Batch
  142.  
  143. Roughly 80% of their systems are batch jobs. These are jobs that runs at a
  144. certain time or interval, doing some processing on their data or sends
  145. data to other banks/agencies/etc. For example when I buy a can of Coke,
  146. the money is withdrawn from my account balance, however the money is not
  147. actually transferred anywhere until one of their batch jobs does so. These
  148. jobs are usually executed during the night, which is usually why it takes
  149. a day before transactions between banks are completed. Transactions to the
  150. same bank are usually instant because it executes immediately.
  151.  
  152. Batch jobs are working with datasets on a gigabyte-, sometimes
  153. terrabyte-level and can in some cases take hours to complete. I'd love to
  154. see how IBMs mainframes all of a sudden starts working at full capacity
  155. the second the clock turns 00:00 in their datacenters, would be pretty
  156. cool!
  157.  
  158. The problems banks are facing
  159.  
  160. Banks that run on mainframes have quite a lot of issues that they need to
  161. take care of, but unfortunately time is scarce.
  162. Programmers are getting older, not many wants to learn and the time before
  163. a new employee can stand on their own feet is 2-3 years, and even then
  164. there are a lot of gray areas for them.
  165. There are programs that are decades old that nobody even knows what they
  166. do and the person who wrote it is long gone.
  167.  
  168. Many banks are trying to purchase shiny new systems to replace what they
  169. currently have, while almost all of their programmers are saying "this is
  170. not going to work, you cannot replace this monster that we have here".
  171. The reason their systems has become so huge is partially because they made
  172. the mistake early on to tailor their own system towards other systems. A
  173. great example here is how we build RESTful services, where programs that
  174. wants to get data from us have to tailor their system to match ours. This
  175. is not the case with some banks, instead they're sending data to other
  176. systems (such as the tax agency) which may at any point update their
  177. systems which in turn breaks the current system the bank are using to send
  178. the data.
  179.  
  180. Banking systems are also extremely advanced. A personal bank account
  181. differs a lot from a business bank account, and there are at least 50
  182. different types of bank accounts for each of them. And in Nordeas case,
  183. they also have the Swedish government accounts, which are different from
  184. both personal and business accounts. I think they have the Finnish
  185. government accounts and maybe a portion of Denmarks as well, which differs
  186. too.
  187.  
  188. Final words
  189.  
  190. It's going to be very interesting to hear what Nordea and other banks will
  191. do these upcoming years, and what new tech they'll be implemented on.
  192. I may have forgot to ask something, so if you have any questions go ahead
  193. and ask, I'll be forwarding them to her and write down her response for
  194. the next couple of hours.
  195.  
  196. Q&A
  197.  
  198. Why did you choose to work with IBM Mainframe COBOL programming?
  199. - I've always wanted to "work with computers", but I wasn't aiming for
  200. this specific job. I saw an ad in the papers and applied and got the job.
  201. I had a bit of computer background before I applied though.
  202.  
  203. What is the worst thing that you've seen on a day?
  204. - My co-worker forgot to add a dot to the end of a statement for a module
  205. in the most critical part of our system which we call "The Cash Register".
  206. It is the part that handles all the money. The result was that the entire
  207. bank was down for 16 hours straight due to the module continiuing
  208. executing statements when it actually should've stopped after that
  209. statement. It basically overloaded our systems, a self-DOS of sorts.
  210.  
  211. What do you think will happen in the future for banks that run on the same
  212. infrastructure as Nordea?
  213. - Most banks has acknowledged that we need to replace the older mainframes
  214. with something more modern. Nordea has bought a new system which it has
  215. promised to replace the current one within 4 years, but Nordea takes care
  216. of multiple countries and a more reasonable number is 4 years per country,
  217. so 16 years in total.
  218. Banks and finance that haven't acknowledged this is going to have a very
  219. rough time ahead of them. I still think we'll live on IBM infrastructure
  220. though.
  221.  
  222. What were the challenges you've faced as a female programmer that started
  223. in the 90's?
  224. - No problem at all. I've got a couple of female co-workers, but most are
  225. men. It doesn't bother me that much.
  226.  
  227. You've been working for the same entity and possibly the same code base
  228. for more than 20 years. Does it ever gets old?
  229. - Yeah it definitely gets tiring after a while, like most other lines of
  230. work becomes. But during my time here I've build many completely new
  231. systems for various things in finance, and that has always been fun.
  232. Unfortunately from now on we will never build anything new, only maintain
  233. what we currently have and wait for the new system we've purchased to
  234. replace the current one.
  235.  
  236. How scary is it to write code for a bank?
  237. - It is very scary, especially when we push changes to production which
  238. happens on Sundays. Whenever we push new changes to production, huge parts
  239. of the system has to be taken offline. One of those parts is the entire
  240. IMS. During that period anything can happen, but we have a very robust
  241. test environment so it usually goes through smoothly.
  242.  
  243. Have you caused any huge mistakes for the bank?
  244. - Definitely have, quite a large mistake I did back in 1997, when my
  245. youngest son (that's me, the writer) just started pre-school and my
  246. parental leave was over. We have a system for saving money for retirement.
  247. Those type of bank accounts wasn't locked back then, and the law says you
  248. cannot withdraw money from that account before you're 55 years old. Since
  249. the accounts wasn't locked, it was possible to withdraw money if you had
  250. the bank account number, so the solution was simple; not give the customer
  251. their bank account number.
  252. I managed to screw up by modifying a module that added their bank account
  253. number to the mail that was sent out to customers. So what happened was
  254. that customers started withdrawing money (which was not taxed yet!) from
  255. their retirement savings account before they were allowed to.
  256. This triggered a huge inspection, the Swedish government stepped in, the
  257. financial inspection and the media were all over it. That was me.
  258.  
  259. What's your working environment like?
  260. - We've recently moved to a more "hip" location. We used to have personal
  261. desks, but now we have this "pick whatever spot is avaiable" open area. I
  262. dislike it a lot.
  263.  
  264. ProgrammingBankingMainframeIBM
  265. 461
  266. 37
  267. * BlockedUnblockFollowFollowing
  268. Go to the profile of Tom Jordell
  269.  
  270. Tom Jordell
  271.  
  272. Programmer
  273.  
  274. *
  275. Don't miss Tom Jordell's next story
  276. BlockedUnblockFollowFollowing
  277. Tom JordellTom Jordell
Advertisement
Add Comment
Please, Sign In to add comment