How AI is redefining coding

Media Thumbnail
00:00
00:00
1x
  • 0.5
  • 1
  • 1.25
  • 1.5
  • 1.75
  • 2
This is a podcast episode titled, How AI is redefining coding. The summary for this episode is: <p>Sometimes it’s hard to know where to start when it comes to generative AI. It’s not too hyperbolic to say that many different aspects of a business have the potential to be affected by this new technology. Today, we're going to talk about something that's behind the scenes for most people, although hopefully not this audience. It's coding.</p><p><br></p><p>On this episode of the Georgian Impact Podcast, we dive into the world of generative AI and its impact on coding, testing, and product design with guest Rodrigo Ceballos. Rodrigo is a machine learning engineer at Georgian and provides firsthand experience and expertise, shedding light on the transformative power of AI in the tech industry. Exploring the exciting possibilities brought about by the fusion of human creativity and AI technology.</p><p><br></p><p><strong>You’ll Hear About:</strong></p><ul><li>The progression of software engineering from low-level to high-level languages, culminating in the use of natural language for coding.</li><li>The daily integration of generative AI, such as ChatGPT, in automating tasks and writing code.</li><li>The role of large language models (LLMs) as an intermediate layer and a translation layer between different pieces of software.</li><li>The impact of generative AI in automating functions, unit testing, and API interaction in programming.</li><li>Using generative AI to brainstorm and guide game design, showing the versatility of AI in enhancing human creativity.</li><li>The potential upside and downside of leveraging generative AI in streamlining processes and increasing efficiency.</li></ul>
Meet Georgian's Rodrigo Ceballos, ML Engineer
01:01 MIN
The rise of natural language for coding
01:22 MIN
Enhancing productivity in coding with GenAI tools
00:58 MIN
How AI agents are simplifying API integration
01:17 MIN
Building intelligent agents with GenAI
01:29 MIN
Beyond SQL: Insights from our hackathon
01:10 MIN
Georgian's "crawl, walk, run" framework
01:47 MIN
Enhancing LLM reliability with guardrails
01:42 MIN
The transition from no code tools to LLMs
01:01 MIN
Using LLMs as assistants in security, not replacements
01:17 MIN
GenAI as a co-creator in game design
02:15 MIN
How GenAI is impacting human creativity
01:36 MIN
Rethinking pair programming
01:01 MIN

The material and information presented in this podcast is for discussion and general informational purposes only, and is not intended to be and should not be construed as legal, business, tax, investment advice, or other professional advice. The material and information does not constitute a recommendation, offer, solicitation or invitation for the sale of any securities, financial instruments, investments, or other services, including any securities of any investment fund or other entity managed or advised directly or indirectly by Georgian or any of its affiliates. The views and opinions expressed by any guest are their own views and do not reflect the opinions of Georgian. Sometimes, when it comes to generative AI, I just don't know where to start. I'm not a fan of being too hyperbolic, but I'm comfortable saying that many different aspects of business have the potential to be affected by this new technology. Today, we're going to talk about something that's behind the scenes for most people, although hopefully not this audience, it's coding. Yes, people can chat with ChatGPT. Yes, images can be generated. I'm sure you've seen gen AI right cool stuff, in really specific styles no less. Hey, I just heard a Charles Dickens-like urchin talk about a rocket to another planet. It was impressive. But actually, what's impressed me more is when I saw the use of generative AI to automate working with a spreadsheet. Now, that's coding, but that's not what I consider coding coding. It turns out that generative AI can also do the work that many programmers do. Now, that's a productivity tool and something that every business leader needs to understand. Our recent podcasts have shown how much of an impact gen AI has on products themselves that are being developed by companies. But today, we're going to be talking about how writing code, testing code, and yes even product design can be affected by generative AI. Eye- opening, to say the least. I'm Jon Prial, and welcome to Georgian's Impact Podcast. With me today is Rodrigo Ceballos. He is a machine learning engineer as part of Georgian's AI team. Rodrigo, tell us a bit about what you do a Georgian.

