Vladislav, how did you get into JetBrains?

I studied mathematical support and administration of information systems at the Mathematics and Mechanics Faculty at St. Petersburg State University. In my third year, I joined the Computer Science Center and got the chance to do my internship at JetBrains where I developed an audit system for financial statements. After my internship, I stayed at the company: first at the Internal Development Department and then at JetBrains Research.

Could you tell us more about the Computer Science Center?

The Center offers retraining courses for students interested in mathematics and programming. It was established in 2011 under the aegis of the Academy of Modern Programming and the Computer Science Club in cooperation with the School of Data Analysis. This year, the center celebrates its tenth anniversary. Back then, it had courses on data analysis, modern computer science, and software development – I chose the latter. 

The Computer Science Center. Credit: vk.com/compscicenter

The Computer Science Center. Credit: vk.com/compscicenter

Why did you decide to do your Master’s?

I thought there was more I could get out of university. I wanted to find an interesting program that would allow me to study and live in the city. Since if I had stayed at St. Petersburg State University, I’d have to go to Peterhof every day for my classes. As a result, I opted for a joint Master’s program by ITMO University and JetBrains because of my supervisor and teachers from the Computer Science Center. Plus, it was my company’s program. 

I also found out that some of the courses that I took at the Center were also offered as part of the Master’s program but in more depth. And I thought: “Is it possible to go even deeper into this subject?” And as it turned out, it was. 

And yet what did your Master’s degree give you that you couldn’t learn in practice? 

I liked the fact that many courses were quite fundamental such as, for example, discrete mathematics. It is quite useful yet not really applicable for work. Yet if you have to deal with it, you will need all your knowledge to solve problems. Or take, for instance, algorithms or data structure – these are quite typical for IT programs but Alexander Smal made the classes even more interesting. 

There were also more specialized disciplines: for instance, a course on IDE development delivered by the Resharper C++ team lead who had firsthand experience in this field. We also studied GPU computing, which at first I didn’t take seriously. Now, I constantly practice it in my work. That is, there was once a time I struggled to draw hares rotating in 3D space and now, I use this knowledge to count huge matrices. And it’s useful for me and my colleagues, too.

Doing a Master’s was also a great way to get a break from work. At work, you mostly deal with quite specialized problems, while the university offers you a variety of activities: classes, various fields, different projects. It’s all fascinating!

Students of the Software Engineering program

Students of the Software Engineering program

Do you think that learning about the theory is useful, too?  

Well, I studied mathematics extensively during my Bachelor’s degree and so far, I applied almost everything, except maybe differential geometry. Now, I’m all in machine learning that is, in fact, built almost entirely on possibility theory.

All in all, if you strive for major tools or large-scale platforms, you might need expertise from various fields. Knowing the theory of algorithms, you may find great solutions that you may have never come up with on your own. At such moments, you might catch an insight from dozens of lectures you had at university. 

Did you have only fundamental mathematics at the university?

Basically, the university gives you the opportunity to learn the fundamentals of applied fields. For example, if you want to understand the theory of algorithms or GPU computing, you will have to read a 700-page textbook, and the good thing is that you have no choice. 

Of course, the program also includes internships after each semester and various projects. Twice a year, you can participate in a hackathon. There, you have to work in teams, manage deadlines, create your own projects, and even offer them to JetBrains, for instance. 

Before my Master’s studies, I worked on one project called Kotless. This is a system that allows you to create apps and integrate them with the use of cloud computing. I defended this project at the university and even presented it at major conferences in Copenhagen and San Diego. 

During the hackathon, my classmate Aleksandr Khvorov and I came up with the idea for a plug-in that can check texts for grammar problems (for example, comments in code) in the JetBrains’ development environment. And now, two years later, we have a team of 20 people engaged in this project. Thus, something great can come out from what seems purely educational.

Vladislav Tankov at a conference in San Diego. Credit: twitter.com

Vladislav Tankov at a conference in San Diego. Credit: twitter.com

Can you tell us more about the plug-in and how it works? 

It all started with a hackathon in 2018 where one of the teams created a similar project. It worked great but didn’t scale up enough, so they gave up on the idea. We, in turn, decided to try our hand at this problem yet chose a different approach: we didn’t start from scratch but picked up an existing grammar checker and integrated it into our solution. And, surprisingly, it worked quite well.

Then, we presented it to JetBrains saying that it’s an important and needed product. The company has over 12 million users, most of whom write texts that should be checked for grammar and punctuation errors. Moreover, there was no such plug-in before, and ours ran like clockwork.

The idea is now turning into a full-fledged platform like Grammarly, and we already have 20 people in our team. Now, we have switched our focus from grammar only and started to introduce search synonym technology, translations, and other features. This can already be called an ecosystem for texts, and we’re planning to add both English and Russian languages. Russian is easier as it has a set of stricter rules and no dialects unlike English (British, American, and Australian English). Besides, there is no such tool for the Russian language that can correct punctuation with an accuracy of 99%. 

Our program is actively being used at JetBrains and it already has several users within the company.  We also plan to test it outside the company, among journalists and copywriters. We even add special functions for them, for example, a plagiarism checker. 

Let’s talk about education again. You’re now a PhD student, right? As far as I know, you believe in life-long learning. Is it true? 

Yes, I am a PhD student at St. Petersburg’s Higher School of Economics where my supervisor works. And I continue to work on Kotless and write my thesis. 

Since I often interview people, I know that people have different thoughts on education. Some don’t have a specialized education but they’re good at what they’re doing, others have several backgrounds but don’t succeed in one. I think that education is important, and it helped me a lot in my career.

And, of course, you should keep your knowledge current. Firstly, everything is rapidly changing. If you’re going to make apps in React and solve the same problems over and over again, you will inevitably feel that you’re not getting anywhere. If you don’t educate yourself, don’t go beyond your everyday tasks, and don’t get out of your comfort zone, you will be like an endangered mammoth, completely not adapted to the modern world. And you won’t even know how everything has progressed. Secondly, life-long learning gives you a wide range of opportunities: you can move forward, promote your products, come up with innovative solutions, and so on.

Vladislav Tankov. Photo courtesy of the subject

Vladislav Tankov. Photo courtesy of the subject

Would all IT specialists agree with you? 

Many believe that they don’t need education because they’ve found their method. But after all, you can’t use mathematical methods if you know nothing about them. I have a great experience from my personal experience – cryptography. At interviews, I often ask people about symmetric and asymmetric encryption. Oddly enough, few can explain how it all works, although it’s in the algebra course. 

Anyway, if you want to make a breakthrough and create state-of-the-art technologies, you have to constantly learn something new, read articles, and take courses. At the moment, this approach is very popular among ML specialists. In their sphere, if you don’t read related articles for three months, you are already out of the loop. So, yes, you should keep learning!