Kite vs. Tabnine

Posted on April 7th, 2021

 

https://www.youtube.com/watch?v=10cO9UNsA3Y&ab_channel=CodewithAniaKub%C3%B3w

YouTuber and JavaScript Specialist Ania Kubów took the time and effort to help her dev community decide: which AI code completion tool they should use to get their code done better, and faster. In order to get a fair result, Ania threw a thrilling showdown:

Kite vs. Tabnine – The Ultimate Battle

In the video, Ania displays a split-screen featuring 2 recorded sessions from her code editor. The exact same code is being written in VSCode on both sides of the screen, with only one difference – Tabnine is installed and activated on the left-hand side, and Kite is active on the right-hand side. Can you guess who took the trophy? Press play and find out.

Read more from the blog: Github Copilot vs. Tabnine

What autocomplete can do for your productivity

Posted on April 1st, 2020

Back in the days when I was a junior dev I used to marvel at my supervising senior dev’s ability to create code at insanely breakneck speed.

Within moments, he’d have a working piece of code with prototyped data, almost ready and in a semi-working state. There were a lot of tabs pressed, his fingers never leaving the keyboard to touch the mouse for the duration of his demonstration.

While my coding speed is not the same pace and speed as him, my productivity, however, is not too shabby. Over the past few years, I’ve picked up a few things here and there, mostly around things to do with how to efficiently use your keyboard and code editor.

The power of autocomplete

There are two ways to look at autocomplete — First, lazy coders use autocomplete. Second, you have to be crazy not to use every tool in your productivity toolkit.

Personally, I see autocomplete as a merge of these two worldviews. After all, if we didn’t want to save time or increase productivity in one way or another we wouldn’t be writing software to begin with.

What autocomplete can do for your code and productivity

So how does autocomplete work?

There are two common types of autocomplete.

1. automated boilerplate generator that gives you the entire scaffold of classes, functions, methods, and service providers.

2. Inline suggestions as you type. These types of autocomplete solutions can leverage AI and if you use the tool for long enough, it starts to see the patterns in your code and become predictive towards what you’re planning to type next.

The more you use a particular tool, the more intuitive it becomes over time as it familiarizes itself with the libraries and frameworks you’re using.

In a way, it becomes a secondary external brain that you explicitly control. The autocorrect feature is still passive in nature, but intuitive enough to be your friendly and high efficient helper.

Why deep learning matters

Not all autocomplete tools will be able to do this. Some will just go off predictive suggestions based on the encoding algorithm of the codebase. 

Those that are powered by deep and machine learning allow the tool to be much more automated in the way that suggests what you’re most likely trying to achieve, making it better as a predictive coding tool than just your regular autocomplete.

The major difference between autocomplete and deep learning-based autocomplete is that the latter has the power to adapt to your personal coding style, systematic thinking and ways of handling specific tasks

Normal autocomplete simply offers predictive code completion based on the probable outcome, rather than other metrics such as context, historical decisions, code style and framework/library that’s current in the developer’s focus. 

More taps than clicks

When it comes to autocomplete, you’re more likely to keep your fingers on the keyboard and therefore maintain your flow state.

Flow state is the state of deep concentration that many of us enter when we’re intensely focused on something. It’s the mental space where we are so absorbed in our own thoughts that our productivity and output is at its highest.

However, the flow state can easily be broken. This is often through changes in the way to perform tasks, or our thoughts get interrupted by the need to switch the way we output our code.

In our case, it can be as easy as the jump between the keyboard and your mouse. Your thoughts can get interrupted, bringing you to a halt in your processes.

When it comes to autocomplete, your flow is maintained and accelerated as you are no longer limited by your typing speed or need to pause for syntax debugging.

Why?

Because autocomplete does all the initial typing required for you.

Predictive = partial automation

The thing with autocompleted code is that the ones with machine learning can have predictive abilities, meaning that your brain is exported to machine learning.

The more you use a particular autocomplete tool, the more it learns your patterns and requirements, making it easier and faster to work with. Not only that, but you also become familiar with what to expect.

As the AI is able to become more accurate in its predictions, it takes you less time to think about the actual act of coding and focus on the business rules, in addition to the structural and architectural parts of your code.

The more you use autocomplete, the less time you spend figuring out how to ‘spell’ your code out. Your attention is shifted towards the important task of getting the building blocks for your application right. 

Learning through coding

For a lot of us who are starting out in the world of commercial coding, autocomplete can also help you become a better developer in the long run.

There are many things that aren’t taught in online courses and college classes. Sure, you can learn how to code but the actual application of coding can be a challenging task, especially if you’re working on a pre-existing project.

The difference between school and real projects is that you’re often inheriting code from others. You’re not in an isolated sandbox where everything is neat and cohesive. There will be legacies. There will be bugs. There will be shaky logic that made sense when it was first created.

This is where autocomplete comes in. 

In a way, autocompleted code is like training wheels for new developers, as much as it is a productivity tool for seasoned engineers. This is because auto-complete lets you code without actually writing the code.

Maybe just the first part or two — but the rest is written out for you and it becomes a matter of modifying what is needed. If AI and machine learning is involved, then you’re in a fantastic space to learn in context. 

Because autocomplete isn’t just about filling in the blanks. Rather, it’s a productivity and quality tool packaged into one.

Final thoughts

Auto-complete may sound like such a basic thing to have in your IDE but it can save you a ton of time in the long run.

It’s not about being lazy and not manually typing out each line of code. Besides, manual work is the sign of an inefficient developer anyway.

Automation is key for increased productivity and auto-complete falls in this category.

As a developer, autocomplete has helped me personally on two fronts — speed and delivery accuracy. I’m dealing with fewer errors, in addition to reduced questions from junior developers. Why? Because autocomplete had reduced the amount of time they need to spend on incorrect syntax and improper code creation.

Why auto-complete won’t solve all your coding problems, it can surely help reduce a good portion of them, especially when your brain is in the flow state and running at a particularly increased speed.

The last thing you want when you’re in the middle of stringing your thoughts together is to have your flow state interrupted, sending the web of business rules you’re carefully constructing inside your head crashing into a wall. Why? Because you’re stuck trying to make a syntax or reference error go away.

When things break, it’s usually enough to also break our flow.

It happens. 

And for some of us, it happens more than others.

When using autocomplete as a learning tool, it can make you a better developer. It can help you grow your knowledge base and reduce the number of alerts and warnings that comes through from your code. 

Autocomplete as a tool to help you code faster, increase code stability across the team, unite the codebase in format and syntax style, in addition to contributing towards reducing the number of days you might spend on a particular feature or functionality.