Rodrigo Ceballos: Hi, Jon. I spend my time working with our portfolio companies, in products that range anywhere from there's a company that is starting to get involved in AI or starting to use AI, they need someone to help them build a team, come up with the first few products that make sense for them to start exploring AI as a business, all the way to mature, AI- first companies that have ML teams or AI teams, and just either need an extra pair of hands or are venturing into a space of AI that they are maybe not so familiar with and we can bring in our team. The other is around our pipeline for investment. Finding interesting companies that are related to AI and why it might benefit a company to have us as an investor, and have access to my team as a resource.

Jon Prial: Just to put a little more perspective, and to repeat a little bit, slightly differently than what I talked about in my introduction. I think it's fair to say that, over time, more and more power has put into the hands of end users. I think back to office productivity, word processors, charts and spreadsheets, but now it's moved to automating and simplifying the building of websites, or running marketing campaigns, and so much more. To me, the net of it is that the power of productivity was moving directly into the hands of end users. But now, we're talking about developers. The things that the technical teams have been doing over the years has expanded, I don't know, maybe even siloed from just writing code, to managing databases, and building AI models. But I'm not sure that's the same thing as those end user examples that I listed. From your perspective, what's going on now?

Rodrigo Ceballos: I don't think that this is necessarily that new. I think software engineers have basically been automating themselves since this field exists. It's as basic as we started writing assembly, and at some point we realized that we were repeating ourselves a lot. Can we come up with a slightly higher level language? A more abstract language that simplifies some of these things that we keep repeating, over and over again, to make our lives easier. To some degree, that is automating the job as well. But I think that progression, from low level to high level and abstract thinking, now has reached this new era where that language is now English, or a natural language. We're getting to that transition phase where we no longer write Python, which is, to be honest, quite high level already compared to what we were writing 10 or 20 years ago, and now we're transitioning into writing English. I think, in that sense, large language models have expanded the range of people that can directly interface with computers and create applications, write programs, write code. That's really what's at heart here.

Jon Prial: Then, how has your job as a coder changed? In terms of your use of gen AI, what do you do now?

Rodrigo Ceballos: I think I'm in a bit of a special position. I'm fortunate enough that my job is, to some degree, to stay up to date with all these trends. I use it every day. I use ChatGPT and other language models multiple times a day. How it has affected my day- to- day is that I can now automate a lot of menial tasks that I used to have to do myself. For example, if I have a very clear idea of a function that I want to write that does something very specific, it's not something too complicated. Most of the time, ChatGPT Code Interpreter, or Advanced Analysis, I think they've renamed it now, which is one of the beta features of GPT4, will basically write that function perfectly from scratch. It has a Python interpreter in it as well, so it can actually write the function and then run it, to check that it's correct. Most of the time, for that kind of use case, this is really helpful. Sometimes, this is not a comprehensive test but it usually does let me test at least some amount of the functions and automate some of the testing process as well.

Jon Prial: One of the changes that's happened over the years, more apps, more interconnectivity, things in the cloud, companies opened up their software to interact better with other applications, via APIs and the like. In my naïve pre- gen AI thinking, that would always be a challenge, how to get coding and parameters right. Has this changed now?

Rodrigo Ceballos: I think so. I don't think that there's yet a full general solution that anyone can just plug into any kind of API and just have it work. There's still a little bit of work to do. But, I think now, LLMs have been successfully used many times as an intermediate layer, as a translation layer if you may, between either two pieces of code, two libraries that don't necessarily talk to each other. Or, even a user and the library. The way that this works, high level, is that you can have something called an agent, that essentially is some piece of software that uses large language models for decision making, and pair that agent with a tool, which in this case can be something like a wrapper to an API. What this allows this agent to do is that you can ask the agent, " Hey, can you please change the name of my user?" It will look inside its wrapper, and find the API call change name of user, and find the documentation for that API call, and then write the API call that would change your name to what you asked for, and run that, and execute that function. In that sense, you can use agents and LLMs more generally, as a layer, translation layer, between different pieces of software.

Jon Prial: I'd like to talk about some simple hypothetical cases then, where gen AI can help. You've talked about AI code generator. You've talked about agents. In my mind, there's this old thing called scripting, and clearly there's a lot more that you can do to automate. But I'd like you to think about that, help me understand that automation against all these other apps again. Take me a little deeper to what we were just talking about a bit.

