Why you should integrate AI into your dev processes sooner rather than later

Posted on October 23rd, 2022

As artificial intelligence moves in to transform industries as diverse as banking and art, leaders of companies in every field must ask themselves: how can AI potentially improve my team? In software development, the potential applications of AI are so significant that they are poised to usher in a massive transformation in how dev teams work, saving developers time, reducing errors, and improving decision-making. Integrating AI is not a matter of if, but when. And there’s no better time than the present.

 

Software development’s human problem

There is no getting around it: Human beings are fallible. In the world of coding and software development, the human capacity for error is the reason behind things like code review, quality assurance, testing, and, of course, lots of bugs. In short, a lot of manpower goes into trying to anticipate, correct, and manage the human error factor.

 

But what if you could avoid it in the first place? 

Indeed, artificial intelligence is a tool that has been and will continue to be used to help augment what humans can do, reducing errors, improving efficiency, and boosting speed. With its powerfully transformative nature, embracing AI for coding is absolutely essential.

 

Benefits of AI for developers

AI has the potential to offer a variety of significant benefits to developer teams, including:

  • Increasing scale and speed By automating a number of processes, AI can help increase deployment frequency while decreasing lead time for changes and time to restore.
  • Error management Not only can AI be used to find existing errors, but it can also proactively predict future errors and even correct them.
  • Freeing up developers’ time for more important tasks In handing over certain repetitive tasks to AI, developers are able to concentrate on more complex and challenging problems.
  • Making strategic decisions Humans can spend forever debating different products and features, but AI trained to make decisions based on data analytics can help make smarter choices with much less debate, eliminating human bias in the process.

