Andrey Breslav on Kotlin, Time-Management, and Being a Programmer
Several years ago, ITMO University graduate Andrey Breslav joined the development team of the international company JetBrains, where he oversees the creation of a new programming language Kotlin. In the past year alone, Kotlin has been used by more than two million developers worldwide; it has also become an official programming language for Android, and set its sights on entering the top-five of world’s most popular programming languages in the near future. In parallel to his work at JetBrains, Andrey is busy running his own project, service app Alter, which helps users find a personal psychotherapist based on a special searching algorithm. In his recent open interview held as part of the project ‘Everything Is Possible in St. Petersburg’, Andrey shared about how to develop a new programming language from scratch, create a global product being based in St. Petersburg, and still squeeze out some time for other activities.
On choosing a career path
When I got into programming as a child, I didn’t realize that it was me choosing a profession, it just was something I liked to do. Back then, I had a prehistoric computer that wasn’t even suitable for programming because it didn’t have a compiler, just a DOS that allowed for writing simple commands, which I did obsessively until a friend gave me a floppy with Basic. That’s how I started programming.
It was funny: I didn’t know a thing about Basic, just launched this floppy disk and sat there staring at the computer display. But then I remembered that somewhere around the house, there was an old Soviet textbook on computer science which may have had something to help me in my predicament. I digged it up, flicked it through, and found a whopping two pages on Basic. That alone could have hardly been enough, but luckily the floppy my friend gave me had a Russian Help file. However sketchy, this combination did help me learn a couple of tricks. Then I was given another book which was far more meaningful than the one I started with, and I began to build a theoretical foundation for what I was doing almost instinctively. And a little bit later I was introduced to the Internet, and with it, a whole new world of opportunities to learn and develop my skills.
On creating Kotlin
As part of my PhD studies I researched the field of domain-specific languages, which are like programming languages, but not universal. They wouldn’t allow you to write anything you want; on the contrary, these languages target specific, limited tasks. This is the topic that has its niche, but it hasn’t become mainstream yet.
As I was doing this research, I heard from an acquaintance that there were some like-minded people interested in domain-specific languages in the JetBrains company, and that they were thinking of creating a new programming language, and a big one at that. Initially I thought that they were mad. At that point I was doing an internship in Estonia, but still visited St. Petersburg from time to time. In one of these visits, I was invited to drop by JetBrains for a chat about these plans, and as a result, I decided to give it a go.
The meeting convinced me that there was, in fact, a method to their madness, that creating this new programming language from nothing did have some prospects. A discussion on the downsides of existing programming languages, and the potential the company had in launching their own language on the market really hammered these arguments home to me, and I went out of the room a big advocate of this venture. We talked through the details, and set down to work on Kotlin in autumn that year.
On inventing a new programming language
There are way more programming languages than the number indicated in Wikipedia. The new ones are invented on a monthly basis, often publicly, and it’s not extraordinary or groundbreaking. Most universities that train programmers teach a special course on translator languages or programming language theory, so the tools are out there for everybody to use.
It’s possible to not only create a language, but also implement it in such a way that it would allow for writing fully operable programs. There are many examples of that. The difficult part is encouraging other people to use it, and making it tangibly better than the other languages available. The market is saturated with tried-and-tested mainstream languages with lots of adherents and questions solved, and squeezing your own invention into this mapped-out territory can be tough. You also have to understand that switching to a new programming language can be very expensive: there’s no cogent reason in changing your tool of the trade if you’re already using one language for working on a specific project or just know it well enough. It would be a waste of time and effort. And if you want to rewrite something in a new language altogether, it’s a direct road to the madhouse because of the massive amount of work that will snow you under. So people in our field often hold back from trying something new.
You need to offer them something if you want to motivate them to make this jump. This doesn’t have to be a universal, all-embracing benefit; what’s important here is to find a group of people who have some qualms about the available languages, and try to appeal to them. We have managed to find such an audience. Initially it was Java programmers, but now we’ve taken on a wider approach. We saw that there was a big cohort of people that write on a language which at that point didn’t have a lot going on in terms of development. They felt so limited by this that they were ready to adopt a new language to work on.
On our part, we tried to make this switch as easy as possible. This was the biggest challenge for us. Creating a new language from a blank page is one thing, but taking what’s already there and attempting to improve it was another, and that’s what we did with Kotlin, a language that builds upon all other languages out there. Ours is not an isolated case though; there were similar attempts before, for example, with C++ trying to perfect its predecessor C. We wanted to make it easy for Java users to take to Kotlin. This was done through a combination of familiar concepts and novel ones, so that people using Kotlin wouldn’t approach it as some Martian language coming out of nowhere, but rather apply their pre-existing knowledge to look at professional tasks from another angle.
On Kotlin becoming an official programming language for Android in 2017
There are lots of people out there who make a living out of writing mobile apps for Android. Google is the main trendsetter in their ecosystem, so if Google gives a new language an official endorsement, it reassures them that writing on this language is safe, because it won’t disappear in a blink of an eye. I think that was the thing that pushed them.
That said, it’s important to mention that this was a bottom-up initiative. It wasn’t as if Google and JetBrains had arranged it between themselves to make everyone write on Kotlin. On the contrary, it was because our language went viral and users pestered Google so much that Kotlin was proclaimed an official language for Android. And it happened in as little as a year. To the community, it was a sign of a global modernization of the system, and yet another reason to trust our language.
To us it meant a massive increase in users; almost two million people have used Kotlin from the start of 2018. Naturally, we want to make it one of the world’s most popular languages. I think that our making it to the top-five is more than possible, and we’re doing lots of work in this direction.
Alter is a service that helps users find a personal psychotherapist based on a special searching algorithm that was developed in close collaboration with experts from the Psychological Institute of the Russian Academy of Education.
How did it all start? I’ve always been very curious about how I and other people think and act. As a student, I made some friends among the people who studied psychology; we often discussed the matters of the mind and made a lot of interesting discoveries. I myself started thinking about attending psychotherapy sessions.
A couple of years later, I finally went through with my plan and was fascinated by how beneficial it was for me personally, how many new opportunities of personal growth it opened. I realized that many people I know could use with such a psychological boost.
Talking about it with my acquaintances, I couldn’t help but notice that not a lot of people know about this opportunity, and those who do treat it with suspicion. This started the whole plan on popularizing therapy among the general public. But then I realized that it was possible that people would say, this sounds cool, but where do I get a psychotherapist from? And I didn’t have an answer to that.
At first, I approached this dilemma by garnering contacts of practitioners of acquaintances and recommending people on a case-by-case basis. But I soon understood that something else, something bigger needed to be done. It transpired that it wasn’t just me that had these thoughts. I met with people who were also interested in working for this cause, and we created Alter. A year and a half later, our database includes more than 100 top-rate mental health specialists.
The procedure for selecting these is mostly based on the evaluation criteria we developed in cooperation with the Psychological Institute of the Russian Academy of Education. We also ask to see a potential candidate’s diploma, and make sure that they have been through therapy sessions themselves. There is a comprehensive survey practitioners have to take, which tests their professional faculties, and a possible interview stage with the specialists from the Psychological Institute, after which we decide whether this person makes it to our database or not. All this obviously takes more than a day, but this minute procedure is definitely worth the effort because we get great results.
Juggling between two jobs is hard. One week-day I spend on Alter, others in JetBrains. I don’t switch between things easily, so I allocated one whole day on my project to do something useful and productive.
As for time-management, I approach it by writing everything down; all meetings, all activities, all tasks, everything. I've understood at one point that I forget everything I don't put down in writing. My colleagues always laugh at me and my jam-packed agenda, but so be it.
But however busy I am, I always make time for rest, for example, I take my lunches very seriously. I also never compromise on taking a vacation and put it in my agenda lest I forget and decide to make plans. It would have been impossible for me to carry on otherwise, I’d crash down.
On professional burn-out
Programming and engineering in general is something that you get used to very easily. In my early years, I would program late into the night. As long as your body tolerates it, you can work without feeling tired and harming your health. What you get instead is a boost in your qualification, so it becomes all the more important.
But when you grow up, you get other responsibilities that niggle away at your energy. You start feeling the fatigue without even noticing it: your productivity falls, you get moody, that’s what a typical burn-out looks like. It’s a dangerous situation for an employer who wants all of their workers to stay healthy and upbeat. I was on an internship at Microsoft once, and they gathered all of us interns and regular specialists in a big hall and said, ‘On no account do we want for you to work till you drop, we need you alive and healthy.’
If an employee says to me that they didn’t manage to finish a project in a working week and had to work on Saturday, I ask them to take a day off because I know that if they forgot to rest, they’re likely to perform worse going forward. I saw lots of colleagues burn out, and this is all very sad.
On life without programming
It’s hard to say whom I would have become if I didn’t choose programming. But if I stop sometime in the future, I’d like to explore being a writer. I’ve accumulated a lot of thoughts and want to express them in some way or another. I’d also like to venture into organizational activities, but I realize that I won’t last long in this, it will tire me too much. Another option is learning how to steer a ship, I know the ropes, but there’s always room for improvement. I don’t see this as an alternative profession, however, just an additional skill.
I’ve done some teaching, or too much teaching, I think, as I’ve grown tired of it. I don’t rule out returning to this, though. There is a great deal of things I could do, but the main question is, how much effort do I have to put into this to get some result. Programming in this regard has a magnifying-glass effect on the results of your labor: you write a program and it goes on to be used by a large number of people. This is one of the reasons stopping me from studying to be a psychotherapist. I understand that even if I become one, all I can do in an hour is to help only one person. It’s enough for some people, but not for me. I’d like to work for something with a greater reach.
The project ‘Everything Is Possible in St. Petersburg' is organized by the Alumni Association of the St. Petersburg State University and Beeline with the help of the newspaper Bumaga (PaperPaper). ITMO.NEWS has already previously reported on an interview with David Yang, a famous Russian business angel and the founder of ABBYY, which was also held as part of the project. The open interview with Andrey Breslav was moderated by Bumaga’s Editor-in-Chief Viktoria Vzyatysheva. You can watch it in full here.