Rodrigo Ceballos: There's many ways to do this. One of the most common right now is to use a library called LangChain. LangChain, at first might seem a little bit unnecessary because it's not writing the models. It's not, in and of itself, doing any of this work. But the real beauty of LangChain is that a lot of good engineers have sat down and come up with a way to organize all of these different components that need to fit together to make these applications work. They've made into an open source library that anyone can use, with a huge community. That's what I've been using most of the time, for these kinds of projects.

Jon Prial: Let's talk about, I don't know, let me call it this new development process. What type of requests might you create an agent for?

Rodrigo Ceballos: One example of what you can build with this, and it goes to show how quickly this technology is advancing that. What I'm about to describe is probably now pretty trivial to do yourself, or even find something online that already does it, is that we build a wrapper around one of our internal databases at Georgian. We built an agent that could write Python, and had this essentially archive of information about the semantic information in that database. Essentially, schemas and semantic information about, " This is the kind of data that is in this database. This column contains this kind of data and it follows these properties," things like that. And combined both of those into an agent that, basically allowed us to query this database using natural language. You could ask it, " Hey, please get me the latest 10 entries in this database that satisfy this criteria." That would get translated, first into Python. It would use a tool to execute that Python, and make sure that it was correct. It would then check against that wealth of data that it had, that archive, to make sure that it was correctly interpreting the requests that it got and the output that it got from the original running of that Python code. It would update the Python code, run it again, and then give you back the query. You could chain together these models and interweave them with other operations, like run Python code, query a database, and you can build these pretty complex pipelines that can really expand the capabilities of what large language models can do.

Jon Prial: It's fascinating to me because, in the old days, you'd open up a database and teach somebody SQL perhaps, and that's gone. Clearly, you're delivering much more power to an end user. From a development side of things, was this easier and faster than teaching end users and SQL, and how long did it take?

Rodrigo Ceballos: This was pretty fast. We did this during our internal hackathon, that lasted two days. It was full two days of programming to get this to work correctly, but it has no comparison to what it would have taken to teach someone SQL. I should add however here, a disclaimer, that this has not yet replaced completely knowledge of SQL. In fact, another example is that we got this SQL statement that had 500 lines, which I didn't believe was possible, but it runs and it does something useful. However, it's obviously very hard to debug because it's so large. I tried using LLMs on that kind of statement and it was not able to do it correctly. There is still a lot of use for knowing these technologies, but I think that as we move forward, those needs will get less and less.

Jon Prial: You mentioned earlier that you would generate some code and it would be automatically tested. But let's talk about, generally, the testing cycle through a development process. Unit testing, can you ask it to give me a whole pile of unit tests? Talk to me about how gen AI might help you test a product that's been now coded.

Rodrigo Ceballos: I think here, there's a concept that we've been using internally, that helps us walks through the stages that one could go through to get such a system to work. We call it the crawl, walk, run strategy. The idea is that, in crawl, it's the absolute simplest thing you can do. Yes, it is true, you could copy paste some function, or a set of functions, into ChatGPT and come up with a clever prompt that basically explains to the LLM what is a good unit test for Python, what does GitPython do, the series of mental steps that one should take in writing a comprehensive suite of unit tests to test the function. It's just a single prompt and you could automate that. I'll skip ahead to what I would think is probably the solution to that problem that could be built today. This is an opinion, but I think that probably an agent in this case would be powerful. Because you could add to that agent the ability to, one, run those unit tests. Two, you could have that agent be continuously running on your code base, and learn from things like actual mistakes and errors that happen in production. Remember earlier, I mentioned this idea of having an archive of information that the agent had access to. That archive could include things like logs, and it could include things like past errors that have happened in this code base. It could use that to be more targeted in the way that it writes tests, for example, trying to prioritize systematic issues in the code base that you can see if you go through the history of issues.

Jon Prial: In terms of work that you do, and obviously there's so much more efficiency that's shown up here, do we need to think about what's generated and trust? Does that put more responsibility on you for, say, another layer of validation that you need to do?

