What does a long career as an individual contributor look like? The answer isn't always clear cut, especially if you're given the option of becoming a manager. Today, we'll talk to Matt Klein about how he approaches this in part 1 of our two part interview.
If you have questions about today's episode, want to start a conversation about today's topic or just want to let us know if you found this episode valuable I encourage you to join the conversation or start your own on our community platform Spectrum.chat/specfm/developer-tea
If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.
This is a daily challenge designed help you become more self-aware and be a better developer so you can have a positive impact on the people around you. Check it out and give it a try at https://www.teabreakchallenge.com/.
Sentry tells you about errors in your code before your customers have a chance to encounter them.
Not only do we tell you about them, we also give you all the details you’ll need to be able to fix them. You’ll see exactly how many users have been impacted by a bug, the stack trace, the commit that the error was released as part of, the engineer who wrote the line of code that is currently busted, and a lot more.
Transcript (Generated by OpenAI Whisper)
What does a long career as an individual contributor look like? And do you have to become a manager to grow as a developer? The answer isn't always clear cut. And today's guest is going to help us talk about that. Talk about the ambiguity of that answer, but also maybe a pathway to keep on writing code if that's exactly what makes you happy. Today we're talking with Matt Klein. He's an engineer at Lyft. And he is one of the main contributors to the Obeden source project OnVoy. My name is Jonathan Cutrell and you're listening to Developer Tea. I created this show to help driven developers find clarity, perspective, and purpose in their careers. And Matt has had quite a long career, doing a lot of the things that many of us would love to do. And I'm really excited to talk to Matt. Let's go ahead and jump into the interview with Matt Klein. Matt, welcome to the show. Thanks for having me. I appreciate you taking the time to talk with us today. Something caught my eye. I can't remember if it was on Medium or a tweet. I think it was a list of tweets where you were talking about being a kind of a lifelong individual contributor. And I'd love to talk about that with you. But first I want to ask you a question that I typically leave towards the end of the show. But I want to open with it today. And that is, what do you wish you could talk about more often? What do you wish people would ask you about more often? That's a great question. I think these days I spend most of my time talking about an open-source project called OnVoy. So most of the questions that I get around computer networking and those types of things. So I do obviously enjoy talking about that type of stuff. But yeah, I don't know, I think the question that I would love to get is I do actually enjoy talking about the subject of this podcast, just general chats about careers. But I also just like chatting about technology. So just what is interesting in technology and what would I like to build if I could do anything? Those types of questions don't actually come up very often. Well, let's start with that. Interesting one. What would you like to build if you had no restrictions, no restraints in the world that was just open to you? You know, there's a couple of things I've been tossing around for a long time. One of them is, I've always felt that with home-sprint-court situations that they're very mechanical in old school and I've always wanted to build a more cloud-oriented, sprinkler system. So a system that actually takes current weather and actually dynamically figures out how much water to actually put out. And then something that you could use from your phone and a whole bunch of other stuff, I think that's a pretty interesting thing. That would be something that I would use at home just because I think a lot of people that do these type of home irrigation systems are always fiddling with their control panel and looking outside and I feel like that could all be automated. So that's something that I think I would definitely like to work on. That's interesting. I was just thinking about the easy solution is to have a water sensor, right? But the water sensor doesn't know what later this afternoon is exactly. Exactly. It seems simple in the sense that like you said, you can have a water sensor but you actually want to combine the current conditions with what happened over the last week and what the forecast is for the next couple of days. That's obviously you don't want to underwater but you also don't want to overwater. So if the forecast is for a ton of rain tomorrow, you might defer watering obviously. So it's a pretty interesting problem. It is and I can even imagine taking and we're going to go off onto a long tangent here about water sprinkling system. But I can imagine taking local restrictions into account too. There's a lot of places, particularly I know for sure in California, but also even in states you wouldn't expect it like Alabama or Tennessee where I currently live, there's restrictions around when you can water. So it'd be interesting to see a system that kind of knows those restrictions so that you don't have to go and figure that out. Well there's that and then there's also depending on your climate location, you might want to water a night. It's obviously save water but obviously you can't be in a very damp environment because then things will actually rot. So there's all of these things that have to go into when you actually water. And I could see this thing also being useful for farming where I think there's a lot of manual, there's a lot of manual things that are done today. But I could see it's the general application of computer knowledge to irrigation. Very interesting. Well that's such a cool introduction I think to the way that you think first of all, seeing the world through kind of a builders, technological builders lens. But I'm also interested to know you've had a long career working for major start-ups that have scaled massively. So I'd love for you to kind of explain the way that you see that career, the shape of that career. How did it happen? Sure. Yeah, let me spend a couple minutes and give a general career overview. So I got a computer science degree in college and straight out college, I got a job at Microsoft. And at the time I was obviously straight out of college, I didn't really know anything about the industry. I was very happy to have been offered that job excited to move out to Seattle. And when I started my career at Microsoft, obviously even in the early 2000s, it was a very large company at that point. So there was tens of thousands of developers. And when I started at Microsoft, I first started working on phones. So this is actually Windows Mobile before there was iPhone. So this is quite some time ago. And that was a very interesting experience, just learning at that time how to ship embedded software and at that time that was software that was used by hundreds of thousands if not lots of people. And so just learning just about what it was like to ship software and obviously spending a lot of time debugging different types of very hard to find bugs and actually recall a particular instance of a bug where it was so hard to reproduce. And it could only be reproduced in a particular location that there was so much timing involved that it would not repro on a build with a locking enabled. So you had to actually take out all the log messages and add logs one at a time and then eventually go back and forth with the people who could actually see this issue. And it took weeks and weeks and weeks of actually going back and forth to actually solve this bug. But that's just an example of being effectively straight out of college and just sitting there and learning what it means to not just write software and a computer science class but actually what it means to actually ship software. So I spent a bunch of time working on phones there. From there I started working on a technology called HDDBD that was a disk format lost out to the Sony Blu-ray format. But I obviously learned a lot from that building embedded disk systems. And then from there I actually worked on the Windows NT kernel doing a kind of low level operating system stuff. So my early career at Microsoft was obviously working at a big company but it was also working mostly on operating systems and just generally low level systems. And I think actually I would, there's obviously lots of big differences which we'll go into from working at big companies, small companies, but I'm actually very happy that I started my career there. I think I learned a lot. I was exposed to very senior developers, I was exposed to engineering practices that really shaped who I am today. And I don't know that I would have seen that working at other companies potentially. So I think a lot of people tend to knock on Microsoft. But I'm actually thrilled that I started my career there. I think I learned a ton just about what it meant to actually ship software. So after about five years of Microsoft, I actually decided to quit and start my own company. So I went from this big company situation to a tiny, tiny little startup. That was a video delivery startup we were at for about a year and a half, built a video content delivery system that was my first experience with having servers in a co-lo and figuring out that entire situation. That startup failed after about a year and a half. But it was a big learning experience. We can talk about that more. And then after the startup, I actually worked for a government contractor for a year, a very different situation obviously, a very different type of work environment. I was building kind of low-level security software, which is very interesting. And then from there, I went to Amazon where I worked on EC2 for about three years. In EC2, I was working on networking, operating systems, hypervirus, and then after that, I went to Twitter for about three years where I built their front proxy, which is still actually used today. And then from Twitter, I've been at LIFT for the last over four years now, where I've primarily worked on an open-source system called OnVoy. So I think my career really for the last almost 20 years at this point has been mostly in low-level systems. So operating systems, hypervisors, distributed systems, networking. And for the last 10 years, it's really been online system. So online application networking, both at the cloud provider level, but then at the app level also. So hopefully that will give you just a very general high-level overview. Yeah, high-level overview of a low-level career, it sounds like. Really interesting, because I think a lot of people who are in a computer science program right now don't know what their future looks like. When you joined Microsoft, I'm sure that there was no way that you could predict what was getting ready to happen. Certainly not back in, I guess it was early 2000s. Before we had the explosion of mobile, I'm sure you could say, okay, well, we're likely to see computers expand into the mobile, a more mobile availability, but for you to be able to predict how broad reaching that would be would have been nearly impossible. Yeah, for sure. I mean, things have changed a lot. Even just from a technology perspective, when I think about, I think when I was in college, I had a cell phone, but I didn't really use it. It was a phone type situation. And then I think when I went to work at Microsoft, I was handed one of these newfangled smartphone things, and that was the first time that I had ever used one. And that just kind of shows you how far we've come. I think about it when you're caught up in the sweep of a career, but when I actually sit and think about what technology was like when I got out of college versus where we are now, it's a pretty incredible change. But yeah, I mean, when I went to Microsoft, I obviously had no experience. I mean, I had done some internships and I had done some professional programming, but I had no full time experience. And I really do believe that I think it's very hard for people to know what portions of computing are really going to speak to them over a long career. And some people, I think they found their careers on doing lots of different things, and that's totally fine. And some people, they certainly find things that they prefer, and then they tend to focus on those things. But I think when I went from kind of a broad purpose, computer science degree, and I went to work at Microsoft, I didn't really know. I mean, I knew obviously I liked some classes that I took in college more than others, and I didn't know what would really speak to me. And as it turns out, I've learned that I tend to enjoy working on more of the low level systems problems than the higher level application problems. That doesn't mean that those are harder problems. They're just different. But I think my mind tends to gravitate towards those types of problems. I think when I look back on my career, I have moved to lots of different jobs, but they've mostly been focusing on those types of technologies. Today's episode is sponsored by Century. If you are moving quickly with your code, and most startups are, most startups have to, then you're probably missing errors. This isn't because you have bad developers. In fact, the best developers have errors probably in their production code right now that they don't even know about. And there's ways to catch some of the errors that you have. We have a lot of approaches to catching errors in our code. Of course, we would imagine that tests are going to catch a lot of them, but not all of them. You can't predict how users are going to behave. You can't predict how different services around the world are going to behave. A lot of what you do with your code is trying to reduce the risk. And Century is going to provide you another way to reduce that risk. Century is going to let you know when those errors that have inevitably made it out into the wild into your production code, when those errors occur. So you get an alert in whatever platform that you choose to get an alert in, and you get a bunch of information how to address that error fundamentally is what you're interested in. You get notified with things like the commit that contains the code that is causing that error, right? And the stack trace, of course, and context variables, time and platform, all of these pieces of information that otherwise you'd be relying on users to send to you. Go and check it out. Head over to century.io to get started today. Thanks again, Century for sponsoring today's episode of Developer Tea. I'd love to ask you kind of a two-part question here. The first part is, how critical do you feel like your computer science degree? And that kind of formalized study has been in your career. And then secondly, if that wasn't the place that you learned the most, then where do you feel like your biggest learning experiences have been along the way? Yeah. So I am not going to be one of those people that's going to say that college is the best and everyone has to have a bachelor of science in comps. I actually don't think that's the case. If I'm really honest with myself, I don't think I got as much out of college as I probably could have. That's again, we're about to wildly get off topic in terms of whether I should have taken a year off between high school and college. Was I ready to actually buckle down and study? But to get back to your question, I think a computer science degree is an important thing in the sense that there's a bunch of base knowledge that sets a framework for understanding how things are done later. It's like computer science degrees are in technical degrees. They're learning fundamental theory. And I think that theory is important depending on where you end up within the industry. However, I don't actually think that one has to go to college to acquire the knowledge. I am a pretty firm believer that most of that knowledge can be acquired from books. And I think that there's some structure obviously from going to college and from getting that degree. But I'm definitely not one of those people that when I look at people's resumes, if they haven't gone to college, it's an immediate no hire that's totally not the case for me. I think that people can acquire that knowledge in lots of different ways. So I guess to answer your question, I don't really think actually that the comp side degree was super important. I think it was important in laying out the structure of what I probably needed to learn for that base knowledge. But I consider a career in computing in this sense to be similar to what I think a career in say medicine or law or other specialties that require lots of knowledge, which is that I think if you talk to many doctors and many lawyers, I think most of them will say that they don't really use much of what they learned in medical school or in law school. And they learn typically, they learn on the job. And I actually think that that's very true for computing. It's just we have such a huge industry. There's so many pieces of it. There's no possible way that anyone can understand even a fraction of it. So having some of that base of knowledge from a computer science degree is obviously important to help set context, but I actually think that most of what we learn to be professional, programmers and professional engineers mostly comes from doing it. And actually, I actually think that we as an industry, there's a big apprentice component of it in the sense that we learn from senior engineers. We tend to emulate senior engineers like from a technology perspective or even just from a social interaction perspective. So I actually think that the first few jobs that people have out of college are much more important actually than what they learn in college or in a boot camp or something like that for how they are going to approach engineering. And that actually comes back to what I was saying before about why I'm happy that I worked at Microsoft as my first job. And I think this is a good segue into that. The reason to be very specific about it, that I am happy that my first job was at Microsoft is I learned a level of engineering rigor. I learned what it meant to write clean code, to have tests, to actually think about solving bugs, to learn what it meant to ship software. I learned that in a way that I do not think I would have learned if I worked at either a smaller company that was faster moving or a company with a different engineering culture. And I think actually that my years at Microsoft, very early in my career, it gave me a mindset for how to approach engineering or even though since then I've worked at companies big and small. I think that mindset has really helped me become the engineer that I am today. So I guess to really loop back to your question is I think that what you learn from an educational perspective, it's important. I don't know that you have to get it from college. I think you can get it from books and from other things. But I actually think that they are on the job experience and particularly the first few jobs that you have in the years after you graduate from your education. I think that's super important. I agree. I wonder, do you have, and this is kind of the tactical question coming out of that, do you have a list of books that were really critical to your learning along the way? And this is kind of like the, if you had to tell a developer who is saying, you know what, I don't really want to do the college thing, but I do want those fundamentals. I do want to be able to draw on that. What list of books is it long? How much does that curriculum look like to you? I will be honest. I don't, you know, I'm actually not a big book person. At least, sorry, I'm not a big computing book person. So I couldn't give you a particular list of books. I think that the general curriculum that is taught in a computer science degree, I think is important. And again, these are things like a basic theory of algorithms. Like, you know, even though we make fun of, you know, computing interviews, it is important that one understands at a high level what a hash map is or like what a binary tree is, right? You know, these are important concepts. So I think, you know, like a basic, basic understanding of algorithms, a basic understanding of networking theory, operating systems. You know, the one cool thing now is that lots of, not lots, but many high profile universities, they effectively open source all of their courses. Like I think you can go to MIT's computer science website and you can take all the classes. I mean, you can watch the lectures. They're all, they're actually video taped. So you know, I would actually recommend to, you know, people who don't necessarily have the resources or want to go to college is that most of the material is effectively available, right? You can watch the lectures. You can, you know, get the books that they're using. You can read them. So I think, you know, that's the way that I would approach it. The other thing that I would say is that I think the rise of open source has done wonders to allow people to learn really incredible things without having to have access to proprietary software. So, you know, the volume of open source software of extremely high quality that is available now is just tremendous, right? I mean, like, do you want to know how a cutting edge operating system works? You know, you can, you can find one, right? You can just sit there and look at all of the, all the Linux source code. And you know, if you had looked at Linux in, you know, the late 90s or even early 2000s, it was still more hobby-ish back then, right? Like it didn't, it didn't necessarily compare to something like Windows NT or the other proprietary Unix operating systems, but that's not the case anymore. I mean, Linux is a cutting edge operating system that tons of people work on and you can just look at the source code. Same for databases, same for network proxy, same for, you know, same for web frameworks. So I think that just the volume of software that is available and software that's written by, you know, highly qualified professionals, it's a great way to learn both the practice because again, like a computer science degree is going to be more the theory. It's not going to teach you really how to write software in a professional setting, but I think the combination of, you know, what's available from a theory perspective, both from books and courses and videos and those kinds of things, and then the practice that you can find from open source software, I think the two of those, there's just, I mean, there's more out there that people can learn from than they can possibly consume. I totally agree. I mean, there's way too much information, right? Like too much information for us to be able to actually, you know, efficiently digest even, not even, we aren't even talking about fractions, we're talking about, you know, hundreds of percent of what we could possibly, thousands of percent of what we could ever possibly even consume, much less digest. And so I totally agree that there's so much out there. I mean, you know, just going to, like you said, MIT's website, I immediately on a first Google search, I had an entire algorithm class available from MIT, the top of the top in this field, arguably, I'm sure I'll get an email or two about that one. So this is, you know, it's really critical that we, you know, that we recognize that these kinds of base level skill, at least the information needed, the actual, you know, education is available. Now, the question, I guess the next natural question is, you know, how much does this matter in terms of credentials? Number one, and number two, I think a lot of people may have the illusion. I know that this is a very common illusion that once you learn all of these things, then now suddenly you're qualified, that learning is the way that you get a job. I'd look for you to talk about how much that has been true or not true in your career. You know, so look, I mean, I can talk about it two different ways. So I think, you know, I am a very privileged person, right? I mean, I went to a top college, I got a bachelor of science in comms-eye. So for me to sit here and say that, you know, my degree has been worthless, I mean, that would be a stupid statement, right? So I'm not going to say that getting a degree is pointless. I do think that we still live in a world in which, you know, when people apply for jobs, if people don't see that there's a degree, you know, that that job might be close. The other way that I would answer the question, though, is I can speak only to how I personally look at candidates when I'm actually interviewing. And when I'm looking at candidates, I barely even look at people's resumes in the sense that I don't look if they went to college. I might skim through their last couple of jobs or, you know, something along those lines. And I think that's, I think the crux of one of about to say is that I think in this industry, once you have even one job and then you move from there to a second job, I think people care much more about experience than actual background credentials. So you know, if you have a bachelor of science or a master's or a PhD, I just don't think those things end up mattering that much once you start moving from job to job and people are going to be looking much more at what your experience actually is. So I think the interviews become much more experiential than based on, oh, you know, do you have a particular degree from a particular institution? So I think it's true that, you know, these days, I'm guessing as a college hire, it might be easier to get your foot into doors, you know, with a college degree, depending on the type of company that you want to work for. But I actually still think it's possible to do very well in this industry without going to college. And I think the way that that looks like these days is, yeah, it's true. You know, it might be difficult to say grab a job at a company like Google who tends to care deeply about these types of degrees as your first job, but, you know, if you start moving between jobs and you build more and more experience and build more and more, more more relative skills, I think that after a few years, very people look back beyond that and I think they look much more at what your recent experiences. The same kind of thing goes for having, you know, for example, your GPA on your resume. I think a lot of people, they think that, you know, every detail needs to be on the resume and needs to be a whole history of your life. And as you're pointing out that, that certainly isn't the case. Yeah. But, you know, I think, I think so, this has been a really, I think, enlightening hopefully for a lot of people who are looking for jobs and hopefully gives them a little bit of hope. You know, I both have degrees and I believe we both also have post degrees as well. And so this idea that, you know, these degrees don't matter at all, I totally agree. I'm very thankful that I have what I have. I think it's been really critical for my career, although I didn't go for a formalized computer science degree, the degree that I did get has certainly helped me, you know, both in terms of being able to say I have it, right, which is its own thing, but also the things that I learned. There were absolutely critical learning moments that I experienced during the degree program. So I couldn't agree more with that summation. Yeah. I mean, I generally counsel people to go to college if they can. And again, like it's, you know, there are obviously lots of details that have to be sorted out in terms of, in terms of financing and like various other things, but I think if it's within one's capability to get that degree, I think it, I think it does help. I don't think it's absolutely required. I guess, I guess that's how I would phrase it. Thanks so much for listening to today's episode with Matt Klein. This is part one of two parts. So I encourage you to subscribe if you enjoyed this episode. You don't want to miss out on the second part. You can subscribe and whatever podcasting app you use today. Thank you so much for listening. Thank you again to Century for sponsoring today's episode with Century. You can catch errors before your users do head over to century.io to get started today. Thanks so much for listening and until next time, enjoy your tea.