“Generative AI, generally speaking, is going to revolutionize everything that we do with software. This is probably the biggest revolution in software development that we’ve seen in decades,” says Eran Yahav, professor at the Computer Science Department at the Technion – Israel Institute of Technology and co-founder and CTO of Tabnine (formerly Codota).
Yahav’s expertise lies in program analysis, program synthesis, and program verification, with a focus on generative AI for code. His research aims to automate software engineering tasks using machine learning, allowing for the automatic generation of programs or the solution to software engineering challenges.
Imagine being able to describe what you need in natural language, and having the program generated for you without the need for coding expertise. Well, the research and the company of Eran, Tabnine, are making this a reality. In essence, he is developing generative AI solutions which make it possible for any software engineering task to be automated through machine learning.
While the problem of program verification has been a fundamental issue in computer science since the 1950s, recent advancements in this area have led to practical applications such as body detection and finding security vulnerabilities. Similarly, program synthesis is also undergoing a transformation thanks to generative AI technology that is maturing to create AI code generation tools for developers in their daily work.
I met with Eran a couple of days prior to his trip to Sofia where he gave a keynote at the INSAIT Series on Trends in AI & Computing event on February 27. We caught up on the state of generative AI in software development and how generative AI companies can do code quality checks.
“Getting code generation right, in a way that does not interrupt the work of the developer, is crucial. The goal of generative AI companies should not be to make the best AI but to make humans better. It is all about the interaction between humans and AI. I am usually referring to Tabnine not only as an AI company but also as a UX company. I believe generative AI should be used to accelerate the work of developers, not to encourage them to follow misguided automation,” Eran highlights in our online interview.
The state of Generative AI in software development
Generative AI is poised to revolutionize the world of software development, representing the biggest shift in the field in decades. This powerful technology holds the potential to streamline repetitive and mundane tasks that have long plagued developers, such as reading and iterating over files in Python. Rather than relying on sites like Stackoverflow or endless Googling, generative AI can generate code based on the context of what the developer is trying to achieve, dramatically accelerating the development process.
“I don’t know how many times in life I have to read a file in Python and iterate over the lines, probably hundreds of times. Million other developers experience the same problem, and that is what made sites like Stackoverflow so successful. For many, many years now, because of the repetitive nature of programming, a lot of programming up until now involved googling stuff and copy-pasting. With generative AI, you don’t have to search anymore. The AI can just generate these things, for you, in your editor, and can actually guess what it is that you’re trying to do. So you don’t even have to tell the AI. Just from the context of what you’re doing. It may be able to infer what is your intent and automatically generate the code for you,” Eran explains.
This same technology is now being applied to other tasks in software development, including test generation, refactoring, and code review. Even the process of diagnosing bugs and crashes can benefit from generative AI, which can analyze code and provide explanations for issues. While this technology is still in its early stages, developers can already use it to generate code components based on specific context clues, eliminating the need to sift through irrelevant results. By using AI code generation, developers can free up valuable time to focus on more complex tasks, boosting productivity and efficiency.
How do generative AI companies do code quality checks?
“The short answer is that we control the training data for some quality. But generally, with generative AI, there are no guarantees in the end. It’s essential to emphasize that we are not trying to replace the developer but to help them with suggestions. Ultimately, it is the responsibility of the developer to check whether the code generated is reliable enough,” Eran emphasizes.
He explains that generative AI is very sensitive to the context it operates. So if the code that is given as a context is bad, the AI would probably keep generating bad code.
Acceleration vs Automation
“It’s not really like going through a chatbot and saying that because you’ll get something random. Professional programmers who are working on bigger projects would have to go into their IDEs and put their scaffold. The developers may use some hints such as ‘generate me the code for a graph with two colors, red and blue that shows the speed of the Internet connection’ to generate some components. Instead of going for Stack Overflow or googling, developers can use generated AI to retrieve code that is particular to their context,” he adds.
The vision of Tabnine is to become the AI layer in every software organization. This layer would help companies automate all phases of the software development lifecycle, from writing code and reviewing code to refactoring, test generation, code review, and deployment. Throughout the entire software development lifecycle, the AI would learn from everything happening in the organization, to help the developers automate the repetitive tasks, and focus on solving business problems.