The Linux Foundation Projects
Skip to main content
BlogCOBOLCOBOL Programming CourseMentorship

Summer Mentorship 2024: COBOL Programming Course

By September 24, 2024No Comments

Written by Ali Mohamed, University of Western Ontario and Open Mainframe Project Summer Mentee

Introduction:

Hello everyone! My name is Ali, and I’m excited to be here as a mentee for the COBOL Programming Course. It’s been an amazing learning experience for everyone involved and I am happy to have been a part of it over the summer. Ever since my senior year of university, I’ve had acquired a unique interest in Mainframe technology when I met some IBM Z Student ambassadors on campus which not only crushed my previous perceptions of Mainframes as Legacy Technology, but also drew my interest to an area of technology which has long been forgotten, yet ever persistent in the essential services of our modern world such as health care and Finance. I even made time to attend various events and workshops in the IBM Lab in Markham, ON which only led me to become even more invested.

Discovering COBOL:

Through the IBM Z-Xplore Platform, I fed into my interest and learned so much about the diverse areas of Mainframe technology and its vast ecosystem, including the programming Language of COBOL. Often associated with the punch cards found prevalently in the 1960s, COBOL is a critical language used in Mainframes which has had many revisions over the years, like other programming languages like C or C++. As such, anyone who’s worth their salt must learn COBOL to run programs on the mainframe, and while I was initially alienated by the strange syntax, I invested my time into learning COBOL and have become somewhat proficient, but Like anything, you can always do better to educate yourself.

Applying for the Open Mainframe Project:

As my classes concluded and summer approached, in addition to the standard job search I decided to look into mentorship and such, and I was wondering if any would benefit from my experience with the mainframe. As such I landed on the Open Mainframe Project which seemed very promising, and as such I applied for the COBOL Programming Course Mentorship. And thankfully, I was beyond delighted to have been accepted. I had not worked any jobs at this point, and in a time I was desperate for some form of professional experience, I was blessed with this opportunity to contribute to something with great potential to help others like myself enter into the Mainframe through COBOL.

What did I do?

As part of my journey in this course, my role has been to automate the process of running and testing COBOL programs using a tool called COBOL Check (previously worked on by my Mentor Ashish Kumar). Initially, we were planning to use Jenkins for this automation. However, after consulting with some experts in the field, we made an interesting pivot. We decided to go with GitHub Actions instead. This choice was made because GitHub Actions is more accessible and easier to understand, especially for those who might be new to automation or continuous integration.

This shift to GitHub Actions has been an exciting part of the learning process. It’s taught me the importance of flexibility in software development and how choosing the right tools can make a big difference in project efficiency. Over the past few weeks, I’ve been working on creating a workflow that streamlines the testing process, making it easier and more efficient for developers to test their COBOL programs on the mainframe, all integrated seamlessly with GitHub.

Watch Ali and his fellow mentee Rituraj Mahato present their final presentation here:


The Learning Curve:

While I did have some previous experience with GitHub actions for some personal projects, I must admit, the learning curve was steep. Diving into the world of GitHub Actions, understanding how to integrate it with mainframe systems, and figuring out the intricacies of COBOL testing – it was all quite challenging. But that’s what made it exciting! Each obstacle I encountered was an opportunity to learn something new, to problem-solve, and to grow as a developer.

One of the most interesting aspects was figuring out how to connect to the mainframe and interact with the MVS Datasets. This required a deep dive into Zowe CLI, a command-line interface that allows interaction with z/OS from a local workstation. 

Another challenge was setting up the correct environment variables and secrets in GitHub Actions to securely connect to the mainframe. This involved careful management of sensitive information like usernames and passwords, ensuring they were never exposed in the code or logs.

Perhaps the most rewarding part was successfully automating the process of running COBOL Check on our programs. Seeing the GitHub Actions workflow execute, connect to the mainframe, run the tests, and report back the results was incredibly satisfying. It was a tangible demonstration of how modern DevOps practices can be applied to legacy systems, potentially revolutionizing how COBOL development and testing are done.

Throughout this process, I gained a newfound appreciation for the robustness of mainframe systems and the ingenuity required to integrate them with modern tools. This experience has not only enhanced my technical skills but also given me a unique perspective on the evolution of technology and the importance of bridging old and new systems.

Collaboration and Community:

Throughout this mentorship, I’ve been constantly amazed by the support and knowledge of the COBOL community. My mentors have been incredibly patient and helpful, always ready to guide me through complex concepts or troubleshoot issues. I’ve also had the chance to interact with other mentees and developers in the field, sharing experiences and learning from each other.

This sense of community has been one of the most rewarding aspects of the mentorship. It’s shown me that even in a field often perceived as ‘legacy’, there’s a vibrant and supportive network of professionals passionate about keeping these critical systems running and evolving. I’ve had a bad habit of sticking my head in the sand and going about my day, so I’m hoping to overcome this and become more actively involved in the community.

Moving forward, I plan to participate more in online forums, attend virtual meetups, and possibly even contribute to open-source projects. I’ve realized that there’s so much to gain from engaging with others in the field – not just in terms of technical knowledge, but also in understanding the industry trends, career opportunities, and the real-world impact of the work we do.

Moreover, this experience has taught me the value of collaboration in tech. In an era where technology is advancing rapidly, no one person can know everything. By actively participating in the community, sharing what I’ve learned, and being open to learning from others, I can continue to grow both personally and professionally.

I’m excited about the prospect of giving back to this community that has been so welcoming and supportive. Whether it’s by helping newcomers to COBOL, sharing my experiences with integrating modern tools like GitHub Actions, or simply being a supportive voice in discussions, I hope to contribute to keeping this vibrant community thriving for years to come.

Looking Ahead:

As I near the end of my mentorship, I’m excited about the future. The skills I’ve gained – from COBOL programming to DevOps practices – have opened up new possibilities for my career. I’m looking forward to further refining the automation process we’ve developed and possibly extending it to include job submission and job status management.

More importantly, I’m eager to continue being part of this community, contributing to open-source projects, and helping to bridge the gap between mainframe technology and modern development practices. Who knows? Maybe one day, I’ll be mentoring someone else on their COBOL journey!

With Zowe V3 projected for September, I’m excited for the new features and improvements it will bring. The promise of enhanced security measures, improved performance, and new APIs could potentially revolutionize how we interact with mainframe systems. I’m particularly interested in exploring how these updates could further streamline our automation processes and make mainframe development even more accessible to those with more common programming backgrounds. I’ll be revisiting this project soon enough 🙂

Stay tuned here and the Open Mainframe Project social channels for more Mentorship updates.