[cta_btn url=”https://www.tabnine.com/enterprise?contact-enterprise” label=”Request a demo”]

Types of AI worth knowing about

AI has an infinite number of potential applications. These are the ones forecasted to most disrupt the way development is done in the next few years. 

Code completion

Similarly to how Google can predict the search you’re going to make based on your first few keywords, code completion tools can finish lines and entire functions of code as developers are writing them. With tools like Tabnine, developers can accept a prediction or keep typing to get more alternatives adapted to the code context. As you can imagine, this can save a tremendous amount of time, skyrocketing developers’ efficiency. 

Personal assistants

AI-based personal assistants are quickly increasing in popularity, with features that can assist a developer in non-coding tasks such as managing pull requests. By helping to automate and optimize the more boring and repetitive coding-related tasks that developers are required to do (such as debugging and testing), these tools save significant time for developers, allowing them to maintain focus on the technical side of their job rather than the task management minutiae. 

AI art engines

AI art engines, such as DALL·E 2 and Midjourney, are revolutionizing the way that graphics and art are created, allowing users to create images with natural language prompts. By breaking down the barriers to creating art, these AI art engines are ushering in a new era for visual creativity.

 

Potential concerns about implementing AI

Just because software development is a technical field doesn’t mean that the industry is having an easier time accepting the coming AI revolution than others. Indeed, there are still many concerns regarding the implementation of AI for developer teams. 

Replacing people

One of the greatest fears surrounding AI in all industries is the fear that it is going to replace human employees. But AI tools aren’t created to compete with human programmers; they’re created to help them and enhance their abilities. Because while training AI to completely replace humans isn’t necessarily impossible, it is highly impractical, and not on the horizon anytime soon.

Reducing creativity

Another common concern regarding AI automation is the fear that machines simply aren’t capable of producing the same level of creativity and innovation that human programmers can offer. But AI tools aren’t trying to do so. Instead, they work to free up programmers’ time and resources so that they can focus even more on the complex, creative work at which they are best.

Code permissiveness

The code that AI algorithms were trained on was written by somebody. Responsible AI algorithm development requires taking care to ensure that all code used has been appropriately licensed. In fact, some code completion platforms may be facing potential lawsuits for possibly infringing on the licensing agreements of certain software. Others, like Tabnine’s AI models, are only trained on repositories with permissive open-source licenses. In addition, Tabnine’s models are never trained on their users’ code. 

AI isn’t the future – it’s the present

AI is well on its way to becoming a central part of the development workflow that we can no longer imagine living without. It isn’t supplemental; it’s essential, and it is only going to become more necessary with time. In order to set your development team up for success, make their jobs more efficient and effective, and attract and retain top developer talent, you must embrace and integrate AI into your workflows. Not later – now.

[cta_btn url=”https://www.tabnine.com/enterprise?contact-enterprise” label=”Request a demo”]

How to get better code predictions from AI

Posted on October 3rd, 2022

Tabnine now has over a million users and over 500k active monthly users. As a company we cherish the opportunity to work with some of our best users to understand how they interact with Tabnine. Adding to these priceless conversations is the data we gather from our users that choose to share with us for the benefit of product development.

 

One of the most fascinating data points is how some users really use Tabnine in a deep, deep way. These users have more than 30% of their code generated by Tabnine. On the other end of the spectrum there are users that really don’t find much value in our product. But why these two groups? Controlling the data for language and total usage uncovers some interesting observations. While a majority of our customers see 10-20% of their code generated by Tabnine the ends of the distribution have quite the Marmite characteristics. Looking into this a bit deeper and doing observational sessions with new and experienced users we have found that there is a defining characteristic that makes Tabnine really shine. In this article we will discuss what we found and how this has helped us craft a simple set of “best practices” that will both help use Tabnine better as well as have a few knock on benefits for any individual developer and the companies that they work for. So let’s dive in.

 

The heart of Tabnine is the machine learning (ML) algorithm that works in real-time to provide suggestions in the user’s IDE. Any ML algorithm is only as good as the data that was used to train it. Perhaps you remember the classic Cat OR Not? algorithm that was used to determine if a picture was that of a cat or something else. In order to successfully determine the animal in the picture, the algorithm was trained on millions of pictures of cats and not-cats from the internet. Tabnine’s code algorithms work very similarly. If you’d like to train an algorithm to help understand and suggest code for a Javascript front-end it would need to be trained on good Javascript doing front-end work. Tabnine comes configured with a large universal model that has been trained with billions of lines of open source code and specialized models trained for specific languages like Java, Typescript, Python and others.

 

For most users simply letting Tabnine handle the model switching gives users a great experience. Most developers get good completions with automatically switching models for various languages. As code complexity and variety increases there is an opportunity to boost productivity by pursuing a custom model solution. This is something that Tabnine can help with as well.

 

While the nuances of training large language models and custom derivations of these models isn’t specifically part of this article, a basic understanding of how these models learn is really helpful. The model will only really be able to suggest completions that it has observed in the training data. We call Tabnine an AI Pair Programming tool for a very good reason. Imagine two developers working together side by side. The junior dev will want and appreciate the help of the senior engineer, but in this relationship communication is key to good results. Your AI pair programming buddy isn’t a mind reader and neither is Tabnine (though we are working on that in a few sprints…) To get the most out of a pair programming effort, as well as Tabnine we need to prompt the effort with comments and well thought through variable and function names.

 

Let’s look at a quick example:

Figure 1: Here is an example of giving Tabnine some “meat” to work with in the comments.  In this example we are creating an algorithm for the industry standard image classification problem using pictures of iris flowers. The url for the example is placed above for reference, and we lead with the task we wish to accomplish. In this case it’s acquiring the necessary libraries for a random forest classifier and manipulations of the dataset. The gray italics after the comment are the suggestions that Tabnine displays. We simply press the tab key to accept.

Figure 2: In this example the same outcome is attempted without the comments. While Tabnine will help complete individual lines (e.g. “import numpy as”…will get an autocomplete “np”) but as we can see the snippet completions are much shorter as the context and intention are not as clear. 

 

Tabnine is contextually aware, and as a particular file grows in size Tabnine will understand variables and functions used previously, so that will certainly help, but there is so much more power available when we interact in a conversational manner. But beyond the help it gives the individual developer, there is more benefit for the developer and the customer or business they are working for. No pull request has been rejected for being too well commented. Tabnine helps reduce technical debt and bug work by helping build robust documentation for the code that is being written. And that is certainly something that will help everyone.

 

Altering your coding style to incorporate more comments and more conversational programming methods is what we have observed to be the key defining metric for our users that are really leveraging the tool for a meaningful productivity boost. Give it a try and see if it’s something that will work well for you as well.

[cta_btn url=”https://www.tabnine.com/enterprise?contact-enterprise” label=”Request a demo”]