Interviews

Help and Inspire. Interview with Hadi Hariri, Team Lead in Developer Advocacy at JetBrains

Read this post in other languages:

Anastasia Kazakova, our Product Marketing Manager for C++ tools, talks with Hadi Hariri, Team Lead in Developer Advocacy at JetBrains, about teaching people, helping, and inspiring them.

Hadi_Hariri

Hadi Hariri, team lead in Developer Advocacy at JetBrains

Being a developer advocate, are you closer to the users or to the product teams you are working with?

I think we’re kind of in the middle, which I believe is an important place to be for a developer advocate. We are the bridge between the product teams and users.

Okay, then being in the middle, how do you advocate developers’ needs when thousands of developers worldwide demand a feature or a bugfix, but the product team does not consider this particular need as a top priority?

I think, like anything, when you need something, you should explain the importance and value of it for folks. And this is especially relevant at JetBrains, where we don’t really have a command and control structure.

When it comes to the people who are requesting features that the product team doesn’t necessarily agree with, I try very hard to understand the vision of the product team, i.e. why not. So, I don’t say, look, there are quite a few number of people voting for this or every time I go to a conference people are talking about this, we should do this. I try again to be in the middle, move myself from the user, try to understand why the product team sees this with a lower priority, and see whether they or I may be missing some angle.

And do you communicate that back to the community?

Generally, yes.

It’s easy to help advocate for a good and popular product. What if the product is far from perfect? How do you work with that?

Well, I mean one of the roles of a developer advocate is to actually try and understand the shortcomings of the product and give that feedback to the product teams. To understand why users are not happy, and see what they are missing, and communicate it back to the team. So I would say giving this information back to them is helpful in the longer term to make the product better.

It’s not always about trying to get the product to be adopted, which is great if it is, but it’s also about making a good product that people want. So part of the job will be to try and give this feedback.

In that context, do you feel a personal responsibility for the products you are working with? And in general, for the company’s success?

I feel like I have a role much like everyone else has, in contributing to the product and the company’s success. Each of us has different roles, different activities, that we play in this.

Describe in just a few words, what does it mean to be a dev advocate for you?

Teach people, help people. Inspire them.

Help and Inspire. Let’s start with the Help. What are the possible ways for a developer advocate to help a product grow?

First and foremost, I think that any developer advocate should strongly believe in the product they are representing. If they don’t, then it’s going to be a difficult and uncomfortable role. And if you feel the product can actually help other people, then it’s a matter of showing others how it helps accomplish better what they are trying to do.

What the developer advocate really needs to do is to understand the users, what they are trying to do, what they are trying to accomplish in their daily work. And then show how they can become better and how they can accomplish this in a better way, namely by means of using our products.

It’s not, as we always say, about selling specific features. It’s not about selling the product. It’s about enabling the user.

You said it’s important to believe in the product you advocate for. How you can make a developer advocate believe in some particular product? Or do you only hire those who believe in some particular products?

I would say I generally hire people who believe in what we are doing. And I generally only hire people that use our products. By and far, with the exception of maybe one or two cases at most, that’s basically the rule of thumb I follow.

We hire people that generally are users of our products, advocate for our products, and believe in our products.

Okay. Coming to the second part – Inspire – how do you inspire people?

I have no idea (laughing). Sometimes people tell me that I’ve inspired them, but I wish I knew how. “Inspire” is a kind of an overloaded term. But I think one of my jobs, as I’ve always seen it when I’ve been giving talks or in many activities I do, is to make people think about things, make people sometimes re-evaluate the decisions that they’ve made, make people excited about wanting to learn more. So if you could encapsulate all of those under the word “Inspire”, then it kind of explains it. I’d say mostly it’s about encouraging people to take the next step, whatever that next step may be.

And how do you select the tasks you do? Do they come from the team, from the community, or from yourself?

It’s like product management, I would say. That’s the first time I’m saying it actually (laughing). If you think about it, when you look at product management, you have to listen to a number of channels. You have your own inspiration of ideas, then you look for user feedback, you look for gaps in the product, then you talk to the team members and to others actually using your product, trying to figure out what they are using and what they’re lacking, etc. There are different things you could take into account to decide what’s the next thing you should be working on and how to prioritize.

