The Future of Coding Assistants: Generative AI and Automation
Generative AI coding assistants promise to make software development over 50% faster. Realizing this value requires assistants that are more than just a chatbot. Developers need an assistant that leverages the power of both GenAI and automation capabilities. This combination helps to boost productivity across the entire application lifecycle, from understanding to transforming, optimizing, refactoring, testing code, and more. Join us to learn more on IBM's point of view and how you can enhance productivity and streamline modernization efforts, from COBOL to Java applications, and more.
Chapters
Full transcript
The complete talk, organized by section.
River Wong
Thanks everyone for coming. I'll let you take your seat first, but I hope everyone had a really, really good lunch. The food was so good. I might've eaten a bit too much, considering I'm doing a talk right after.
Welcome to an Enterprise Technology Leadership Summit exclusive — and it's only because they haven't invited me to any other conference after this. But I'm here, and so are you.
My name is River Wong, and I'm a product manager on the IBM watsonx Code Assistant team at IBM. And today I'm really excited that there are some things that I get to talk to you guys about. Some of it is just so much fun that if we weren't in Las Vegas, I would've made you sign an NDA — because what happens in Vegas stays… okay, you got it. (I was worried — does everyone do this in Vegas? Does everyone make the same joke? Actually, I've never been.)
Agenda
In the next 26, 28, 27 minutes, I'm going to tell you about three things, and these are the things I want you to take away from this talk:
1. Why is your life going to become difficult — what is that looming cloud in the distance that's coming towards you? Maybe some of you are feeling this pain already. 2. What is IBM's perspective on coding assistants, generative AI, and how to tackle these problems? 3. What solutions we have for you today.
Why your life is about to get difficult — application modernization
Application modernization, that's what I've been told people care about at this conference, and that is one of the most urgent priorities facing businesses today. It's becoming more and more of a business imperative rather than just a technical priority. In fact, it's becoming both top-down and bottom-up. It's not just the devs complaining to their managers, "Ah, we have to get these modernized things, we have to refactor, there are a lot of things that aren't working." It's the executives. 83% of them say that application modernization is essential to their businesses. But when we ask them if they've done it before, only 27% say they have modernized their essential workflows.
There are a lot of reasons. We've narrowed it down to about three:
High costs. A lot of these projects are massive changes to their organization, requiring a lot of changes. A lot of these changes that they're realizing are coming out during that process. The projects are prolonged, the costs are increased, and at a certain point, it just doesn't seem feasible. 57% of leaders say they're challenged by financial factors.
Technical debt. A lot of these changes — businesses rely on these thousands of applications that keep these enterprises running, and they have technical debt. Many of these applications have been around for decades, making it much harder and riskier to make these changes in real time. 51% say they're challenged by technical factors.
Skills gap. Of course, we all have certain languages that our company has been running on for decades, and the skills are getting harder and harder to find in the workplace. 45% say they're challenged by expertise factors.
What makes successful modernization?
So what makes a successful application modernization process? IBM believes these two things:
1. Using continuous, targeted modernization to minimize that cost — change a little bit at a time and make sure the entire thing continues to run, even with every single bite-sized change. 2. Leveraging the best parts of generative AI and automation to support these changes.
The majority of CEOs today report that their competitive advantage comes from their ability to leverage and scale generative AI. There has been a feeling of rapid widespread adoption as business leaders look for ways to integrate AI into their existing processes and workflows. And there's a good reason for this: we've observed that companies at the forefront of using generative AI and adopting different types of AI have seen about 70 to 72% greater profits, and 17% more revenue growth than their peers. Businesses now have a really incredible opportunity to grasp this at this kind of turning point of generative AI.
Gartner predicts that 70% of modernization costs will be reduced by gen AI.
Can we just ask a chatbot to modernize our COBOL?
So how will we use generative AI for modernization? Would we do this? We just go on a chatbot and just ask them to modernize it for us? Who here thinks it would work? We've got one guy. Alright. But not a lot of people raised their hands. Why is that? Why do we instinctively know that we can't just go and tell AI to do it?
Well, the answer is because it's not magic yet. On a scale of calculator to HAL from 2001: A Space Odyssey, right now it is still: "I'm sorry, I'm afraid I can't do that right now."
There was an analogy that I heard recently from Geoffrey Hinton, who's the godfather of AI. I heard it at a different conference, and he did a really good analogy of what the state of AI is right now. It was a leaf analogy. He said: if a leaf falls from a tree and tumbles around in the wind, we can sort of look at that and predict where it ends up on the ground, and have a general expectation of "okay, it'll just drop in that area." But we never know exactly where it lands. And that is where we're at with AI right now. We might have a trajectory, we understand where it's going to go, but we know it's not magic. It's probabilistic calculation, and we're not always sure what is exactly going to come out.
For many parts of the businesses, that's okay. That is enough. We're generating a lot of content. We're renewing a lot of things. But when it's coming to dealing with code that our entire companies are running on, that is simply not enough. We need something that's much more sure — that we're able to understand what is coming out. We need to understand that the output is something we know for sure is what we need.
IBM's perspective on coding assistants
And that's where IBM's perspective on coding assistants comes in. We believe that coding assistants need to be purpose-built for the use case. Everything from the data used to train the AI models, all the way to the interface that the developers are working on, needs to be focused on these use cases. That requires solutions that leverage both the best parts of automation and generative AI, and that tackle every single bit of the end-to-end lifecycle through that developer experience.
AI Models — trained on approved open-source licenses; trained on use-case-relevant data.
Products — purpose-built; leveraging automation and gen AI; end-to-end developer lifecycle.
IBM watsonx Code Assistant for Z
When you merge that IBM perspective on coding assistants with our perspective on application modernization, it merges into something wonderful — and that's IBM watsonx Code Assistant for Z. Here's a little bit of a sales pitch, but I'm excited about this because it's actually my product. I work on this, I see this every single day.
The problems we're trying to solve: addressing those skills and productivity challenges with automation and AI, ensuring that the IBM Z qualities of service are mixed in with the language interoperability, and aligning with industry-standard DevOps approaches. It's treating that developer experience from end to end — not just asking this code assistant a question, but in fact helping them every step of the way.
The accelerated application lifecycle has five steps:
1. Understand — application landscape with auto-discovery. Understand what's there. 2. Refactor — to modular business services. Break it all down into bite-sized chunks that you can change one at a time, instead of changing entire monolithic pieces of code. 3. Optimize — code to increase performance. 4. Transform — code with optimized design and architecture. Change it into a different language that more developers are available to work with. 5. Validate — outcome with auto-generated tests. Make sure that everything you've changed is still doing the exact same thing it was beforehand.
And as you can see in the middle, there's a little code-explanation part that's also leveraging generative AI to ensure that any questions and insights coming in from the code are available to developers.
Demo — COBOL to Java with watsonx Code Assistant for Z
So we're going to show you a demo of how it works. I wasn't allowed to use my own laptop, so I don't have it — I can't demo it on my own laptop — but I did take a video for you, and I'll be talking over it.
First, you can see this blank screen. I'm going to search up a piece of COBOL code. What it's going to show you is the result of scanning it — that understanding phase, making sure that everything you have in your Z mainframe is shown there. These are the COBOL programs, the COBOL programs and the DBs that are connected, and the copybooks that are related — data sets that are called. So you understand what downstream effects will happen.
What I just did is selected a specific piece of COBOL code and identified the paragraphs within it. You can see there are multiple paragraphs. I'm choosing the "mainline" section, bringing that out. I'm slicing this and basically pulling out this bite-sized chunk of COBOL. It pulled it out. It's separate. I'm about to export that and pass it into VS Code.
Now in VS Code, you can open up that piece of code that was pulled out. You can see it's going to be COBOL. Not a lot of people understand what this means right now. I don't understand it, but it's COBOL, it's there. But with IBM watsonx Code Assistant for Z, you can then explain the code. Just from a click of a button, we now have natural-language descriptions of what is happening here — business purpose, what is going on, the inputs and outputs, the variables, what they represent and the format they're in, and a detailed functional summary of that code. Which is way more than I can ask for for myself, and much faster than a COBOL developer looking through and understanding what's happening and reading that out. You can insert that, if you'd like, into the comments.
The next step — if you decide you want to transform that code, you can transform it with a couple of quick clicks. What's happening here is it's generating Java methods. You can see it pulled out all the details that are in COBOL form and put them into Java form. You can see how it's breaking it into the standard Java classes and variable types. Once that's done, it pops out a whole bunch of Java classes. That's really quickly generated, and there are a lot of methods in place.
You'll notice a lot of these methods are empty — they don't have most of the important calculation in them. So let's focus on "mainline-insert-customer" as one of the methods that we want to look at, and we will now be generating the method. With another click of a button, it has generated Java code just from the COBOL — which is absolutely beautiful. And just with that, we have inserted it in. Now, basically, as a developer with no COBOL experience, I can pull COBOL, have Java, and at least work with it. When previously I couldn't have done that without a COBOL developer holding my hand.
The next step is the validation. I can generate the tests with a couple of clicks. It looks at — there are a couple of paths that are available per method — essentially understanding where all the turning points are from the `if` statements, and understanding how many possible outputs there are. Once that's done generating, this might be a bit small for the screen — completed processing, generating the values for testing. What we can then do is right-click onto the method itself and then run equivalence testing. That will run the tests that have been generated along the COBOL and the Java, as well as the Java unit tests. You can see just in the corner here, there are a couple of tests — they passed. That's good news.
That is the demo: basically turning COBOL code — that is one monolithic piece, something that you might not have understood in the mainframe — pulling it out, bringing it down, putting it into VS Code, and then you can turn it into something that a lot of new developers can start working with.
Customer result
I had these slides as backups in case the video didn't work, but we don't have to worry about this. (You have to be prepared for everything.)
We have the understanding step, the code explanation, the refactoring breaking into smaller pieces. There is a new part — optimize. I don't know if you guys noticed, it wasn't in the demo, but it's something that is coming out. It's not ready for demoing yet, but the plan is to have the ability to understand your code, what's there, what are your top performance problems, prioritize them for you — what is the easiest thing to solve, what has the biggest change in value in terms of runtime — and then allowing you to go and tackle each of these problems one at a time. And then transform — right now it's just COBOL to Java. We have other codes coming in the future. And the validate component.
That is IBM watsonx Code Assistant for Z. It brings in the best parts of automation and generative AI to support this end-to-end experience for the lifecycle of mainframe modernization. By combining this with IBM's consulting expertise, clients have already been experiencing changes for themselves.
In fact, Westfield Insurance has seen that after implementing some of these parts of the product and solution, they're resulting with 80% less time spent understanding the application and 30% less time explaining and documenting code.
What's next
But there is more. (I'm going to drink some water first.) We do have more coming up. "IBM watsonx Code Assistant for Z" — a mouthful — but that is not the only thing we're doing.
We have something else that is out in the market right now, which is watsonx Code Assistant for Red Hat Ansible Lightspeed, which is using generative AI to help developers generate Ansible playbook content more efficiently.
And we have more in the pipeline, which includes the ability for us to handle other languages such as JCL and PL/I, and also the big one for Java. There's a lot of focus on our Java-centric tuned model. The idea here is there's a lot of Java upgrades that are required — getting to the latest versions like Java 17 and whatnot — and this product is going to help support all these code changes and configuration that's going to be needed in order to upgrade. As well, if any of the companies want to complete modernizing the application runtime and want to move to a more lightweight, flexible, efficient runtime — such as with Liberty — this product will make it a lot easier for them.
So, if you enjoyed this, you can take the next step. You can connect with me and my peers at the IBM booth, and actually see watsonx Code Assistant in action. There's a click-through demo that you can do, and you can see how we can help with your business. If you want to do some kind of self-research, you can go through these links — go to the demo, you can request a live demo, you can do our webinar — there's one happening in September, there's going to be a lot of good stuff there. And as well, the watsonx Code Assistant website that you can check out.
But thank you guys so much for coming. I hope you got something out of this.