Last Updated: 2022-07-22
Since I have used both Github Copilot and Tabnine Pro, each with its own strengths and weaknesses, I wanted to share my thoughts on both of these AI programming assistants in this article. My analysis is based on my personal experience using them with VS Code on a Mac, and I will be highlighting the positive and negative aspects of both tools.
It’s important to keep in mind that both of these tools are relatively new, but when used properly, they can significantly speed up your coding process. So, if you take the time to learn how to effectively use them, they can be highly beneficial in increasing your productivity.
In the case of Copilot, in order to receive the GPT-3 generated results, you’ll need to pause typing for a moment. This may not be ideal for those who type quickly, but I found it to be useful when I was stuck on a problem and needed a quick solution.
On the other hand, Tabnine is very fast but can provide too many results at times, causing it to change the code before you press the tab key. This can slow you down as you’ll need to undo or backspace to correct the changes.
Regarding Copilot, I’ve found that when it does provide a solution, it’s typically quite accurate. However, there are instances where it wants to complete multiple lines of code when you only need a short code snippet. In these cases, you’ll need to manually complete some of the code and then use the tab key to get the desired shorter snippet.
As for Tabnine, even with its Team Training approach, I’ve noticed that the accuracy can be lacking at times. While the first result in a file may be correct, the subsequent lines may be completely off-base. I’ve found that if I keep typing the code, eventually Tabnine will suggest the correct code, but it doesn’t always happen right away.
One thing to note is that when I was without internet access during a trip, I noticed that Tabnine was slower and less accurate for some reason.
As far as I’m aware, Copilot doesn’t have any code completion statistics available.
In contrast, Tabnine displays code completion statistics, although there is a potential issue with the accuracy of these statistics. For instance, if you select the wrong code completion suggestion and then delete it, it may still count as an autocomplete in the statistics. Nevertheless, I still appreciate this feature and think it would be useful if Copilot implemented it in the future.
In terms of training, Copilot doesn’t currently have an option to train on a private repository. It relies on updates from Github or training within the AI, and there’s no way to manually train it.
On the other hand, Tabnine offers the ability to train the AI on multiple private repositories, which should lead to a more accurate engine. It’s important to note, however, that the local database file for the AI is downloaded onto your computer.
One potential issue with the Tabnine training feature is that there doesn’t appear to be a mechanism to retrain the model. When you add new repositories, it doesn’t seem to retrain automatically or on a schedule. This could potentially lead to less accurate results over time.
In terms of performance, I haven’t experienced any issues or slowdowns while using Copilot.
However, Tabnine occasionally uses hybrid mode to perform local tasks, which may consume some of your computer’s resources such as CPU and RAM. I’ve noticed that when Tabnine is enabled, my typing speed sometimes decreases, but returns to normal once I disable it. I suppose this is a trade-off between having the AI assistance and the potential impact on your computer’s performance.
On the other hand, Tabnine occasionally does autocomplete within strings, which can be quite useful.
In conclusion, while both Github Copilot and Tabnine offer compelling AI-assisted code completion features, it’s important to remember that they are not a replacement for a programmer’s expertise. If you’re new to programming, it’s best to avoid relying on an AI assistant until you’re more familiar with the language. AI systems can sometimes introduce faults and security risks, so it’s essential to have a solid understanding of the language in order to recognize and address any potential issues.
Think of it like receiving a self-driving car without understanding how to drive. Ultimately, an AI assistant can be a helpful tool to increase productivity and efficiency, but it’s no substitute for foundational programming knowledge and skill.