So for us it’s a little bit the same way. We work with the product teams; we try to keep track of what’s coming in the product and decide where we want to put focus. Listen on social media, listen to feedback, see where people are having issues – all of these different things contribute to our decisions about what we want to do next.

How long have you been with the company now? What were some of the biggest changes you’ve experienced?

9.5 years, so turning 10 this year. We are nearly 1,200 strong now. When I joined, there were only around 140-150 people. I could kind of lie here and answer the biggest change is physical growth, but to be honest with you, I don’t know if that’s really the case, because I’ve always worked remotely. When I go to the office, I don’t know if someone has been there for a year, or for 7 years, unless I have some strong or daily relationships with them.

But some things have definitely has evolved during these years. We’ve put in place certain processes that generally weren’t around when the company was smaller. But these are necessary processes that need to be put in place because as the company grows, it’s no longer about everyone doing everything. There needs to be some kind of process so that people can figure out whom to go to or what to do. This is what I feel has mostly changed. And to be clear, by processes I don’t mean bureaucracy. We’re quite good at not having that at JetBrains!

You mentioned you work remotely. I guess most developer advocates at JetBrains are remote. What are the pros and cons of that?

I spent 20 years of my life working remotely. So if you ask me if there are any cons of being remote, I would say ‘no’.

I believe there are certain benefits of working in an office, like you have really awesome meeting rooms and nice canteens! (laughing). But beyond that, I don’t think there are many disadvantages of being remote. Especially in the role of the developer advocate, where essentially a lot of your time you are on the road.

I know many people say that the communication is way more fluent and relationships are better – all of these things when you are co-hosted or when you are working in the same office. And sure, it may be. But I don’t think being a remote should be an excuse for that not to happen. I have relationships with a lot of different people at JetBrains. I go out of my way to try and establish relationships with people, and I think it’s important to have these relationships even though you are remote. And it’s harder to establish those because you are remote and you don’t run into the person over and over again in the canteen and one day spark up a conversation.

So you’d like to say it’s a ‘con’ or a disadvantage of being remote, then yes. But how often does that happen when you reach a scale of 1000, 2000, 3000 people? At the end of the day, you’ll be working with 50-100 people you are mostly close to. You can’t scale, you can’t go and establish a relationship with every single person in the company.

One of the disadvantages of being remote is that it’s a little bit harder to establish relationship, but once you do it, I don’t think there is a major disadvantage over working at the same office.

Look at us now at JetBrains. We’ve got a whole bunch of people in Saint Petersburg, Munich, Prague, Boston, New Jersey, and in many other locations around the world, remote people, etc. Essentially, we are all remote in some way.

Right. But you have your full team working remotely. Do you feel it’s hard leading a fully remote team?

I really dislike the term lead, much like leadership. I often feel it’s pompous. The topic of leading a team is quite extensive and we could chat for hours, but I think focusing on your question which is that of being remote, I think what’s very important is to foster relationships and have people communicate within the team as well as with other teams quite extensively. So I place quite a bit of emphasis on this and try and always do video conferencing and not just voice.

I strongly believe in establishing relationships as a good step towards leading/managing or whatever we want to call it, which some managers may find challenging being remote. Beyond that I don’t think it’s much different.

Seems you have all these personal communications going online. What kind of personality is required for that? Can everyone do it?

I don’t think it’s all online, but being remote, a lot of the communication obviously does happen virtually. I’m not the person to judge whether everyone can or can’t do it. Each knows their own capability, but I believe that all folks can – for some it will be easier, and for others more challenging.

In terms of personality, when it comes to Developer Advocacy, it’s a given fact that it involves a lot of communication, both on a one-to-one basis and to a crowd of people – be this while giving a talk, chatting with folks at a conference, or speaking to customers. You need someone who is comfortable doing this. Someone who doesn’t find communication challenging or tries to shy away from it. Someone who is excited to engage with people. If we want to call that an extrovert, then so be it, although I don’t like labels.

How do you look for such people for your team? What are your general criteria?

