The Engineering People Show, Episode 01: Hadi Hariri
“… when everyone is remote, it is much easier to have a remote team than when you have maybe one or two people remote and everyone else in a location, because the mindset often is different for those people that are in the office versus those that are remote.”
This week on Engineering People:
Hadi Hariri is an author, teacher and a speaker at industry events around the world for more than 15 years. He hosts the Talking Kotlin podcast, leads the Developer Advocacy team at JetBrains and spends as much time as he can writing code.
(Original episode released on February 22, 2018)
Guest Website: hadihariri.com
Guest Twitter: @hhariri
Guest GitHub: hhariri
Guest LinkedIn: hadi-hariri
Transcript, edited for clarity:
Ryan Carson: Welcome to Engineering People, the show where we interview the world’s leading engineering managers so we can learn from their experience and ideas. I’m Ryan Carson, the founder of Treehouse, and I’m your host.
Today, I’m joined by Hadi Hariri from JetBrains. Thanks for joining us.
Hadi Hariri: Thanks for having me.
Ryan Carson: We’re going to start off really simple and quick for those folks who haven’t met you yet. What is your job title?
Hadi Hariri: I’m like the team lead for developer advocacy at JetBrains.
Ryan Carson: What does JetBrains do?
Hadi Hariri: We make developer tools. We make tools for IntelliJ IDEA, which is our Java-based IDE, and ReSharper, which is our .NET stuff. Of course, we’re also the creators of the Kotlin programming language.
Ryan Carson: What are your primary daily responsibilities?
Hadi Hariri: For the team lead aspect, it’s making sure that things are working, although I’ve got mostly an autonomous team. Then just working on the stuff myself — whether it’s content, whether it’s preparing talks, some internal projects that I’m working on and stuff like that. So it’s varied, a bunch of different things, yeah.
Ryan Carson: How many people do you currently manage?
Hadi Hariri: Roughly, directly around 10 and indirectly a couple more.
Ryan Carson: What’s the largest number of folks you’ve managed underneath your whole organization?
Hadi Hariri: In a previous job, I was managing around 20 people.
Ryan Carson: What project are you most proud of?
Hadi Hariri: Given the type of work we do, which is contributing to multiple projects, it would be hard to say which project I would be most proud of. I guess that one of the things that I was most involved in recently was KotlinConf, which I was proud of and happy with how it went. But if you look at the kind of work that we do, although we’re part of the developer advocacy team, each of us, in some sense, is also part of different teams for our main products. Like I may focus on IntelliJ and Kotlin, and someone else might focus on TeamCity.
Seeing Kotlin progress over time and become popular and people adopt it — I think that has also made me proud a little bit of whatever I’ve contributed to that, of course.
Ryan Carson: Absolutely. KotlinConf is interesting, we should double click on that. What is the main value of running a user conference? Try to help our listeners understand. Maybe they should think about doing something like that.
Hadi Hariri: As someone said at the conference, it feels like a celebration. This first KotlinConf felt like a culmination of six years of working on Kotlin, and then having the whole community — especially many of those people who were around from the very early on days — come together. We were 1,200 people for a first-time event selling out, it’s kind of unheard of. But it is about trying to bring the community together, improve knowledge of Kotlin, what’s going on in the community, have other people share their experiences. From JetBrains’ perspective, it’s trying to give that to the community, a place to share and meet and talk around Kotlin.
Best practices for a remote team
Ryan Carson: Is your team distributed itself right now?
Hadi Hariri: Yeah. Pretty much.
Ryan Carson: How do you deal with having a remote team? What kind of tips can you give engineering managers who deal with remote team members?
Hadi Hariri: Yeah. Most of my team is actually remote. We’re fortunate enough, because of the nature of our work, that we meet quite often. We meet probably at conferences because if two or three of us are going to a conference, we might coincide there. We try and have at least once, but now we’re trying to push that to two, onsite meetings in one of the offices per year.
I think one of the things that is really important for remote teams is that you keep a constant communication flow on a daily basis, whatever medium you want to use for that. Back in the old days, we used to use ICQ. Then, it was Skype, then it was whatever. Nowadays, it’s Slack. We have a channel for our team, which is, it’s kind of like a virtual water cooler. We just constantly are chatting there about different things. I think that that makes it easier. I also think that when everyone is remote, it is much easier to have a remote team than when you have maybe one or two people remote and everyone else in a location, because the mindset often is different for those people that are in the office versus those that are remote.
Ryan Carson: Right. If someone is forced to have some of the team remote, some of it local, do you have any tips on how to keep the team cohesive and gelling?
Hadi Hariri: Don’t forget about your remote teammates. Cardo conversations are fine, but there’s things that you always need to take into account that not everyone is present all the time. That’s something to consider. I think that that’s very important.
Ryan Carson: Do you use video calls at all for the team?
Hadi Hariri: Yes, we do. We moved away from our weekly stand-up to a bi-weekly stand-up, but we always do video conferencing. A lot of times when I talk to people at the company, whether it’s team members or other teams, I try as much as possible to have it face-to-face as opposed to just voice because it really helps read emotions. When you’re typing or just hearing people, a lot of times, the emotions don’t come across, and that leads to misunderstandings.
Ryan Carson: Yep, amen. Some of my team is remote, and we do video one-on-ones every week. It’s a world of difference than a call.
Finding, choosing and leading talent
Ryan Carson: How do you find great talent for your team?
Hadi Hariri: Being a remote team, we have a series of requirements: We really want people that are self-organized, people that have discipline to be able to work on their task, work on their things without needing to be micromanaged. We also look for people that are very good at communication. Especially on my team, which is developer advocacy, everyone is technical. Everyone is a developer. Everyone comes from a developer background. And we all still do development, but the ability to communicate is very important, and the ability to teach is very important. These are the skills that we look for when hiring new people.
Ryan Carson: How do you test for those behaviors?
Hadi Hariri: There is actually a test that we have, which is, for the developer advocacy perspective, it’s a very social test. It’s essentially asking questions of how you would approach different aspects. How would you talk to a customer that was upset? How do you react to certain things that are going on in the community? That gives more or less a good feel for what the type of character you’re talking to.
But then obviously, you say “Yeah, you’re going to be self-managing, you’re going to do this, and you’re going to do that” and the majority of people have never said, “Well, okay, I’m not very good.” Nobody I think is going to admit and say, “Oh, actually, I love being micromanaged,” right? So you kind of go on good faith, and then you just try it out. Then, three months, six months later, If it doesn’t work out, then you try and see where you can fix things. You just don’t say, “Well, you need to be micromanaged. Go away.” You try and work with the person and see how you can fix things before moving on. It’s very hard to determine in an interview whether it’s going to work in the long-term or not.
Ryan Carson: It seems almost impossible. How do you give feedback in a quick, timely manner so folks know how they’re doing, and can adjust, and ideally make things better instead of being surprised and then let go?
Hadi Hariri: I try and be quite direct. I try very hard to give constructive criticism: “This is what I feel is an issue, let’s talk about it, tell me if I’m mistaken, or is it something that I can do to help?” Then, “Do this, work together to try and improve things, and then do this a number of times. If neither of us see improvement or there’s no change, then it’s not working out.” But I do try and give enough, not notice so to speak, but enough steps to try and move to improving things.
The other aspect is there are a lot of times you might find a really good person that is not doing a great job for the role that you’ve given them, but that doesn’t mean that they might not be able to do a good job for a different role. So it’s always important to say, “This person has amazing qualities but is just not working out in this role. Is there anywhere else that they could fit in?” before saying it’s time to move on.
Ryan Carson: Which makes sense because it’s much more affordable to move someone sideways because you’ve already invested a ton of money in finding them, spinning them up, training them. They are starting to learn the tooling and the structure of the team. You want to keep them if you can.
Hadi Hariri: Yeah, and it’s nicer for them as well, right?
Ryan Carson: Right, absolutely. What frequency do you aim to give people feedback — whether it’s good feedback or bad feedback — daily, twice a day, weekly, monthly?
Hadi Hariri: In my specific team, we have one-on-ones every month to give feedback on how things are going — and not only how I feel they’re doing, but how they feel I’m doing. Am I giving enough feedback? Am I not? Where am I making mistakes?
Apart from that, every time you notice someone’s done a great job, why not say it? And then every time you notice that someone is maybe going off course, directly say, “Look, I think this is probably the wrong direction,” not wait for that one-on-one.
I’ve found that if you have this continuous conversation with people, those one-on-ones sometimes become like “Well, there’s nothing really to say because we’ve fixed things during this month, or you’ve done a great job this month.” It can become kind of short.
Retaining talent for 17 years
Ryan Carson: Once you’ve found that great talent, how do you retain that talent?
Hadi Hariri: I think this will probably sound, I want to say cliché, but it honestly is the truth. I think there’s two important things: trusting people and caring for people. This is a two-way relationship. If you join my team, and I trust you, and I give you the freedom to work, you need to earn that trust. It’s just a two-way thing, and keep that trust both ways.
Caring is caring for the person, not just caring for the quality of the work, but caring for the person. At the end of the day, I think if you care for people — you show that you care for people, you make sure that they’re happy, that they’re not overworked, that they’re not stressed, that if they have any personal issues, you’re there to help them within the limits that you can — if people enjoy the job they’re doing, they feel cared for, they feel trusted to do their best, they stay.
If you look at JetBrains, the first employee hired, 17 years ago, is still here. We have extremely, extremely low turnover. For me, it’s the longest job I’ve ever been at. This year, it’s coming up to eight years.
Ryan Carson: We actually just did company-wide training with something called Speed of Trust, which is a Franklin Covey concept, and I’m not being paid to say that. In fact, we had to pay them to train us. [laughter] But it was actually really interesting, and it was literally focusing on those things, that you cannot be effective at work if you don’t trust each other. We often, we don’t really value that as the hidden variable, which made sense. But then they actually broke it down into well, what is trust actually, because it’s kind of a big word that can mean a million things, but it’s based off of all these foundational principles. If you’re listening to this, I would really recommend checking out Speed of Trust. It’s probably a book. We just did a one-day training seminar on it, but it was helpful to me.
Hadi Hariri: I will definitely read up on that. If you don’t mind talking about books, one of the books that I read recently — which I was kind of surprised that many of the things that were said both myself and many people at JetBrains were already doing — it’s called Radical Candor, by Kim Scott, “Be a Kick-Ass Boss Without Losing Your Humanity.” It’s talking about this quadrant of you need to be candid with people. You don’t need to be offensive with people. It’s about keeping this balance, and it has a lot of great tips on how to do one-on-ones, and how to approach many different things that you face when you are managing teams.
One thing to transform your team
Ryan Carson: Last question. We only have three minutes, so I’ll let you go after this. What’s been one thing that has dramatically improved the effectiveness of your team?
Hadi Hariri: That would be a question probably best asked of the team [laughter], but I would probably say that I think probably first of all, their freedom to work, to really just trust them to set the goals and say, “This is what we’re trying to do. Go out and do it. If I can help, let me know.”
I think one of the things that has actually improved in a sense is when I’ve tried to push — not push more, but say “Look, I really am here to help,” because we’re very hands-off in terms of management. We don’t micromanage, but I feel that sometimes, people might feel like they can’t approach and ask about things. That shouldn’t be the case, and so I think that that’s one aspect. The other one, again, being a remote team, I think one of the things that we do is — this is more kind of like a specific technical thing, so to speak, or a process thing — we actually log the activities that we do as part of a stand up. We actually send it to Slack, and then Slack posts it to a page we have on Confluence automatically. It’s just a single line — you know, today I worked on this, or this week I’ve worked on that — but it helps us raise awareness of what each of us are doing, so everybody sees everybody. It’s like a standup, but it’s a weekly thing. That helps us to say, “Oh, you’re working on this, I have a similar idea. Let’s try and combine activities,” especially because of the nature of our work, because each of us are working with different product teams. I think that this has also helped in communicating better and being more effective.
Ryan Carson: I’ve seen the same thing at Treehouse. Actually, the more we know about the daily activities of others, it actually unblocks all sorts of things. We had something where I said I’m going to meet with somebody about this process that we want to improve, and then someone said, “Oh, I know a lot about that. Can I join the call?” We fixed that process in a day.
Hadi Hariri: Yeah. It’s that raising awareness. As a company becomes bigger, you’re always going to have maybe two or three people thinking about doing the same thing, and if there’s no awareness between them, you end up duplicating effort.
Ryan Carson: Right, you can’t fix it. Well, that’s all we have time for. Hadi, thank you so much for joining us. I respect what you’ve built and what you’ve done, so thank you for being on the show.
Hadi Hariri: Thank you.