Rodrigo Ceballos: Yeah, I think that's a very common concern and rightly so. The classic story of someone trying something like ChatGPT a few months ago was that they would go there, they would ask it some question that was mostly meant for Google, like a factual question about something, and GPT would get it wrong. They would be like, " Oh, this thing doesn't work," and then they would just leave the website, and never go to it again. LLMs are very prone to what's called a hallucination. They're not built to store factual information so you should trust them to recall said information accurately. Now, what these networks are really good for is reasoning, especially when given templates on how to reason. Following steps, I think of it is there's a set of tasks that the language models can do today almost perfectly, every time. A lot of the interesting tasks that we want them to do are a little bit harder than that, they're a bit above that. One way that you can still use them is that you can break down that harder task into smaller sub- tasks that fall back into the band of problems that it can do. Then, LLMs can help you and do those sub- tasks, and then put it all back together to answer the main question. For me, a lot of the trust component when using large language models is to build in some guardrails around these LLMs. Give them access to data that they can use to validate their own answer. You can do things like ask different LLMs the same question, and only be sure that it's mostly correct if all of them answer the same thing. There's all these techniques that you can do to minimize the chances of mistakes.

Jon Prial: It does sound like it's a different layer that needs to be worked on, so the development process does look different. Which is fine, things do change. But when I put my market research hat on, my market analyst hat on, it was not that many years ago we were talking about no- code, low- code tools as a way to democratize coding. Is this different, is it a replacement, or do they sit in different worlds?

Rodrigo Ceballos: No- code tools basically encompasses everything that is no- code. It means every website is a no- code tool, in that sense. I think that the tools that were built for you to, for example, be able to analyze CSV files or other data sources using no- code and just clicking around, I think this can replace a lot of those tools. This is basically what LLMs do. As I explained, because they serve as this intermediate layer between natural language and code, it is no- code solution in a sense, because anything that you can express in natural language in theory could be translated by one of these systems into code.

Jon Prial: How do we ensure that all knowledge that you've got isn't lost in this new world? I'm thinking about if you were using some website designing tool, all key security aspects would have been built into that website. But if someone doesn't know that, and you talked about building guardrails or not, how do we make sure, and is it within the LLM or is it on the shoulders of the programmers, to make sure that we're doing the right things regarding the breadth of safety that's required?

Rodrigo Ceballos: Yeah. I would not advise anyone to use LLMs to build a website from scratch and assume that it's going to be secure from attacks. The LLMs are there to, I think right now, automate the things that they can, and security of that form I think is not something that they should be trusted with just yet. They can be complimentary. One of the advantages of language models is that they can adapt to unforeseen situations reasonably, especially when given the right tools to do so. I can see those being very helpful as a part of a security system, but not really the whole thing. To some degree, I think not everything should be replaced by an LLM. As I mentioned before, many of the agents that I've described are also using tools like Python and databases. Not everything is an LLM. Even if you use generative AI to generate some of the security code, you still want to be putting in those guardrails in the code itself. Get professionals that know what they're doing to add those things to something like a website.

Jon Prial: We talked about coding, we talked about testing, some of the aspects of deployment. I want to go back to the beginning of the cycle and talk a little bit about product design. What do you think about how that might affect the programmers?

Rodrigo Ceballos: I have a funny story about this and it happened the other day. As all good software engineers, I love a good card game. For a long time, I've toyed with the idea of making my own card game as well. As I mentioned earlier, I basically have ChatGPT give it a shot and see if it can do it. When I was thinking about a new card game that I was imagining, I thought, " Why don't I use ChatGPT and help me brainstorm what a good game could be?" I basically just gave it some very high level ideas about what I wanted in this game. For example, I said I wanted the game to last less than 20 minutes. I wanted the game to be a 1V1, combat style game, deck builder, something like that. I told it what I wanted the theme to be, I wanted it to be about aliens. And a few other descriptions. It was surprisingly good at coming up with suggestions on ideas, but also a framework on how to think about the game design process. Granted, I did ask it to do that first, which I would say that is key. Prompting is a skill that I think we all will eventually need to develop. Yeah, I basically asked, " First, think through what are the pieces of this game, the components that we need to think through." Then, " Give me some ideas about what those could be, given my requirements." I'd say though that it is a very interactive process, because ChatGPT sometimes is very good at blurring out a large quantity of ideas, out of which 10 to 20 percent might actually be really good. And that's where I come in. I think that it wasn't that the LLM could just do this whole game design by itself, but the combination of me as a filter and as a guide, an architect essentially, thinking through, " Okay, how would these ideas work in practice? How would that relate to the vision that I have for the game?" And trying to guide it towards what I wanted, but also letting me surprised by some of the things that it came up with that I hadn't thought of before. I think that interaction, that's what's really powerful in how these models can be best utilized for brainstorming and design.