I talk to them during the interview. I ask them certain questions – a lot of which are non-technical. The technical or competence aspects, or how they speak in public, or how they write, or how they express themselves in writing – all of those are the tasks I can evaluate, or look at their CV to see their background or look at some of their work they may have done. But what I try and talk about in an interview are other things. If we assume there are 100 questions in an interview (there aren’t really, but let’s assume), 70 of them will be non-technical.

We chat about life. How do they see the community, things happening in the community. What is their position on this. What do they think about diversity. How would they interact with someone who is heavily criticizing them or the product/company they represent. How would they interact with someone who says the tool they are selling is absolute crap. How would they interact if they felt our tool was bad in some areas, would they openly express that. How would they do that. Would they first go and talk to the product teams. Would they admit in public that our tool maybe isn’t good. These are the types of questions I ask to understand what type of person I hopefully will be working with.

Do you expect specific answers, or do you just listen to the candidate?

There is always the bias of expecting certain types of answers. But I think that a lot of times, I can learn from the person. It’s funny, you know, because recently when we were having the JetBrains night in Moscow, and they asked me, “What is the one question you ask in an interview?”. And the one question I always ask in an interview is, “We have a tool covering some technology. And you strongly believe that this technology is not a good solution. If they were to ask you, would you openly share your opinion saying I don’t like this technology for these reasons? Despite having a tool to cover it.”

To give you an example, WebStorm has support for AngularJS. I don’t generally feel AngularJS is a great solution, based on my own experiences with it. If someone asks for my opinion, I would express it. 90% of the people responding to that question said, “No, I would not express my opinion openly.” And that makes me wonder if I’m doing it wrong at times (laughing)

But jokes aside, I still firmly believe that the one thing that is important for a developer advocate is to be honest and to have integrity. You can’t say, “I strongly dislike AngularJS (or whatever technology) for X, Y, and Z” and give valid reasons that are not just feelings, but then, when someone asks you, “Do you like AngularJS?”, say, “Yes, absolutely, it’s a great technology” because we have great support for it in our product. This doesn’t resonate with me because I don’t believe this is being honest. So being honest is fundamental! In everything. For me, it’s one of the most important things.

But quite often people blame developer advocates (not in the case of JetBrains, but in general) for not being completely honest. They claim that an advocate merely pushes a particular technology or tool on the market, as part of their job.

Yes. And that’s the difference between a good developer advocate and bad developer advocate, I’d say. Many companies put their developer advocates in a position where they have to push the product, they have to promote it to the market no matter what they personally think of it, or whether it will help someone. We fortunately do not take that approach at JetBrains. First and foremost, developer advocacy at JetBrains doesn’t fall under any other department. It doesn’t fall under marketing, it doesn’t fall under sales. It is its own standalone department. And it’s very much aligned with education. It’s about educating developers in a variety of aspects.

If you look at the team, a lot of talks that we give aren’t even related to our products directly. And in fact, it’s even more challenging for us, because you can take for example some cloud provider (there is a bunch of them now in the world), and they are covering a whole bunch of aspects of how to deploy to cloud, how to work with cloud, and they are technically selling the cloud. And yet for us, as developer advocates for JetBrains, it’s very hard to go and say “Let me show you tips & tricks around GoLand”. Now it’s getting a little bit easier, especially for IntelliJ IDEA. But generally, we get pushback that it’s “marketing”. And sadly, it really isn’t. It’s truly about showing folks how to get the best out of the product.

But going back to the point, many topics we talk at the conferences are related to software development in general. It’s about how to do Spring development, or how to do security with ASP.NET, or how to do any other things. We are not even directly selling a product. With a few exceptions of course, such as Kotlin. But then again, Kotlin is free (laughing)

Is it your solution for how to make people believe you are honest?

I don’t think it’s about making people believe I’m honest. It’s the actions you take in your life that define your honesty and integrity. Not what type of talk you give at a conference.

