“I get torn when I can't write code” - an interview with Maxim Shafirov, CEO of JetBrains
In the New Year's edition of No Slides - Maxim shafirov Shafirov , CEO of JetBrains.
This is what we talked about with Maxim: ')
Does the Russian market matter to JetBrains?
Why doesn't Maxim stop writing code?
How much does dogfudding help and what are its limitations?
Why does the company rarely close products?
How did Kotlin appear, and how does the company see its prospects?
Why the company was not sold, despite generous offers?
How did the PMM post appear in JetBrains?
How does JetBrains simultaneously compete and collaborate with Microsoft?
As usual, under the cut - full text transcript of the conversation.
About work in the Russian market
- I'll start with a quote from an interview with RBC, which you gave this summer.By the way, the article was called very interesting: "How to build a global business on empathy."
- As you, of course, understand, I did not invent the name. The main thing for a journalist is to come up with a name ...
- Well, in fact, it is pretty close to what they say about you: you are your own product, and empathy is probably the right word.I liked the headline.And such a quote.The journalist makes an introductory statement that the Russian market is peripheral to JetBrains, and you say the following: “Now the situation has changed somewhat - we opened the Russian sales office so that domestic buyers could not send money to the Czech Republic, as happened before, and pay domestically.So now I sign all these papers.And judging by the volume of securities, things are going well on the Russian market too - there are orders, they are getting bigger. ”
Every time I talk at events like JavaOne with guys who are engaged in product development, they say the same thing: "Russia is not a market for us."Because there are few sales, people are not used to paying for software, and a number of well-known reasons.
For JetBrains, is Russia a market or not a market?
- Well, as much as the Russian software market is part of the global one. Everyone knows that the largest software market is the States (except for China, where the specific situation is now). Then comes Europe, then all the rest. Russia takes somewhere one-two percent. Well, these 1-2% appear in our sales structure in the same way. Is it a market or not a market? Yes, the market is good.
- Does the fact that the majority of your developers are in Russia and the company originated from here, sales, marketing, affect [you]?
- Does not affect.
- Despite the fact that there are channels like Habr, and many people in a get-together, everyone knows everyone?
- Let's just say, I don’t know how to correctly measure this influence, but it seems to me that it isn’t really felt. We are pleased that we are known, it helps us, as an HR brand, to hire good people, because they know what they will do: what they use in their work every day. It is good. And in terms of money, I don’t know.
- But still the market is growing?Hand not tired of paper to sign?
- Tired. We are trying to implement some systems (it turns out, Russian manufacturers also do these), where you can sign documents electronically.
- Are there any stories with integrators, people who sell it?Here Microsoft in Russia is sold through partners.
- Yes, of course, there is, but we absolutely do not keep track of who they sell to, we do not participate in any way in working with end customers. Without this, we wouldn’t have any corporate sales in Russia at all, because it’s difficult to technically justify the transfer of money abroad for many companies.
- Yes, there is currency control, VAT, the whole story ...
- But this is not a purely Russian history. Such resellers to collect money, there are in many countries around the world.
- Will you do something with Russia on purpose, or do you perceive the market as it is?
- He's good, we like it. Why do something special with him? I think that Russian food companies all come to us in one way or another, we know them, you know them. You can call the names, but it does not tell anything extra. There is such a special sector as state-owned companies or simply state structures, so it would be possible to work with them on purpose, but we had an incident here, and now they cannot buy our software!
- So for them you are not a Russian company?
- For them, we are not a Russian company, because intellectual property belongs to a Czech company. Our business is so arranged here that the Czech company orders the development of a Russian one, the Russian one makes it to order for a coin, the intellectual property remains on the balance sheet with the Czech one. When you buy something, you buy it from a Czech company. And [for sales to state-owned companies] you need to be in a special registry. And if there is anything in this registry that remotely resembles a competitor by name or category, then you cannot buy a foreign product, you must buy a Russian one.
- But there is no one!
- Actually no, but if you read the registry - that is.
- There is IBM with Eclipse, there is Oracle with NetBeans - and they are all foreign too.
- You list real competitive alternatives, but there are paper competitive alternatives.
- It's pretty funny.So this is all connected with import substitution, with such things?
- Well, we are not particularly sad, because from the point of view of money, they were not there. It saddens us that users who would like to buy something from us cannot do this, they write to us, "Let us add you to this list, but Kaspersky did it in some way." And we can not help them. It's a shame.
On the combination of development and management
- You have another line of server products.
- Yes.
- Quite a big one, and if I understand correctly, when you had two CEOs, Oleg Stepanov was more involved in them.In connection with which you had such a separation?
- Well, just functionally folded. Not that we shared the areas of responsibility, but I took up the sales infrastructure at that moment and was very busy with this, and Oleg did something else.
- What is the sales infrastructure?
- This is a system in which all licenses are registered, in which cards, reminders, payments ...
- Why didn't you take a ready-made solution?Surely there are many such solutions on the market.
- All decisions on the market are driving you into some kind of canvas. We have historically made it so that our idea of licensing software is non-standard. In addition, when it occurred to us that it would be necessary to restore order, we already had quite a few clients, so we could not afford to throw out the story and start from scratch. Probably, we could order it to someone. We even looked at some variants of ERP-systems like SAP and NetSuite - and it’s scary, it’s scary to invest there.
In some divisions, particularly in Prague, we standardized NetSuite, because there was simply no in-house accounting, it was outsourced. And it was an extremely painful process, so it’s good that we didn’t transfer our customer service system to NetSuite.
- You have an important advantage: you are the people who develop software!
- Yes.
- Are you still developing yourself too?
- Yes.
- Tell me, doesn’t you break at all from this when you have both “code to write” and “answer for the company”?
- It breaks me when I can't write code. It may sound lofty or banal, but if I haven’t written a single line of code in a day, I feel very bad, I feel some dissatisfaction. In spite of the fact that I solved terribly important questions, somewhere I helped someone with something or led some conversations, it’s still important for me to write something in order for something to work.
- And did you think in the key “for business it is important that I pay more attention to business, and someone else will write the code for me, we have a lot of smart guys”?
- Yes, I thought. And then I came up with this otmazu with empathy , and I felt very good! I need to understand how a business works, why it works, for whom it works. And now I understand him from both sides.
About dog food
- It’s very cool to start a story on empathy, on dogfuding .But at some point you clean out all the pain from the product, and you are already fine.
If you ask an IDEA user from the side of what has changed in IDEA over the past five years, they will tell you - well, the topic of Darcula appeared, well, the lambdas began to be supported.And as an IDEA user, I also have no feeling that it is changing.You probably are doing a great job - both performance and UI, and everything, but the user doesn’t feel it.Here's how you decide this dichotomy for yourself?
- First of all, we must confess that what the “user does not see” is the effect of perception, it is the user's feelings. Because the amount of functionality that we do depends, no matter how trite it may sound, on the amount of effort we put in there. If at the beginning 3 people worked on IDEA, then for the year there appeared 3 person-years of features, and when 90 people work, 90 people-years of features appear. There is an accumulation, and each subsequent release differs from the previous one not by 10 times, then not by 2 times, not by one and a half, but, say, by 5%. And in terms of volume, these 5% are even more changes than happened before.
At any given time, each specific person knows how to improve the product. The fact that this does not always add up to some kind of holistic picture, which from a marketing point of view can be submitted to users - well, God be with him. We know that the product is getting better. And in the end, we see that users agree with us: they carry money. Would not agree - would not carry.
- There is always a gap between how the product is perceived by the engineer who makes it, and how the users perceive it.You tried to make this difference, and if you did, what was the most interesting?
- We are constantly trying, and this is a painful process. Admittedly, dogfudding is a bit one-sided. As for the core features, work with the language, some generic stories, refactorings, light bulbs and inspections, everything is clear with them. But on the other hand, all the people who are currently working on the IDEA project write the IDEA project. It started 15 years ago, it is large, specific, it has a certain structure of modules, and it does not need to start from scratch. And when a new developer comes to us, puts a product ... At the beginning of his work, he realizes that there can be MANY improvements to be made! For example, when I left the IDEA project myself and tried to do something from the side, my hair stood on end. It turns out that everything is not as chocolate as it seemed to me!
Another thing is that before the team this story must be permanently reported. JetBrains does not consist of one IDEA, it consists of people who develop other products. And the IDEA team receives a stream of information not only from users, but also from us, too, from “another JetBrains”. And there is progress, I think.
- I have a thesis for a long time that dogfudding is a trap that can be easily caught.He really helps in the first stages, but begins to interfere later.But you have been using dogfudding for many years and at the same time growing wildly.So my thesis is wrong?Do you see any problem in that you have a complete dogfudding?If you see, how are you fighting this?
How do you, for example, learn opinions about your products from people outside?I know that you have a public bugtracker, but you and I understand how many people write in Java, and how many of them go to IDEA bugtracker.Obviously, this is a very different number of people.
- The number is different, but the sample is statistically, I think, quite representative.
- That is, many users come to your bugtracker?
- Lot. These are hundreds of thousands of people, I guess.
- You wrote a system related to sales - this system was responsible only for sales, or some marketing stuff, too, for tracking channels, for example?
- No, here we used Marketo, tried to integrate with it. We tried to integrate with everything that is missing.
- And how do you feel?
- Not really. If I were making a product for marketing, I probably would have done something more convenient.
- We (JUG.ru Group) are also trying to track the channels - who has found out about us, who has recommended us to whom and so on.For us, this is a very difficult story, but it seems to me that it is very important.Are you actively investigating this issue?
- Not.
- You did not have such a need?
- Not. The fact is that if a client company is small, then it is really from one person very quickly, virally, sits down on our products. Or not. This is "work from the bottom." And if the company is large, then work is needed from above too . Not like trying to sell to someone - CTO or top management - but it requires the work of sales just to ensure communication. Any discounts, personal relationships, assistance with approbation, research. Because people in large corporations like banks are waiting for this, they just need it. Otherwise, you look to them as some kind of small vendor who is not responsible for what he does.
About the way to the company
- You're in JetBrains for a long time?
- October 1, turned 15 years old.
- Is it from the very beginning of the existence of the company?
- Almost from the beginning. When I arrived, IDEA was version 2.5.
- How was your employee in the account?
- Tenth.
- You had some stages: you were an engineer, then a product or project manager ...
- Yes, but I have always been an engineer.
- And now you are the CEO.And can you identify any stages for the company that somehow changed it?
- In your cut?
- From the inside - once, in the context of the market - two.
- Now, remember all 15 years ... When I came, the company had one product - IDEA. And I personally began with what I did inspections at IDEA, and I started with the simplest, of course - State Flow analysis, which suggests: "This area is always true , and here NullPointerException will fly out." The sarcasm is that this is still the most advanced technology: we wrote fifteen thousand inspections, but for some reason this one turned out to be the most powerful.
- Well, maybe because NullPointerException is “Billion Dollar Problem”?
- No, it was just fun to write.
- I mean, why so far ...
- Why is he useful? Because it is fundamental. All the others are like templates: “do not write like that, write like this,” and also an explanatory note why it’s so right and not. And this inspection is trying to understand the structure and semantics of the code, which may not be reflected directly in the code itself, but it can be derived from there. I remember, for the first six months, my colleagues called me with the words “here you have complete crap,” “this cannot be done,” and I would come and explain: “look here, here is the condition here, here it will be assigned to this, and then this one will come from here, and then you will have ... ”-“ well, yes, indeed! ”. For the first six months, no one believed me, but then they gradually stopped coming to me.
- So you wrote, in fact, a piece of the compiler?
- Yes, and even a little more. It was compiled really into some pseudocode, and inside is a fucking interpreter a la virtual machine that tries to parse all non-equivalent memory conditions according to control flow graph, and then, respectively, look at their compatibility and highlight some conditions which can be interpreted as bugs.
Then Sergey Dmitriev, the founder, who wrote quite a lot of things, wrote the first version of the editor.
- That is, initially it was not an editor, but some kind of separate inspection?How did this work?
- No, no, you're confused. In addition to inspections, I began to support the editor.
- you specifically?
- Yes, specifically me. I fixed a million problems there, spent the first time in my life with the profiler, on the Pentium III, I specifically asked myself a typewriter that ...
- ... did not slow down?
- No, on the contrary, which braked! Because users complained to us: “You cannot print lags and code!”, And I could not see it on Pentium 4.
- This is also dogfuding, only in a different section.
- Launched the first profiler in his life, and he was the SKINTER. It was like this: you press a key to check the speed of how it is printed, and in ten minutes you could go up and get a trace of what was happening at that time, and then somehow try to optimize it.
I was engaged in the editor of folding, performance, fixed a bunch of bugs, made a bunch of features. And then Sergey Dmitriev came (the founder and president of JetBrains - auth. Note) and said: "Come on, you'll manage IDEA." Here in the formulation of the question. I say: "You are so fucked up or something?" ... Well, okay, I say: "How is that?".
Then three days it was like “How is that?” In my head, and decided that I should try. And tried it. Gathered a bunch of cones. When they say that programmers make bad managers, this is, of course, true in a certain sense. All the same bumps that some manager has already collected somewhere, you have to collect again.
How some projects are closed
Okay, I'm telling you about the company, right? Well, by that time, we already had the Fabrique project, which turned out to be closed. It was the idea of "let's make such a mega-tool for writing web applications, there will be some server engine so that the UI can be drawn in the picture, AJAX is supported there, WYSIWYG".
- It was the middle of the two thousandth?
- Yes, the word AJAX is only beginning to appear, has not yet entered the mainstream, it was probably the year 2004. So, the Fabrique project was closed ten days before its first release.
- Did not fly?
- The realization has come that it will not fly.
- And how are decisions about closure generally made?You have invested a lot of effort in this project?And this is probably not the only project that you have closed?
- We have very little closed. Hand on heart - probably it would be possible to close more. But it is easy to close the project until you roll it out to users. Because after you rolled it out, even if you do not have any direct obligations (such as they paid you money or are counting on bug fixes, maintenance), there is still a commitment. Closing a released project negatively affects how people perceive your company.
Google can probably afford to close projects to the right and left simply because it can. How much noise was there about closing the Reader? It was used by millions of people! Google has realized that it cannot afford to accompany such a project, there is simply no one inside to do this, no one wants. They can even close what they themselves used to hear with fanfare: “The Wave is a new way of communication, an e-mail killer, now you’ll write everything to Wave” ... Trying is really beautiful. But did not go. Took and closed.
We have not. We closed Fabrique, we closed OmniaMea - it was such an information aggregator written in .NET: email reader, newsgroup, RSS feeds, site content tracking ... If you need to track some large amount of information, there is a box that is convenient to do. And there was a bunch of smart features. As a business it did not fly, and decided to close. And this is almost all of the closings of products.
- It turns out that as soon as you have sold your product to someone, for you it will immediately go.There is something that grows in you, but there is something that you cannot refuse from, because this is something that has customers.Are there any projects that are pulling you down?
- I would not like to comment on this. Let's just say: there are projects that bring less money than we spend on them.
- Clear.The portfolio for this and need to diversify.Was the story of the launch of ReSharper at one time an attempt to diversify your business?
- Yes, of course, absolutely.
- What frightened you then?IBM and Eclipse?Tell me a little about it, what did you feel then?
- And then I was an engineer. It's pretty funny for me, now retrospectively, I understand that when Sergey Dmitriev said “let you manage IDEA”, he actually meant that IDEA is over, because Eclipse will kill her now. And it does not matter who will develop this project further, but it is necessary that the project be afloat for some time ...
- Because there are customers ...
- Yes. Well, maybe we will still have a drink ...
- How interesting.
- Well, maybe he doesn’t admit it now, but somehow I see it now. Well, there really was such a situation: everyone really either closed or rewrote their IDE based on Eclipse - Borland Together, for example.
And returning to your question that “we are right in everything and dogfuding is obviously a good way, because we earn good money” - our competitors still help us, and this is also quite significant.
- What do you mean?
“Well, I see that Eclipse is not doing well right now.”
- So you learn from their mistakes, or do they just dig their own grave?
- Dig, and frankly: their users complain about the quality. They had complained before, but there was some developmental dynamics. And now - there are sites where you can see how many commits are done in Eclipse (IDEA Community and Eclipse are open source). And we have, for example, two hundred commits per day, and they have twenty commits per month with the same code base functionality.
- There is a feeling that they give up?
- They do not give up, of course, they just do not have funding. This is a non-profit organization that is funded by various large corporations.
- This is an interesting story, because people are accustomed to talk about open-source communication as about some non-commercial things, but we are well aware that Java is sponsored by Oracl, Eclipse is sponsored by IBM, and so on - that is, the developers of these projects do not work is free.
- There are stories when people work for free, but this can not last forever.
- This is not about great products.Three people make OpenSSL for free - I’m ready to believe.But, for example, in Linux, employees of major vendors such as Red Hat and Intel are contributing.
Why I started talking about this: I really like the fact that you are selling a product for money.In Russia, it is somehow not accepted to buy.And, maybe, not only in Russia.In general, this story with open source and free software is a bit scary, because programmers use these products, who get money for their work.But their companies often are not ready to pay for these products.Is this a purely Russian phenomenon, or is it also observed in the rest of the world?
- On the one hand, in the world it is considered that it is good to be Open Source and it is bad to be proprietary. On the other hand, there is such a thing in Russia that the entire Software Development is some kind of quixotic. You need to be a knight in white armor, do good things for free, share it with the world. And in principle, earning a lot of money in Russia has a certain flair of shame. Oligarchs, “if you have a good car, it means you stole” ... Unfortunately, there is such a train. It will pass, of course.
- But money helps to do interesting things - for example, to create a new programming language.
- Not only. First of all, money helps to do what you do . I am absolutely sure that the users of our products are interested in paying us money. Because this money will be used to make their tools better.
About Kotlin
- I want to talk about Kotlin.I have known Andrey Breslav for a very long time, he taught me at school, then at the institute - and I am very grateful to him for that.And at some point, Andrew returned to St. Petersburg and said, "I now do the Kotlin language in JetBrains."Who and how did the idea to make your programming language ever occur?
- Let me tell the whole story. Sergey Dmitriev came and said: “You know, it seems to me that we need to do something interesting. IDE, tuling - it's all clear, but what would be done to bring the company to a new level? ”And Dima yole Zhemerov blurted out:“ And let's do a programming language! ”
And Dmitriev came to me: "Here Zhemerov says, let's make a programming language." And I answer: “Lord, what a garbage? Where is JetBrains, and where is the language? Language makes sense only if it is popular. Here the IDE can capture 5% of the market and feel great on it. A language cannot do that; it only makes sense if it is mainstream. ” I still think so.
- Well, 5% for the language is very good.According to the TIOBE index in the region of 5%, the first ten ends (in fact, the troika is a comment of the author).
- Well, 5% - I bent it. And at some point it seemed to me "well, no, it is impossible simply because it is impossible." And then I thought: here we support languages 20 or 30, I have even lost count. Any different. And we know how people write to them. We know where rakes are laid out in every language, we know all their pros and cons - not only from the point of view of some formal features and checkboxes, but from the point of view of the practical use of all these languages.
- So you have accumulated expertise.
- Yes. And an understanding has come that, probably, JetBrains is the most technologically savvy company in order to make a programming language that will actually be used in the industry. Then we had all these standard conversations, “why not Groovy?”, “Why not Scala?”, “Why not something else?” And we began to think what language it would be. We were absolutely sure that static typing is needed, because static typing is a tuling, and tuling is an IDE, and IDE is money, and in general, it is more convenient and faster. We threw some list of features, and then Andrey Ivanov brought Breslav, and he began to ask us.
And that was the Jam Session. I remember him very well from the first to the last minute. He started asking questions, I answered them - why not Scala, why not Groovy, all the same. He was rather skeptical, but nevertheless open to dialogue.
And by the end of the conversation, maybe four hours later, we already had a clear understanding that Andrei works for us, and he does this and this. Then he went to Microsoft Research for a year, did some research there, then he came back, and we sat about a year and a half in the room and just designed a new language.
- So first you did it together?Four hands, two heads?
- Well, this is too immodest. Other people participated, of course. Any ideas were processed and tested in the hallway. A lot of guys (the same Dima Zhemerov, the same Ilya Ryzhenkov, Volodya Reshetnikov, who is now at Microsoft), expressed a lot of ideas, commented. Or Roma Elizarov - he came to us, because I called: "Rom, I will tell JetBrains how we will do the programming language, come."
- What year was it?
- 2011 Maybe 2012 Roma came, listened, said: "Dude, everything is cool ... But Nullability." And we are: “Well, it's hard: generics, interoperability with Java” ... He: “Nullability, dudes”. And there was nullability.
“This is very interesting, because Roma Elizarov was also in No Slides in the winter, and then he was still an employee of the Devexperts company, and now he is an employee of the JetBrains company and suddenly he does Kotlin Native, which we'll talk about later.That is, he was then, at that stage, a man who had a significant influence on the language?
- Yes, it was Roma who suggested specifically Nullability. And now it is probably one of the most important features in Kotlin - this is understandable, it is convenient to explain to the user. But Roma gave the idea, but we had to really puff strongly in order to make its implementation in the language convenient, because Nullability in a typical system ... If you put it on Java, you will not be able to use it. We need some other mechanisms in the language: questions, points ...
- I saw Andrei told: one exclamation mark, two exclamation marks, a question mark ...
- All this appeared rather iteratively.
- When you launched it, did you have a forecast “then we will release the language”?
- Yes. We had a forecast that we will release the language in a year and a half. Because "what is there to do - you just need to write a compiler."
- And the release took place, as I understand it, this spring?
- Five years after the date when we said it would be in a year and a half.
- Five years: first two, then five, now almost thirty or even more, make a new programming language.This is a huge amount of strength, nerves and, of course, money.That is, most likely, every year the company spends millions of dollars on this project.How do you rate this investment from a business point of view?
- How strategic.
- So you are making a serious bet on Kotlin?
- Yes, absolutely. When Kotlin becomes a mainstream language, JetBrains’s meaning for the Software Engineering market in which it operates will be completely different. That is, they will say about us that we are not some guys who make convenient, but at any moment replaceable tools, but as about those who make some root feature of the ecosystem on which everything is built. This is a different weight, a different information flow, and money, I think, is also different.
- At the time of the interview in RBC, you called the annual turnover, in my opinion, at $ 147 million.This is big money.Do you invest in other projects besides Kotlin?Here are the languages you have already eaten, only IDE for Go, probably not.(interview was taken before the announcement of Gogland - approx. ed.)
- Will be!
- Great, now everyone has learned that there will be.There is a Go language, there is a JetBrains ...
“You are attractive, I am damn attractive, why waste time” ...
About server tulah
- With this story, I understand everything.But what's next?Does your current volume allow you to invest in various research projects, maybe in other companies?
- Look. From the point of view of JetBrains, we have determined for ourselves for the next few years that JetBrains is still engaged in software development. Still, our client is a programmer or a team of programmers, and we will make a product that focuses on this group. Of course, this is not only an IDE.
In particular, you spoke about server tula - in my opinion, now we don’t have a complete picture in them. We have Tula, which close some specific features, and other specific features are not enough. This is some sort of piece cut, appliqué from a common blanket. And we would like to make a tool that is as integrated for the team as the IDE is for the programmer.
And the joke is that when we started, for example, TeamCity, our first server product, we had exactly the same idea. We said: “Here, guys, we made an IDE, we can say that it is ready — in principle, as early as 2005, nothing more was needed from the IDE.
Incremental improvements, of course, have a big effect cumulatively, but, nevertheless, these are incremental improvements. And here we think: OK, let's make the Integrated Team Environment, but we need to start with something, with a specific story. Then for Continuous Integration, CruiseControl was a system that is stored on a single machine that needs to be configured with an xml file. , , , , , , , , , .
— Hudson, Jenkins.
— Hudson, CruiseControl, 2004-. , Integrated Team Environment, , : Continuous Integration. , -, , , , « », , , « , , version control system », , , .