Ben Lesh is a senior UI engineer at Netflix, where he works on projects that use reactive programming in JavaScript to manage massive amounts of data. Ben talks with me about a variety of topics, focusing on reactive programming and data stream processing. Ben also gives his advice to you, whether you are a young developer or well into your career. Make sure you Tweet at Ben at https://twitter.com/benlesh and thank him for coming on the show!
Ben Lesh is a senior UI engineer at Netflix, where he works on projects that use reactive programming in JavaScript to manage massive amounts of data. Ben talks with me about a variety of topics, focusing on reactive programming and data stream processing. Ben also gives his advice to you, whether you are a young developer or well into your career. Make sure you Tweet at Ben at https://twitter.com/benlesh and thank him for coming on the show!
Links:
Hey everyone and welcome to Developer Tea. My name is Jonathan Cottrell and today I have the pleasure of interviewing Ben Lesch. Ben is a senior UI engineer at Netflix. At Netflix, Ben is actually working on a lot of reactive programming, specifically he's working on front-end JavaScript reactive programming. And that's exactly what we talk about in this interview. It's a two-part interview. Make sure you check out the second part and make sure you follow Ben on Twitter. His Twitter handle is at Ben Lesch, B-E-N-L-E-S-H. And then tweet at him and say thanks for being on at Developer Tea. If you send him a bunch of tweets, I will appreciate it and so will he. Now let's get to the interview with Ben Lesch. Ben, welcome to the show. Thank you so much for being here. Thank you for inviting me. I'm excited to talk to you because I watched your presentation at NGC. I guess more accurately, I listened to it. And you and I were talking before the show started and I was just, I was impressed by, first of all, your stage presence as another person who does like speaking for people. That's not an easy thing to do. You're right. You're right. It wasn't easy for me at the time. It's just a matter of, I guess, preparing ahead of time and practicing and, you know, taking a deep breath every now and then when you're looking out at that. Sure. And what's interesting to me, though, is that like of all types of people, you work at a, you know, a company people might would have heard of by now. It's a little startup that does these videos. Can you tell me about what you do? Sure, sure. I'm a senior UI engineer at Netflix on the Edge Tools and Insights team. So what I work on there is a real-time streaming dashboard that's all browser-based. And I work on a lot of the events that happen in Netflix Cloud and on their devices. So you can imagine everybody's movie starts or, you know, all the various services that Netflix runs and, you know, when they spin up or, you know, get torn down or all of the latency vectors and that sort of thing. So there's a lot of data that we cram into a real-time screen. That's what I work on. Yeah, I bet. I bet there's a lot of data. I can only imagine how many different types of services that you're having to integrate with on a daily basis. So right now, what I do is we hit a back-end server and that back-end server goes through a collection of servers called Mantis. It's a collection of services. And what they do is they actually operate in tiers to step all of those events down and aggregate them into something. So we have a lot of data that we can consume and it just flows it out to us over a web socket. Interesting. So that kind of helps unify all of the data coming in, I'm assuming. Right, right, right. Yeah, it's not something that I would want to do by connecting to multiple services directly from the browser. Oh, yeah. We do some of that. We do some of that, but most of it goes through a single back-end service because it would just be way too much data. Too much to try to coordinate all that in a single thread and keep my code base small. I bet. I can only imagine. So when you say coordinate all that in single thread, you're referring to the JavaScript environment, right? Right. That's right. And most of what you're doing is front-end JavaScript work, essentially. All of it, yeah. Okay. And are you guys, so I know that you spoke at ng-conf, but you mentioned that you worked with Ember. Do you have any particular tools that you kind of stay within, or do you keep yourself pretty open in terms of what tool to use on a given thing? Well, I'm very open. So when I was hired at Netflix, I was actually hired for my Angular expertise. And prior to me starting there, they had contracted Eric Brin, who's an Ember core team member, and gotten the project started in Ember. And they were like, hey, are you willing to work in Ember? Of course. I'm always willing to try new things. I'm always willing to learn new things. That's honestly the best part of my job. So yeah, absolutely. I'm always open to new tools. But for this particular project, we've got a lot of momentum in Ember, so I don't see it switching gears anytime soon. Sure. That makes sense. Yeah. And it seems like, and you were mentioning in your, at ng-conf, the culture at Netflix is a good culture. I don't want to blanket statement that too big, because it's going to sound kind of buzzwordy, but explain to me kind of, okay, so when I think of good culture, I think of enabling learning, for example, and enabling exploration and being able to solve problems in new and creative ways. What do you think about Netflix, the culture at Netflix? Can you just speak a little bit to kind of how you guys work internally? Well, I mean, enabling is probably the best way. They have this, it's a culture of trust. So they trust that I'm there to make good decisions and that I know what I'm doing. So really, the supervisors I've had at Netflix have been very much a part of helping guide me through the decision-making process, but most importantly, kind of giving me what I need. And then, you know, they kind of get out of your way. They let you do, they let you make the decisions you feel you need to make. And, you know, if you feel you need to use some newer technology or, you know, if you, if you have a demonstrable good, new or good way to, to try to do something, they're very open to it. So, but it's, it's all about, you know, me being responsible for my own output, my own results. Sure. Yeah. Which, which I believe is, is really essential to, uh, to being able to, to work in an environment where, where you're able to learn, right? Because, uh, we all know as developers that things move fast. And you mentioned one, one of the funny things you said at ng-conf was, uh, that if you have a slow JavaScript app, you wait a year and it's two times fast, faster, uh, because things progress so quickly, right? And that may not be true, uh, anymore because your specific point then was about CPU cores and, uh, the fact that they aren't going to be getting much faster. And, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and faster than they currently are. But the point was that things are constantly changing, uh, and you can expect them to change. You can plan on things to change. Uh, and for you to stay up with that, you have to be able to learn, you have to be able to explore. And, uh, I think it's, it's totally, um, it's, it's not even a, a option anymore to have a culture where learning is enabled. You it's, it's like a fundamental thing. You have to be able to have that culture, uh, or at least enable developers to learn in their off time, uh, whether that means giving them extra off time or free hours to explore things or whatever. Uh, I think that's completely essential. Um, especially now, especially for front end. Right. Yeah. I, I would, uh, I would say it's true. Now, one thing I would say though, is I would put the, I would put the onus on the individual for, you know, promoting their own learning. Uh, it's, it's good to have a company that allows you, uh, the freedom to do what you feel you need to do at work to, to get things done. However, I was just having this discussion with a friend of mine the other day about how, you know, he was saying, Oh, my, my particular job is boring. And I told him, I said, you know, I can't, I don't think I've ever had a development job where I didn't have some downtime. And, you know, I've never been at a job where there also wasn't some need, some, some hack that you've thought of that you could, you could put together to make life a little better for the company or, or for yourself at the company. And, you know, therein lies an opportunity to try something new. So, you know, a job is really about as boring as, as you make it now there, I'm, there are some places where you can't get away with that sort of thing, I'm sure. But, but, um, I think it's very important that, uh, people push themselves to do things that are hard. Um, a lot of the things that I've learned, uh, about Angular, uh, or about Ember. In fact, the way I was discovered by Netflix was, was because of this, um, Stack Overflow, which I think we're all familiar with. Uh, when I first started answering questions on Angular on Stack Overflow, it was to learn Angular because I didn't know anyone who knew it. There wasn't a lot of good documentation. So I would find questions that I did not know the answer to, and I would learn the answer and answer the question. So that was like a, a goal I had to, to try to learn Angular. And, and actually it was my Stack Overflow account that grabbed somebody's attention at Netflix, um, whenever I was recruited. So, uh, you know, it, it pay, it can pay dividends in other ways, I guess too. But, you know, I always, always say to people, if you're not learning something new every day, you're probably just forgetting something you used to know. Yeah. Yeah. It's, it's, it's very, very important to, uh, to push yourself to learn new things, at least in my opinion. That's, that's really awesome that you, that story about you using, uh, Stack Overflow to learn. We talk about learning about learning on, on this show, the kind of meta exploring how different people learn. Uh, and that I think is a really good one to hold onto, uh, for anybody who is trying to learn something, go and find out what other people are asking about it. Uh, if you don't have a project to work on, especially like we we've said on the show and Ben, you can maybe speak to this a little bit more. I've said multiple times that the best way to learn is to, is to actually work on something, work on a project, even if it's a pet project, uh, put a real problem in front of your face. But what you're saying is you were putting real problems in front of your face, just not your own. Right. Yeah. I mean, other people are going to find problems, you know, that end times faster than you were and is the number of people more than you. Right. So sure. There's, there's a lot of problems out there waiting, uh, for someone to solve them. I mean, realistically. So I wouldn't do it for the stack overflow points or whatever their scoring system is. Um, but, uh, it's definitely worth going in and, uh, I mean, even just checking out problems that have already been solved. Like if you're reading through them, you know, so sort by votes, go through and find something that looks kind of interesting and, uh, and check it out. I mean, there's some, there's some pretty cool stuff out there. Yeah. I actually learned, uh, quite a bit of Ruby, uh, well, Rails. Um, there was one guy who was looking to, it was something to do with a database query. I can't remember exactly what it was, but I did the same thing. I actually decided, you know what, as part of my learning exercise for the day, I'm going to sit down and figure out a really performant way of handling this query. And I wrote the thing out and it actually ended up becoming like the, the top answer for that question, uh, which is valuable in a lot of different ways. It's, but most importantly for me, I learned that day, you know, and so regardless, of that little number ticking up next to my name, uh, I actually was able to learn something that I could use in the future about databases. Sure. Sure. Speaking of databases, um, nice little segue there. You guys, you mentioned a really incredible, uh, statistic. I'm sure you mentioned you've, you kind of, this is kind of pounded in your head every day, but, uh, Netflix handles how much of the bandwidth in North America? You said like one third. It's more than a third. So it's 35%, I think is the last number I saw. That is an incredible amount of data. Yeah. Yeah. So that's, that's, uh, but that's the, the funny thing is that, um, you know, so that's just the, that's just the bandwidth we're using. Uh, we, I just, I had, we had a, uh, an internal meeting yesterday and somebody said something and I'm paraphrasing here, but it, it was something like, uh, Netflix is a metrics engine that happens to stream videos. Because we, we have a lot of, a lot of metrics, a lot of data on, um, just about anything you can imagine. Like any, anytime I think, Hey, do we have data like this? Like, you know, geo located who started watching house of cards, right? Like you can get that there's, they, they have, uh, a very, very, very wide variety of, of metrics that they're collecting, uh, to nearly insane degrees, I think. Yeah. I would imagine that, that there are a lot of insights that can be, I'm going back to my master's degree. I did a little bit of, uh, of work with recommendation engines, uh, in my master's degree studies. And that data is probably very rich. They can, I can imagine they can predict just about every show that I would watch, uh, at this point. Right. Right. And you're also looking at, you know, data from tens of millions of users across, you know, millions and millions of devices and all of the people rating movies and, uh, checking movies out and watching movies and, and people like you, and then on your friends list and so on and so forth. So I, I think that stuff's fascinating. I haven't had a chance to work with anybody from the departments that, that come up with those, with those suggestions, but, uh, yeah, they've, they've got a lot of data they can work with. So. Yeah. Yeah. So I, I'm going to show my business ignorance here, but, uh, there are, there are things like taking multiple variables into account to determine, you know, what is the most likely next step for somebody. So like you can imagine that there are probably, let's say 5,000 people who have almost exactly the same tastes as you. And if 4,990 of them have watched one show that you haven't watched, then it's very likely you're going to watch, or you're going to like that one, or you're going to watch it eventually. Uh, that, that kind of prediction I would imagine at Netflix is like par for court par for the course. Uh, possibly I'll have to be honest. Um, my knowledge of how they, how they come up with their recommendations is, uh, is as bad as good as any of your listeners. I don't, I don't work directly with, with that, uh, yeah, that particular piece. So. But you're on the opposite side. So you're working with internal teams and how many people are you working with? Using or, well, I, I guess how, what, who is using, uh, what you're building? Is that all of the internal teams or is it like just data analytics folks or how is, how is it being used? It's, uh, currently it's being used, uh, primarily by the people in the, the edge platform team. So these are the people that work on, uh, all of the, um, cloud services and, uh, you know, reliability and that, that sort of thing for, uh, the Netflix cloud. Ah, okay. Um, it also gets used by, uh, oddly customer service. So the, the top tier customer service will be able to use some of the tools that I work on that to be able to go in and say, you know, Hey, what's happening with this particular user's account. I can look and I can see that they've started streaming here and it went up to four ADP and then up to four 20 P and then up to 10 80 and so on and so forth. And, and get like different error events and that sort of thing off of, off of people's accounts to help them out when they call them. So, um, I, I, I, I, I call in with, with problems. That's really interesting. You know, what's interesting about this is that there is a, a whole section of Netflix that your job just doesn't even have to, like, you don't even have to be aware of those pieces, which makes it like you're, you're working on something entirely different and a totally different compartmentalized piece of the company. Uh, but still empowering like a, a completely separate, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, uh, part of the company, which I guess is, is, is normal. Uh, but I think a lot of people at tech companies, they think that they have to have, like, let's say for instance, I wanted to go and work at Netflix. I might would think that I have to have, you know, a lot of knowledge about, uh, I don't know, television shows or something, which just probably isn't the case, you know? Yeah. That's, I mean, not unless you were, you know, part of a team that was acquiring television content maybe then it would be important right right but what they generally what i've seen at netflix is they hire people that are experts at a given field and then you know you you have these these people that individually are you know an expert in front end or an expert in back end or an expert in uh you know maybe devops or or something like that and and uh uh they each kind of we're not siloed i mean we're all part of a team but we're each kind of working on our own piece of an overall system and uh with uh with all of the the freedom and responsibility they give everybody everybody there i mean people do dive into other aspects of that um but the really great thing is everybody that works there is truly an expert i'm always impressed every time i talk to anybody about anything uh about what they're working on uh at netflix or you know or the other thing is it's particularly impressive is, uh, Netflix hack day. So that's, uh, they do that once a quarter, I think. And everyone comes up with their own little Netflix related and hack projects that they do. A friend of mine, Jeff Bush came up with, uh, like a globe that visualized stream starts for, for people like real time. So you could see, uh, around the globe, like geo located, like who's watching what, and as it was happening. And of course it's flickering and it's amazing. Very cool. Another team made a, uh, uh, Nintendo and NES cartridge that played Netflix. I guess I know I haven't seen this, but my, my, what I was told, this was actually going on during ng comp. What I was told is it actually played like an eight bit, you know, blocky version of the video too. That's fantastic. But yeah, I mean, there's, there's some really, really smart people that work there and everybody that works there is just tremendous. So very, very great place to, to be, to meet smart and interesting people. So listeners, you might be detecting, uh, that work, that we are kind of obviously being positive about Netflix. I just want to make a disclaimer. Netflix is in no way giving developer team money right now. Uh, this is entirely a nap, just a conversation between me and Ben, but I know that Netflix is hiring and I I'm relatively certain that there are people listening to this show, uh, who Netflix could be, who Netflix could be the next place that you work. Uh, Ben, can you tell me what they need to do if they're interested in that kind of thing? Uh, yeah, you would go to jobs.netflix.com and I would recommend looking at the, uh, the slide deck there. Um, that what it, it talks about Netflix culture and I have to say every time I say culture, uh, and I, I know I said this is ng comp too, uh, or I hear someone say, Oh, our culture is great. I just think, Oh, that's, that's bold. That's just, you know, it's like a, it's like a company tagline, right? But it really, it really isn't bull. I've, I've been there for a year now and, um, it's, I mean, it's, it's lived up to whatever hype they gave it before I started. So it's, it's been, it's been really great. It's been really great. Awesome. So go check out jobs.netflix.com. Uh, if you're interested in working with Ben, thank you so much for listening to this episode of developer T. With Ben Lesh, make sure you check out the second part of the interview with Ben. Uh, we will continue talking about reactive programming. We also talk a little bit about imposter syndrome and Ben's unique approach to handling, uh, imposter syndrome. Thanks so much for listening to developer T uh, without you, the show would be useless and meaningless. And so I, I really appreciate your time. Um, make sure you follow me on Twitter at developer T you can reach out to me there. And if you would like to support the show, go to developer t.com front slash donate. Uh, any kind of donation is a huge help. And I see every single person who donates to the show. Uh, it's a, it is a huge help, uh, to get those financial donations. Thank you so much for listening and until next time, enjoy your tea.