Job markets evolve and the skills needed in the workplace change. Analysts have recently asked whether colleges are up to the task of keeping up with the skills necessary for students to flourish in their chosen careers. Like Joe Gentile, z/OS performance analyst at IBM, and Derek Powe, vice president for systems technology at M&T Bank, students enter the workforce and find that their skills need to be honed or augmented by new skills. We asked Gentile and Powe about their mainframe education in college and what they’ve since had to relearn on the job.
Interface Differences and Basic Z Skills
Gentile says that while earning his computer science degree, he didn't hear much about mainframes unless he was dealing with operating systems. In fact, he wasn't aware of z/OS until he interviewed with IBM on the SUNY Binghamton campus, and later learned that the servers he used in college were likely running Linux on Z. In fact, one of the first challenges he faced on the job was how to interface with the mainframe. In college, Gentile used Microsoft Visual Studio developing tools, debugging tools, and either Cygwin or Unix runtimes, but work at IBM entailed using green screens. He also pointed out that they did coding on z/OS using green screens, including 3270 Emulator, Time Sharing Option (TSO), Interactive System Productivity Facility (ISPF), and job control language (JCL). Testing and debugging was often performed using a customized z/VM, which supported enhanced hardware emulation and debugging facilities. "We would initial program load (IPL) z/OS guests on top of z/VM with the level of code we were testing and submit test programs as batch jobs," he said.
Gentile clarifies, "It wasn’t as much about skills I had to relearn on the job, as much as new skills and information about the Z platform I learned on the job." Powe agrees, stating, "The context was dramatically different." In Powe's experience, the basic IBM Z skills he learned in college didn't have "any stakes" like they did on the job. For instance, he says, "Z skills learned in school didn't account for Severity 1 issues and application data," and he had to gain these skills through his work.
Learning Code
Powe states that Java was executed differently in college courses, compared to on the job. "In college, you create code from scratch and standards don’t have as great an impact. In the real world, interpreting other people’s code and making updates is where standards and expertise show," he explains.
Gentile emphasizes that testing and debugging were far more important on the job than they were throughout college. "In college, testing your code is not given much emphasis, but in the field it is so important that entire teams are dedicated to testing code, and test automation. We even test our test code," he explains. For Gentile, in college, debugging his own code was not fun and would often be the last step before submitting a project. "I remember stumbling through the complicated C syntax of the pthread interface for my first multithreaded school project. If asked back then, I probably would have said that I counted fixing compiler errors as debugging. I seldom got more sophisticated than using breakpoints in Visual Studio or GNU debugger (GDB) and print statements," he says.
Gentile, who began his IBM career as a Global Resource Serialization (GRS) function tester, recalls times when the team used trace commands to trace execution of the code on the system or to inject errors. "I found this to be so interesting because you could set traps along a flow of modules in the system to narrow down the problem. When a trap hit it would stop the virtual z/OS system and you could display or alter memory and registers. It really allowed you to understand the Z architecture deeply." He adds that developers would also use interactive debugging tools like IBM Developer for Z to trace their code, which let them focus on their module alone. "The more I practiced and learned about debugging, the more I learned about z/OS code. I was very impressed with the rigor of z/OS code," Gentile recollects.
Fine-tuning Learned Languages
Additionally, in college, Gentile learned AT&T x86 Assembly, but after starting at IBM, he had to learn a new assembly language with IBM's High Level Assembler Language for Z. "There was quite a lot of overlap but it drew attention to subtle differences between Z and x86," he says. "For instance, x86 has a program counter and Z has as Program Status Word (PSW) that indicated a lot more than just the instruction address. Addressing mode (AMODE) and residency mode (RMODE) were new concepts as well. You didn’t malloc() memory, but instead you GETMAINed it." Moreover, he explains, "there was the address space map, including the 16MB line and the 2GB bar delineating 24-bit, 31-bit, and 64-bit virtual storage." Gentile also indicates there are quite a few terminology differences and a deluge of three-letter acronyms and some four-letter ones that are unique to IBM, including PSW, DASD, TCB, PSA, SRB, ASID, APAR, and PTF. "It was a little difficult to follow what people were saying when I first started, but you catch on quickly," he recounts.
College to Workforce Adaptation
Powe reminds students that introductory courses and the like are just the beginning. "IBM Z is a contact sport and practice only prepares you so much," he says. Gentile agrees, "For the most part, many of these skills were only introduced or taught superficially in college. Once these skills were put into practice at IBM and in z/OS, I was able to learn them more deeply and tailor them to the specifics of that environment." In some cases, he adds, the knowledge was very domain specific, but in others, it was just a matter of getting used to different development tools or using TSO to interact with the mainframe instead of Secure Shell (SSH), or learning a different computer architecture. "For me this was never a stumbling block. Plenty of colleagues were happy to help me," Gentile relates.
Powe says that he modified his expectations, noting that some have unrealistic expectations that students will be experts in the mainframe field within a couple of years. "This can cause unnecessary stress," he adds. "Students with an open mind and good work ethic will achieve their career goals, especially if they keep in mind that only time and experience will make them experts." Gentile concurs that having an open mind is essential for mainframe work, especially as the world economy continues to depend on the reliable, efficient mainframe.