Jon Prial: That's fascinating. You mentioned that test cases could be quite broad. I get the sense that they could address things that you didn't think of. Here we are, talking about improving and enhancing, as a team, you and this generative AI system, helping with the aspect of human creativity. I always thought it can only do what it knows, but it seems it can do more. These things, whether you're writing code, or creating a product design, are you getting elements of creativity that maybe someone else could not have thought of?

Rodrigo Ceballos: It's a philosophical question here. Is there any original thoughts? Is everything basically recycled, to some degree or another? If that's the case, if the answer is yes, then LLMs are, in theory, just as creative as humans, because they've just seen a non- trivial percentage of the internet. They are just reusing those ideas, recombining them in different ways, to give you potentially creative or novel outputs. At the same time thing, will an LLM ever come up with a paradigm shifting idea? Something that it completely breaks with whole schools of thought that have come before? Of that, I'm a little more skeptical of, at least for now. One other point to bring up here, in terms of creativity, is that there have been a few preliminary studies coming out that show that, when you are using language models in this way, you do tend to actually be less creative. You are offloading that responsibility to the model, and you are assuming that role that I mentioned earlier, of a critiquer or a guide. That's something that I think we need to be very careful about, and make sure that we as a species are not losing one of the few talents that we have still, that are not completely automateable. Which, in my opinion, is creativity.

Jon Prial: A best practice, I believe, is pair programming. It sounds to me like you could pair up with a ChatGPT, a generative AI solution and be even more effective than if you were paired with a human. We surely don't want to pair two computers together, but maybe that'll happen sometime in the future. But, that make sense to you? Is this a new vision of paired programming?

Rodrigo Ceballos: That's how I feel when I work with an LLM model for programming tests. For those that don't know, in pair programming, you usually have a driver, that's the person writing the code, and you have a navigator. That's the person that, because they're not in the weeds writing the code and concentrating on that, can have a slightly higher level view of what is being built, and has a little more time to think about the consequences of some of the decisions that are being made while we write that code. I think in that sense, the way we're using it now is the LLM is the driver and you are the navigator. I think that's a great analogy for what it feels like to pair program with an AI.

Jon Prial: For our audience here, if you've got a marketing team and if you've got a programming team, which hopefully all of our listeners do, there are tools the be leveraged that make you more efficient, to get more things done faster. I think the key is to see what you have, get started. Rodrigo, thanks so much for your time. It's been a pleasure.

Rodrigo Ceballos: Thank you, Jon. Thanks for having me.

DESCRIPTION

Sometimes it’s hard to know where to start when it comes to generative AI. It’s not too hyperbolic to say that many different aspects of a business have the potential to be affected by this new technology. Today, we're going to talk about something that's behind the scenes for most people, although hopefully not this audience. It's coding.


On this episode of the Georgian Impact Podcast, we dive into the world of generative AI and its impact on coding, testing, and product design with guest Rodrigo Ceballos. Rodrigo is a machine learning engineer at Georgian and provides firsthand experience and expertise, shedding light on the transformative power of AI in the tech industry. Exploring the exciting possibilities brought about by the fusion of human creativity and AI technology.


You’ll Hear About:

  • The progression of software engineering from low-level to high-level languages, culminating in the use of natural language for coding.
  • The daily integration of generative AI, such as ChatGPT, in automating tasks and writing code.
  • The role of large language models (LLMs) as an intermediate layer and a translation layer between different pieces of software.
  • The impact of generative AI in automating functions, unit testing, and API interaction in programming.
  • Using generative AI to brainstorm and guide game design, showing the versatility of AI in enhancing human creativity.
  • The potential upside and downside of leveraging generative AI in streamlining processes and increasing efficiency.

Today's Host

Guest Thumbnail

Jon Prial

|
Guest Thumbnail

Jessica Galang

|

Today's Guests

Guest Thumbnail

Rodrigo Ceballos

|Machine Learning Engineer