Much like I mentioned before when we were talking about hiring – you need people to believe in what they’re doing. We’ve always encouraged folks to first and foremost think about the user, not the product. If they believe a tool we have isn’t the right fit for a customer, they should clearly say this. This has happened to me numerous times when people have come to me and said they’re in some particular situation using Java or Scala or some other language and wondering whether they should convert to Kotlin. I try and understand their issues and many times I’ve suggested that they shouldn’t. In their particular case it wouldn’t make sense.

First and foremost it’s understanding that what you’re doing is helping people become better.

Talking about efficiency, you probably need to figure out how to measure that.

Yes. And that is an ongoing challenge for several years now. I still haven’t figured it out completely. Making some progress, but it’s still not entirely there (laughing).

Any practical ways of measuring what you’ve learned?

If only I knew! It’s extremely difficult. We are trying to gather some data, to find if there is any kind of correlation between some of the activities we do. Certain things are easier, other things are not. For example, we put a system in place to see, for the content we create, how long it’s watched and what percentage is read/watched. For Kotlin, we moved from tutorials to labs. We call them hands-on labs. And now we can track the percentage of labs’ completion. So there are a few ways. And again, it’s not about justifying, it’s about trying and finding ways to make things more efficient. Because it may be that we are spending a lot of time and effort in an area that doesn’t make sense. And you can’t always rely on anecdotal feedback.

In my experience, many companies come to me at conferences and ask how we at JetBrains measure conferences, for example.

Yeah, exactly. Some large companies put in place metrics for the sake of covering their backs. There are many companies where I have friends who are developer advocates and they do have to do extensive reporting, because their managers have to justify their work to their superiors and so on and so forth. And they put in silly metrics. They say, I’m going to put the metrics that I can make sure I’ll reach. And they drive towards these metrics. We do not have to do that here. But I still think it’s important for us to try and figure out if what we are doing is efficient or how we can improve it.

To give an example, a number of times I have considered discontinuing Talking Kotlin podcast (http://talkingkotlin.com/). I wonder whether I should actually continue to do it. It doesn’t take up a lot of my time, maybe 5 hours total per month. But I hardly get any feedback on it. I can measure the number of listens, but what does this number tell you at the end of the day? How many of them adopted Kotlin because of it? Or should we focus on reach exclusively? It depends on what we are trying to measure. If I created a podcast which just 100 people listen to, but it so happened that one of those 100 was from a company that is very large and as a result that person looked into Kotlin and shared with others and that company ended up adopting Kotlin, and it has become a major success story… then high numbers in reach is irrelevant.

Why do I continue Talking Kotlin? Well, because for now I still enjoy it, and because I have people come up to me at conferences and tell me they enjoy it, that they’ve adopted Kotlin because of it. And that inspires me to continue. But this is once again anecdotal feedback. If you look at the Twitter handle on the other hand or the comments from the podcast, there isn’t much there. Makes me wonder at times if it’s just people being polite in person :)

Sounds like there is no way to measure it.

It depends on what you are trying to measure. But you can also fall into the trap of saying, “Well, since I can’t measure it, I’ll continue to do it because I *think* it’s good”. And then you completely lose sight of questioning whether things actually bring value. I’m not entirely sure if everything that I’d like to measure is possible, but I believe it’s important to continuously challenge oneself, to improve, and that’s something quite difficult to do if you don’t have anything to measure yourself by.

Back to communications. External and internal communications seem to be the most valuable and important part of your job. And you always help people inside the company with that. How did you learn it yourself?

I don’t know how I learned it. I guess just doing it over the years. I started working as a software developer working for a consultancy company, where we did custom software. So very early on, I had to learn how to deal with customers, how to talk to them and how to understand them. Then I moved on and worked several years for product (tooling) companies. But I also ran my own business, which forced me again to learn to talk to people using different vocabulary (you don’t talk to a developer the same way you talk to a business person). So I think it’s just years and years of interacting with customers and other people.

There are also a couple of books that helped me. One is “How to Win Friends and Influence People” (by Dale Carnegie). I came across it very early in my career when I was arrogant and obnoxious. So I learned that’s not the way you accomplish things in life.

But in general, for me communication is the thing I’m continuously learning. Learning it from my mistakes and watching other people make mistakes. So I’m still on a journey to better communication.

Thank you, Hadi! And good luck in your journey!