TabNine - AI is not going to steal our jobs

Posted on Thu, 24 Sep 2020 11:30:07 GMT

I've recently started using an extension for Visual Studio Code (but also available for most IDEs) called TabNine, made by Codota, a tech startup from Israel. I use it for my JavaScript + CSS projects, but it supports any language out there.

This extension impressed me quite a bit, so I decided to share my thoughts about it

What about it?

We are talking about a zero-config AI powered auto-completion plugin.

In a nutshell, this plugin/extension will read you code, almost trying to understand it. It will read the code around it, the files you are importing, and draw knowledge from public Github repos, in order to try and give you a better code autocompletion experience.

At first I was almost put off by the lack of any configuration file.

My thoughts were like:

  • "How can this be real, there is no configuration to enter, nothing to toggle on and off, nothing at all, I have no control over it?"_
  • "Surely it won't work"
  • "The default autocomplete will be just fine."

Wrong, wrong and wrong.

It f*****g delivers, it just does what it says on the tin, which is a lot. It does autocomplete.

Perfection doesn't exist...

Yes, it could be better, it could give better suggestions, always provide that perfect autocomplete import path or those arguments you need in your functions exactly where you need them. It does not always provide exactly what you need, when you need it. Often though, but not always.

In a perfect world, it could probably use less resources in its free version (which resides on your machine, as opposed to the paid version for 15$/month - the one I am using currently - which uses TabNine's servers to provide autocompletion).

... Yet

Yet, If you ask me, this extension provides a pretty valuable help.

This is a technology that improves your developer experience, saves you time, allows you to decrease a bit the (already quite high) cognitive load by offloading some work to some kind of AI when it comes to those things (like variable names, property names, function arguments) that are as simple as they are annoying to remember over and over again.

The future?

Every now and then, there is a discussion coming up, about the future of work in general, and - in my bubble - about the future of software development in particular.

People have now been discussing for at least ten years whether robots, or AI, or both, are going to steal all the jobs. If you ask me, as time goes by, AI domination feels more and more unlikely in most fields, but programmers in particular are generally quite certain AI is not going to replace them anytime soon.

That is because in order to build any piece of software, you need not only a vision, which is usually provided by the founders of a company, but also actual people capable of translating that vision into feasible requirements, managing trade offs, balancing between the "optimum" and the "good enough", all this while business goals shift and morph, companies pivot to explore new ways to grow, new technologies emerge.

Why am I saying all this, and how does this relate to TabNine? With TabNine I think I have seen, or actually experienced, the future of my job as a programmer.

And that future is not one of stolen jobs, taken by cold artificial intelligences executing flawlessly flawed visions.

The future that awaits us programmers, and most likely a good chunk of the working population, is that of an AI that works with us (not in competition), taking away some boring parts of the job, giving us suggestions and hints about how to go faster and with more satisfaction toward the completion of our current task, making us more creative and satisfied, less stressed out, less anxious, less tired at the end of the day. TabNine confirms this vision of the future.

Finally, some examples

Here are a few, stupid examples from my everyday use. I almost never remember to take a screenshot, so the help provided by this extension is not limited to these usecases, clearly.

CSS/Scss

Here tabNine is suggesting the correct CSS variable I use for border colors.

Another CSS example: I often give a border radius to containers, and it is correctly recommending the variable to go with it.

JavaScript

In this use case, you can see TabNine correctly autocompleting not only the name of the import I want to use, but also the correct, non trivial path.

Autocompleting the target property

Comments

Quite amazingly, TabNine even autocompletes comments

Markdown

Or even markdown!