For starters, can you talk a bit about the lecture you’re about to deliver to ITMO students?
I will mostly talk about the way the working process is set up at JetBrains, where we currently have around 1,200 employees. We’re different from many traditional companies that implement internal obstacles such as hierarchies, permissions, areas of responsibility, and so on. We’ll discuss the advantages and drawbacks of these intra-corporate barriers.
What sorts of advantages and drawbacks are these?
What makes a lack of barriers great is that it gives people the freedom to do what they enjoy. An employee shouldn’t be worried about whether they’re allowed to do this or that, or if they’re stepping outside their area of competence.
The drawback is that, as the company grows, communication becomes increasingly more important and it is possible that there is duplication and desynchronisation of effort.
As I’ve heard, practically everyone at JetBrains is involved with programming or writing code in one way or another. Do you personally have the time for that, or do your other responsibilities keep you too busy?
Alas, right now I have very little time to code myself.
Do you miss the times when that was your primary occupation?
I miss being young (laughs). But anyway, I code as much as I’m able to because it’s part of my responsibilities. Do I miss the time when that was all I did? Yes – and no. I have many new responsibilities now, I work on other things, and I face new challenges; challenges I didn’t have when I spent my time coding.
Let’s talk about Kotlin, the main subject of your podcast. What, in your opinion, are the opportunities that it offers to programmers? What are its pros and cons?
Kotlin was born of the needs we at JetBrains experienced. We needed it; we wanted a language that would make a developer’s life simpler, like our products do. The core idea for Kotlin was to make code concise, expressive, and, of course, enjoyable. To rid developers of some of the chronic pains they experience in their work.
Many others, not just us, say that it’s a language for the industry made within the industry. It’s different from many “academic” languages, if you will, and those that are designed to explore the possibilities of programming. To us, it is a pragmatic language made to solve the key issues familiar to people who create software every day.
Is it more difficult to grasp than Python or any other popular language of today?
Many companies today work with open source code, which allows them to improve their product and gain feedback...
I don’t believe that open source is necessarily a factor in how you create and improve upon your product. You can develop and get feedback without it, too.
Open source has its pros and cons. One of the issues is to do with creating a sustainable business model in this format. If you ask for examples of a sustainable open source project, you’ll hear about Red Hat. But if you ask for a second example, you will most likely hear no answer at all.
So you don’t believe that an open source project may be sustainable?
I didn’t say that, either. I just think that it’s a lot more difficult to create a business model around such a project.
Some say that you should pick one programming language and become fluent in it; some say that you should know a few languages and use them like a toolset. Which approach are you partial to?
I’d say that the ones who tell you to focus on just one thing are mistaken. And it’s not just about the employment opportunities you get. When you learn different languages, and especially different programming paradigms, you expand your ability to solve issues. I am definitely one of those who would tell you to learn as many programming languages as you can.
What would you say are the must-have qualities for a young IT specialist today?
The best advice I can give to someone who wants to get into the IT industry is this: become a farmer (laughs). Kidding aside, the biggest thing is to not become a niche specialist. Don’t dedicate yourself completely to one technology or field. Try as many things as you can. I wouldn’t use the word “polymath”, but, generally, it’s good to be more or less a polymath, unless you’ve got a passion for one particular subject. It’s an important quality to learn about as many things as possible, and to do it all the time.
What about being an active part of the developer community? Is that a must?
It depends on your work. Being active in the community is beneficial to your own self. Knowing how to code is important, but knowing how to talk to others is even more so. It’s not even about communication, but being able to understand what the other person wants.
All these years since the 12-year-old Hadi Hariri sat down in front of a computer and started programming, are you still passionate about code?
How did you know about me starting to code at 12? I’ll be! Yes, my passion for programming remains the same. I still love this field, I love technology, and I love solving problems. Nothing has changed.
Many years ago, you and many others began your career in IT by sitting down in front of your first computer and inventing something using these, as we see it now, primitive machines. Today, it’s a massive industry with managers, HR, and marketologists. Has this transformation affected the atmosphere of the IT world? Are people still as passionate, as drawn to achievement, as they were when the industry had just formed?
We’ve realized that making a good product is only a part of the business. You need a good product, but you also need good marketing to make sure more people access it. If you’re trying to create something, you need to be surrounded by plenty of stuff. You need support and infrastructure.
Of course, it’s a lot more difficult now than back when there were only 20 companies, and having something innovative would make people pay attention. Nowadays there aren’t 20, not even 200, but 200,000 companies! That’s why there are more factors. But I don’t believe that this has an effect on the passion and how people see their jobs. I think that it’s still there, in the industry, where people still create new things.
There are companies that exploit people… like in the consumer goods industry, where companies open up factories in Indonesia or Taiwan and pay meager salaries to people. It’s a thing in IT, as well – in Spain, for instance, where people are paid 600-700 euro per month for 12-hour days. There are companies in Indonesia where staff are paid practically nothing to moderate and post content on social media. Many people are evil by their nature and they’ll exploit you if they can. It’s not specific to any industry.
Do you think it’s more difficult now to make one’s first steps in IT than it was when you first started?
It’s difficult to compare, as I’m not in their position right now. But I feel like when I was starting out, it was difficult to even imagine that one day you could work in a major company or gain recognition if you don’t have a university degree.
Today, if you want to become a developer – with all due respect to higher education and what you do here at ITMO University – you don’t really need a university degree. That’s the big difference. If you have an education – great, if you don’t… (shrugs). I don’t pay much attention to university degrees. What I’m interested in is what the person actually learned at university.
Another matter is that, in my opinion, our industry is experiencing a severe lack of fundamental education and fundamental knowledge. People know how to make apps and how to code, but they don’t get the basics, software engineering, algorithms, and all the things you learn at university. So I feel like university education is valuable. But it’s still easier to find a job now than it used to be. However, competition in the job market is higher too.
And what is your educational background?
Oh, I went to the University of Malaga in Spain. Five years as a software engineering student.
Today, you are the head of developer advocacy at your company. Can a young specialist, a recent graduate, given they have skills and experience, become a part of the developer advocacy team? How do they do that?
I think that in order to become a developer advocate, you simply need work experience in the industry. An advocate’s role is to help other developers, to teach them about programming, technologies, and tools. For that, it’s not enough to just know these tools. You need experience, to. So what you need to be part of the team is to acquire a few years of experience.
And I expressly do not recommend any student to try and make developer advocacy their first job. First, you should spend a few years writing code and consulting and then, maybe, you’ll be ready to become a developer advocate.