Mainframes and Early Professionals: My Story.

Toby Keegan
Theropod
Published in
5 min readApr 22, 2022

🖥

Disclosure

Before I jump into this article, I want to provide full disclosure about my situation so that you can form an opinion on my views.

I was hired by IBM UK in 2019, fresh out of school, as a Software Developer Apprentice. My previous experience in tech was a mediocre A-Level result in Computer Science.

This means that IBM paid for my further education as a Software Developer. And at the same time, I was gaining experience working in the tech industry.

The opinions expressed in this article belong solely to me and do not reflect the views of IBM (or anyone else, for that matter!)

Introduction

In the summer of 2018, I left Sixth Form with 3 A-Levels. Sadly, I did not get the grades I was hoping for to go into a career in tech (thankfully the whole point of this story is how that turned out to not matter!)

It was never my plan to go to University. I knew I wanted to get into a working environment but I also knew I needed more education to break into the industry. Hence, I applied at IBM for a Software Development Apprenticeship.

A few months go by, and I get a phone call telling me I’ve been accepted for the apprenticeship and that I had been “matched” to a role here at IBM Hursley. To the untrained eye I’d landed the most Matrix-style job ever:

z/OS Systems Programmer

Awesome! I’m going to get to work with the latest and greatest technology from IBM! Sure, I’m aware that mainframes are old but I’ve seen the articles about how relevant they still are, and there are not many people that can say they work with technology as powerful as a mainframe.

Working as a z/OS Systems Programmer

To start my new job, I had to move 130 miles away, leaving my friends, family, and job at McDonald’s behind. I found myself a house share much closer to Hursley and prepped for my first day of work.

The first days, weeks, and even months of my new job left me swamped. I don’t think anything could have prepared me for the fundamental differences between a z/OS system, and for example, the Linux environments I’d gained experience in my education.

Luckily, I was surrounded by a team of very talented System Programmers at Hursley who had worked closely with the software and hardware for many years. They showed great patience as I overcame the initial learning curve, and their patience paid off. From about 6 months in, things started to click. I stopped mapping z/OS concepts to a “Unix equivalent” and instead started accepting them as their own entities with advantages and disadvantages over other platforms.

As the next year progressed, I was completing my Software Development Apprenticeship on the side, and really coming to understand the Hursley z/OS estate. I was pushing new ideas to the team, like ways to improve our automation using modern tooling and languages other than REXX (although I must admit I did become fond of the language!)

I gained experience using new and exciting technologies like zCX (z/OS Container Extensions) and ZOAU (Z Open Automation Utilities) — I’ll link both at the end of this article if you want to find out more.

I picked up the core knowledge of the ecosystem that supports z/OS — from networking to storage (disk and tape), as well as z/VM. I became very familiar with RACF, and JES2, and even picked up some more specialist understanding of our most used products for development at Hursley like CICS, Db2, and MQ.

Time for a change

Despite all of this learning, there was one problem: I’d joined the company to do Software Development, and other than my apprenticeship, I wasn’t getting too much experience in development work. My role was much more the Ops side of DevOps.

This put me in a wonderfully unique position: An early professional with 2 years’ z/OS experience and a desire to build applications for the Z platform. With the skills gap in mainframe ever-growing, I started an internal hunt for my next challenge.

In less than 24 hours, I was interviewing with IBM’s STSM (Senior Technical Staff Member) for MQ on z/OS. And less than 2 months later, I transitioned into MQ Development for z/OS, where I currently reside.

Moving into development introduced me to a whole new set of challenges, such as deepening my learning of zArchitecture. I was also taken far out of my comfort zone from my apprenticeship, where I’d mostly used Python, JavaScript and a little bit of Java (all high-level languages). MQ for z/OS is written in precisely none of these, but rather PL/X (an IBM proprietary language not available for public use), C, and HLASM.

This meant shifting from nice high-level languages that handle all your memory for you, do lots of fancy things and generally make it easier to convert an idea in your head to instructions for a computer, to now thinking more like the CPU.

MQ for z/OS Development

During my time in MQ, I’ve still been able to exercise my previous sysprog skills. They come in very handy when I still have a mind full of obscure information about z/OS that other developers haven’t had the chance to learn. It helps me process error information, scan job logs at record speeds, and generally, navigate the platform with greater ease than a developer who has moved from a Unix-like platform.

But my time has helped me specialize in the lower-level running of z/OS. My job has me looking through address-space memory dumps, instruction by instruction that the CPU was processing and the memory involved in these. I’ve dipped my toes in writing assembler for zArchitecture, which has given me a great appreciation for the brave souls writing compilers and the like!

Day to day, I get to write source code for MQ, as well as write and modify the tests that make up our vast test infrastructure. There are not many 21-year-olds that get to say they help make enterprise applications used by the world’s banks, airlines etc!

Conclusion

The purpose of this short story was to give young people a view of how I started at the age of 18 in the world of the mainframe. Or perhaps, the older generations reading this might find my path interesting compared to how they started! Either way, I hope I’ve conveyed a few key points here:

  1. Mainframes are not dying. They have a thriving ecosystem with more and more modern tools being ported every day. You can get the very latest versions of Git, Python, NodeJS and with z/OS Container Extensions, the list of supported languages and environments ever increases!
  2. It is entirely possible to break into the mainframe space, even if you have no prior experience and are simply interested in the platform.
  3. Jobs in mainframe are challenging, but very rewarding. If you want to work with technology that is vastly different from the swamp of cloud and container-based applications, then perhaps z/OS is the place for you to start!

--

--