In this episode, we welcome Lars Bergstrom, currently Director of Engineering at Google following an impressive career in companies like Mozilla and Microsoft. Lars is navigating us through his career path, sharing his experience and offering useful advice and inspiration to software developers as they plan their coding journey.
Hi, Lars, how’s it going?
Hey, it’s going great. How are you?
I’m pretty good. So, I’m really excited to have you here. We just started this podcast and having you as one of the few initial guests is really amazing. I can feel right away. So, thank you for doing this. Tell me about what things you have been up to and a small introduction about you and what you have been currently doing.
Thanks for the opportunity to be the first speaker here. I’ve been working with the company for a really, really long time. And I’m excited to see you getting into podcasts and the rest. So, My name is Lars, I’m Director of Engineering here at Android and I work on basically supporting the teams that build the compilers, the tools, and the runtimes that you use to both build the Android operating system, as well as build applications that target Android. So, I’ve been here for a little more than two years now, officially, and it’s been a great new gig to get started on.
Oh, that’s amazing. So, I’ve been just going through your LinkedIn, and I was amazed to see that you have worked with some amazing organizations and companies and amazing projects. So, we are definitely going to be touching upon that in a bit. First I wanted to know that currently, you’re working for Google, but you have spent many years in Mozilla.
So, what would you say would be the different working style for completely open source organizations like Mozilla versus Google, which does have a fair bit of open source such in every project that they have been doing. But still, it’s a company where I am sure there must be some differences. So, could you just tell us about how you feel is different working for Mozilla and working for a company like Google?
Yeah, it’s really interesting, because Mozilla was, or is also not just a corporation, but it’s actually a nonprofit. So, it’s a very mission driven organization, where, you know, Google is definitely a business. And we both work on open-source projects, but with kind of very different goals and very different workstyles.
Right at Mozilla, one of the sort of hallmarks, there was radical transparency and openness, like in a way that I was not used to, because I’d been at Microsoft before that as well. And so, the idea that not only would the code be open source, but the plans were open source, our bugs were open, what companies were working with our long-term goals, sort of even how the business made money was very open. And that kind of transparency was really interesting and difficult, you know, was a challenge for me, because you get feedback very early on in the process, right, you’re just sort of throwing thoughts and ideas around thinking maybe we’ll change it like this, maybe we’ll change it like that.
And a lot of the private iteration you usually do in private companies, is actually out in public, for people who you know, and even after 20 years in the industry, you never get rid of that fear of like, oh, my gosh, is someone going to notice that actually I’m an idiot, that I was wrong here that I made some horrible mistake and getting comfortable with the idea that you’re going to be doing this work in public, and you’re going to get feedback from a lot of people. And, you know, the big nice thing about that is that it builds trust, it brought people in early, they felt like they had been part of the conversation. They were part of the journey. And even if they didn’t agree with where you went, in the end with the final decisions for the product, they felt like at least they were part of that conversation and journey.
And it’s, very different at big companies. And you have a variety of projects, like you mentioned at Google, I’m fortunate to work on Android where most of what we do is open source, but it has a very different feel, right? Mozilla is trying to get a lot of public contributors off individual developers working on open-source projects to contribute.
With Android, we want to do that. But really, the key thing is we have over 1200 vendors who build on Android, who want to build commercial products, and they want to participate, they want to contribute, but they don’t necessarily want to share their long-term product plans publicly with it. And so it’s a very different structure of the organization where you’re still open source and you still want to contribute you do as much as you can in public, but you also have to respect the privacy of these companies that are trying to build new products and market and many of these companies are competing with one another. We as Google want to support all of them, and try to encourage them, like; Hey, I know you’re making these changes, but could you put it upstream, like, we think this will be beneficial for the whole ecosystem, and it would be less work for you if you did that.
And so they both, even open source projects, there’s just so many different flavors of them. And like you said, they’re different at different companies. And it’s been an interesting journey for me to get to learn about how this works, and how you encourage participation, because that’s the key part of open source, right, you’re making an open source, there’s some discoverability aspects, but really, you want participation, you want other people to come with you on this journey, to build products. And how you do that, and how you structure it to make that happen, is really interesting based on your business’s goals.
That’s really fascinating. It sounds like working in a completely open organization. So the minute you have an idea hit your brain is going to be completely in the public, and you’re getting the feedback loop started from day one. But for organizations, which also have to care about the business, it’s like, okay, we’re going to tease that in, let’s say, next quarter, or next year, but I’m sure that working on the Android operating system, you still want contributors, like you mentioned, you still want people to have that sense of contribution to an open source project, but at the same time, you still want features to be part of the mainline or upstream, and they really would make some value to the operating system. So, is it like something along those lines?
Yeah, and you want to be respectful of the pace that with which people can bring these products to market or adapt these changes,if they’re, in an open source project, you might just push the change out and say; “Okay, we’re changing the new API, there’s going to be new requirements or something else, and we’re just going to land it in the tree, and we’re going to make this happen”.
And there’s much more of a conversation based on sort of product or business needs, this might not be the most important feature, our vendor ecosystem might want to do the work, but they might not be able to do it for one year. And so, can we make it optional for a bit? How long do we need to keep the old version around? How do we migrate people?
And it’s really thinking about that story of evolution. And not just technically, how can we do it, but how can we make sure that our vendors can go with it, that our application developers can pick it up in time? How does that whole story work together, and that can be very different from open source projects where you just land a new API change, and as long as it isn’t too breaking, you can just sort of keep rolling forward with it. It’s much more like a consortium there. And then to be clear, we do still get the feedback from our vendor partners as well, where they’ll say, Lars, that’s a terrible idea. Like we absolutely can’t do that, what are you thinking, but it happens in private, at least.
So, going a little deeper into your role at the Android project and Google, in general. So, what would you say is like your day-to-day roles? Are you still involved in programming? Or is it more like decision making and project management? And just in general, like, what sort of things have been doing lately for Android? And what does your usual day in a workload look like in terms of technicality when it comes to managing such projects?
Yeah. So unfortunately, in my role, I don’t get to read a lot of code anymore. I try to take some time, usually around the new year to go back, I’ll do advent of code, I’ll try to do a commit or two in the project, because I think it’s important at all levels of engineering management to really understand the tools that your team is working with. And not just the language, but also the CI system.
What do they have to do when they check in? What tests get run? What do the portals look like? What happens when things break? How do they track down these bugs, it’s very easy, particularly as you get an engineer, to have this kind of memory of how everything was, 5 or 10 years ago, back in the days where you were slinging code, and that can lead to this disconnect between you and the team where you think it’s super easy to get a change.
And then the team says like, no, you’ve forgotten their privacy reviews, there’s 2.2 million tests that run before you can check in your first change. And so, I do try to do that, but to be clear, I don’t go on any piece of code, my name is not on the owners file, I don’t get to look in the headers there.
Most of my day-to-day work is really focused around either management work, technical work or strategy. So, on the management side, I’m a people manager. This is why I’m in the role. I often joke about management, I can fix anything else, like everything is tactics and management, they have to like seeing people grow, you have to be personally invested in helping people get better at their jobs, seeing them grow, seeing them possibly go far beyond you, and get into new roles that are beyond where you’ve gone and that takes up a lot of my time. Whether it’s in coaching people, whether it’s in hiring, whether it’s in dealing with organizational structure and making sure that people have a good career path and everyone’s being well supported. That takes up a good portion of my time.
Tactically, Android has a cadence, we ship new major versions of Android every year. And so tactically there’s sort of a feel to the overall year, right? We have times when we’re making new requests, we talk about the open-source changes and how you make them, there’s a time when we go out to our vendor ecosystem and say; Hey, this is what we’re thinking about doing for the next version of Android. There’s a time when we’re bringing that to Publix, there’s a time when we’re sort of burning down our work and trying to get the fixes out.
And my job as a manager will really depend on the time of the year for where we’re kind of at in the product cycle. And then finally, the third bit I mentioned was strategic, which is where we’re trying to have multi-year initiatives. It’s very easy to just get caught up in the one year of Android and everything else is the infinite future. But there are some things that I work on, like adding support for new kinds of hardware, or new hardware features, or driving new programming language adoption or new tools. And those can take 2, 3, 5, even 10 years. And so, my job is making sure that we don’t forget about them, that we continue to march them along, that we’re making progress every year. So that when it’s ready to ship, we’re ready as a platform for its adoption.
So, for a complex project, like Android, I’m sure there are a lot of components that are directly affecting consumers. So, you have to keep them in mind. And as well as developers, because you want them to have updated SDKs, all the libraries, so it makes the job easier. So as a project manager or as a developer in the past, what would you say is different in terms of a developer mindset, when you are creating something for, let’s say, end consumer versus something for to be used by developers, say, a library or an SDK?
So, I tend to think about it kind of at three levels, right there as the Android platform, there’s some set of libraries that we’re providing. And then there are kind of end user features. And each of those can move kind of at different paces, right. With platform level API’s. That is when we’re exposing a new API, it doesn’t matter if this is the Android operating system, or this is when I was at Mozilla, if this was a new web platform API in the browser, or if this was when I was at Microsoft, new things that we were exposing in Windows, those have to be incredibly long lived, right?
When you introduce a new API like that, generally, it will live until the last device that shipped with it goes out of service. So, that can be 10 or more years. So the amount of care and thought that have to go into those new API’s, and you really want to make sure, because you’re going to be stuck supporting that for a very, very, very long time. But really, when you’re looking at it, that API will be fixed, and you will be supporting it and you will move forward with it.
Libraries are very different, right, they can move much more quickly. But they have the problem that they have to run on old versions. So, if you’re making a new library for some new camera API that you want to provide to developers, you have to figure out not only how does that work on our device today, but how does that work on the more than 3 billion devices that are in the field right now? Because that’s the first thing that application developers ask you is like, look, I don’t care, these new devices, they’re great. They’re awesome. I’m seeing them all at CES right now, which is when we’re filming the show, but those won’t be in consumers hands, and they won’t be a substantial portion of our market for years.
So how does this work on a four-year-old phone? When you’re a library developer, you’ve got to figure out both how to do that, and how you are going to help developers update to a new version of the library. Many developers will just drag that first person to the library and then say, great, okay, I got my version of OpenSSL, I can check certificates, never going to update it again. So how are you working with developers and package managers to make sure that they get the new versions that there’s value in that you don’t break them, but that you continue to work with it?
And then on the feature side, that’s not specifically my area? I support a lot of those teams. But that’s much more user focused, that’s looking at how users are using their phones today and what are the challenges that they’re facing. Usage has changed over time, right? It’s been in the field a long time, I’m sure you have as well. And even if you look at over the last couple of years, the number of applications that people have has dramatically grown. And the kinds of applications that they’re using have changed substantially. They’ve moved from mostly text based social messaging services to more video and short form messaging services. And when you look at it from a product perspective, how does that change how they interact with notifications? How does that change how they think about, using multiple applications at the same time? Are they scrolling through their feed while they’re also doing something else?
And so it’s not just about these static decisions about what is the best way to display a notification, but it’s contextually within the users life and the applications that they’re using today because nobody buys a phone to launch the settings application, right? They’re buying it for these third party applications and those change every year. That top 10 list changes rather substantially. How are we as an operating system building the features that help those applications really light up for users and users have a good experience that doesn’t feel kind of overwhelmed. Because the decisions we made when people only had a few applications, and there weren’t many notifications would not work very well in a world where most users have many 10s or 100s of applications and notifications are just coming in like a fire hose.
Talking about that, I’m not really sure if there’s something that you were involved in, but I still wanted to take your perspective on it. I’m sure you’re doing a lot of operating system kernel and middleware stuff. But I just want to understand from your perspective, when do you think a project gets mature enough so it can start having different projects that support itself? For example, like in iOS, the application development used to happen on Swift, and it was Java for Android for a very long time. But the application developers and application flux were so high that they wanted to make it easier. So, iOS moved to Swift and Android moved to Kotlin.
So when do you think this sort of decision comes into this picture, to take this massive leap forward so everyone is enabled and can feel powerful enough to be a part of this platform as an application developer or as a developer in general?
Yes, so I’ve been through many language changes over the years, right. I was at Microsoft during the .net revolution, where C sharp came out. Now I’m going through Java to Kotlin, I’m going through a lot of the C++ to Rust. And of course, on the website, the evolution that’s happened over there has been tremendous. And I think when you look at it, it’s not about language features, right? It’s coming back to sort of the analogy we’re making about how our users use the application, it’s about the demands changing for what has to be done with an application.
So whether that’s with Swift, there was also a new UI framework that was coming out that Swift happened to be much better at programming. And so while Swift is a great language, and in many ways, you can say it’s better than Objective C, if there hadn’t also been a corresponding set of framework changes that were much easier to express and faster to author, I don’t know that we’ve seen would have seen the same pickup of Swift that we have.
And it’s the same thing for Kotlin with jetpack compose, right. Jetpack compose plus Kotlin is kind of the magic, it’s not just Kotlin, although some of the things with nullability checking and async. And a lot of the features that really have not yet made it to Java, that innovation has really landed there and driven the adoption of it. And we see it with Rust as well that, just moving from C++ to Rust, people wouldn’t have done it, if it weren’t for the changing security landscape and some of the dynamics there.
So there has to be this kind of convergence, like a language on its own really can’t win on the basis of better places to put the semicolons or the curly braces or syntactic sugar, those things are easy enough to backport into previous languages, backwards compatibility accepted, there has to be some other thing that’s tied to it, that’s going to solve some problem that developers are facing or make them more productive that really at least when I’ve seen languages be successful in my career that’s really been it, is that
the language had a name, but there was some set of tooling that came along with it that made developers more productive, that solved real problems for them that caused that or that drove that change across the ecosystem.
That definitely makes a lot of sense. Taking it to a bit less technical term, I want to understand what things you keep in mind while you are hiring a fresh software engineer straight out of college, given the fact that you also have to mentor them in the long run and make them ready for the challenges this industry poses. So what sort of things do you keep in mind when you’re hiring a new, fresh graduate and trying to make their way into the software industry?
That’s, I’ll admit most of my hiring is focused on senior people, right? I hire people who hire new college graduates. So I don’t get hands on like, you don’t have to worry if you come in for a new grad interview at Google, it’s not going to be me with 25 years of experience, it’s going to be people who are closer to the code, because going back to what I said earlier, I don’t write a ton of code right now.
But when I see there’s kind of two parts to it, right? There’s hiring and then there’s what I see makes people successful in the early stages of their grad career that we want to look for. And generally, it’s, can you solve a fairly well defined problem, but where there’s still a bunch of ambiguity? And what’s the algorithm we’re going to use? How are we going to write the code? Can you sort of understand that problem? Ask the right questions around it to hunger to disambiguate, where’s this going to run? Is it on the server? Is it because the client doesn’t have to run fast? How much memory is it going to use? And then be able to decompose that, write an implementation, get it tested and bring it to production quality. And we don’t expect people to be able to do that sort of out of the gate.
But when we’re doing our interviews, that’s really what we’re looking for is, can you take an understand this problem and begin to work on it with some amount of mentoring and guidance, but generally in a productive way where you can do a bunch of work sort of independently on your own, given enough of the structure for what that particular problem is.
So, problem solving is equally important, as well as optimizing it and understanding where the code ends up running. And so you can make it a bit more optimized for the end goal.
Yeah, and while the goal is getting the work done, this isn’t the big difference, right, moving from a class project to a production environment, is that your code isn’t running in the abstract anymore. It’s not, problem 15B implemented a linked list, it’s implemented a linked list inside of this multi-million-line codebase. That’s a large part of what you kind of have to scale up to is realizing that you have to figure out how your code fits into the system. So, it’s not about writing new data structures yourself. It’s about figuring out what are the patterns used in this code base? How do I make my code fit into this code base, as if it was a part of this overall multimillion line thing. And so, getting used to figuring out how to make your code feel like a part of the system is a really big part of one of the first challenges that hits many new college grads, because most of your college grad or bootcamp work is in the context of smaller problems.
Unless you’re doing some open-source contribution class, no one’s going to give you a multi-million-line codebase and say, okay, now add this call to add a new field to the database and plumb it all the way through.
And so one of the things new college grads have to be able to do is sort of the there’s this expression like “when in Rome”, right, it’s writing code, maybe not in the way that you would prefer, but in the way that is going to make you show up as a good team player.
That is you, you wrote code in the right style, you wrote the right kinds of tests, you wrote the right kind of documentation, you checked all the edge cases, your code fits in, and your other people on the team go; I’m really glad that you joined the team. Now we’ve got your code and your contributions are good, you didn’t decide that we were going to write this in some other language or bring it or write your own libraries for doing things that were already supported by the system.
That’s great. I personally feel that apart from just solving the problem, it’s also very important given the scale and magnitude the industry is heading towards and it’s still there, the way by which you collaborate with different people sitting across the globe, and you’re communicating your ideas well, and you feel home when it’s about a lot of people working on a problem together. So, would you like to share any tips when it comes to collaborating with other people on a codebase or a project? Like what sort of things can people in universities or graduates keep in mind when it comes to working on a project of a scale like Android or even bigger?
I mean, I think you hit it right on the head, the collaboration aspect, and closely tied to that, because of the global side is the communication aspect. And in some ways, it’s making sure that the way you’re delivering your feedback, and the way you’re working with other people comes from a place of humility and empathy.
So it’s very easy, I write some code, I’m nervous about my code, and then you come and review my code. And if everything you say is technically correct, but it just feels like you’re saying; semicolons are on the wrong line, curly braces are in the wrong spot, your blah-blah like making sure that in your interactions, you’re starting from this place of where it feels like he’s building that trust is hard with other people on even on your own team.
And so how do you really help either provide the feedback or ask questions in a way that feels like you’re working together.
So rather than, if you’re pointing out a bunch of places where the style guide isn’t met, saying; Hey, these are some coordinates, I wish we had tools that handled it. But generally, in the code base, we’d like to put the curly brace here and stuff like that, sorry, we don’t have the tools in place, right? It’s the same message, but it’s packaged up in a way that makes sure that they know you’re not mad at them. But also, that you’re not, this isn’t a conversation, right? We’re not conversing about where the semicolon should go. This is the policy of the codebase. This is how it’s going to happen.
And similarly, when you’re asking questions about systems, leading with; Hey, I couldn’t figure out how do I call this database method and also requests that it do it in a certain way, asking from a perspective of hey, I couldn’t find it, rather than; why doesn’t this database method have a third argument that’s an integer that tells me how many seconds it should run in, and otherwise timeout, right? Coming at it in a way that feels collaborative. Like you’re having a conversation with people, it’s much too easy.
Also, it can be very difficult culturally, right? The way that people ask questions in different cultures in the way you’re brought up to be very different and learning to adjust to, in particular International Open-Source kind of norms, or even just US based tech company norms around how you interact with people. Just looking and reading the codebase and looking at other pull requests and other comments to really understand how people do their code reviews and how am I going to show up.
Am I going to be the kind of person that people want to have on the team and want to involve in conversations? Or are people going to be terrified? Like, oh my gosh, Lars reviewed my code. Oh, man, I’m going to be in tears tonight. And this isn’t academic, right?
I’ve been managing for a long time, I have seen people in tears over comments they got on code reviews, where the code reviewer had not meant to be rude or abrasive or mean or dismissive, but the person took it so personally, because of the way it had been phrased that they just broke down. And I’ve also seen the other side of it, where people just got enraged, and were like, I can’t believe we have Lars on the TV is a terrible person, he makes these horrible, nasty comments by and then you look at it, and none of it was nasty. It was blunt, but it wasn’t nasty.
And so that’s really when coming back to your questions about communication and collaboration, just really watching even the subtle, that’s not just the technical bits of this is correct. But the business technical writing standards of how I communicate across cultures and across time zones and remotely with people that I haven’t met in person, because often, you haven’t met people in person in a lot of these settings, particularly during COVID. But even now, in our more distributed settings, and so a lot of the things that you had where, you were running into this person at the watercooler, you went to lunch with them, you had some silly team morale event where you were taking frisbees and throwing them in buckets or something, right?
Those in person casual activities that build trust, where you can say, oh, Lars is generally a good person, that would normally paper over a lot of these communication difficulties don’t exist in these modern environments, and modern highly distributed workplaces. And so, you have to work a lot harder in your communications to build up that trust over time, because you don’t have these default mechanisms in person that normally used to handle it in what I would call the olden days.
Yeah, that sounds like being part of the Linux kernel mailing list and not taking it personally, is a great practice. You mentioned empathy, and I couldn’t agree more how important it has been to ensure that everyone is having a healthy environment when it comes to ‘contribution’, and everyone is being heard of.
Do you also have some sort of a personal mantra when it comes to managing people and or being a stakeholder in a project of this magnitude? And do you have some sort of things that you could share, apart from being kind. So, what would you say that something that we could learn from?
Some of this will not be very surprising, I am very tolerant of ignorance. We all start out not knowing things, it’s going to take people a very long time.
So, make sure to be patient with people as they’re learning new areas, but do not be patient with people who have communication challenges.
So, the minute that you see one of these patterns and when you’ve been in the industry enough, or that you can see some of these and sometimes it can be misspoken, like I said before where it’s too abrasive, it can also be not noticing power imbalances.
The feedback that I give to one of my peers is delivered in a very different form than the feedback that I give to somebody who is a new college grad. Because, we like to be as flat organizationally as possible. But the reality is that there are power imbalances in these places. From a management perspective, one of the things that I do, and one of the things I require from my managers is, when you see a communication pattern, you address it privately and immediately. Like this is one of the most important points of coaching feedback, like the mentoring and the code stuff we can get to, when we get to it, if people are writing bad code, we’ll get that fixed, there can be a long-term arc there, we can send people to training. But when you see these sorts of communication issues, or these interaction issues, you need to dig into that immediately.
As a manager, that’s one of the things you notice, as you’re on a video call, or you’re seeing these PRs go through, and you just kind of, you’re noticing, like certain pairs of individuals, or certain teams that really don’t want to try to route around each other and stuff like that. And from a manager perspective, I push on that. And I’m like, you have to nip that in the bud right away. Because those are the kinds of things that if you get it early, you can address it, right? If you wait until it all blows up, like people are leaving the company, or they’re leaving the team at the very least, you may even have an HR issue on your hand where it escalates. And then somebody says something that really shouldn’t be said at work. And now, it’s a thing, right?
And it’s important because as a manager, people try to hide this stuff from you, right? I don’t want to bring it up to Lars. He’s busy. He’s not going to handle it. But everybody on the team sees it. They’re like, ‘oh, my gosh, Carlos and Steve are going at it again. Did you see PR 11297? Oh, my gosh, get the popcorn out’, right? And it’s not good for the team and they’ve all been seeing it for a while. So, by the time you see it as a manager, even as a smell, that seems probably been sitting on it for a while and just hasn’t brought it up to you. So that’s really my biggest man.
One thing because if you have a team that is gelled and productive and is working well together, that tends to lead to higher quality outcomes, more predictable engineering schedules, more trust, they’re willing to tell you that things are off schedule. I don’t mind, things are always off schedule, right? It’s software engineering, right? Despite engineering in the name, we do not have the delivery of other engineering fields that have real strict schedules and real deadlines. We don’t have that in software. And just as long as I know, early, we can adapt our schedule and stuff like that.
But when you get into this toxic environment and low trust, there’s really nothing you can do as a leader to bring it back on track that isn’t really a nuclear solution, completely restructuring it, removing teams that are no longer working well together. And by that point, that’s the worst-case scenario, that basically stalls all work, you’re rebuilding the whole team. So, if you get that right, like, generally, as a manager, if your team is working well together, your job is pretty easy. They’re working, they resolve issues on their own, they figure out problems, they feel comfortable reaching out to each other for help. There are very few things that really escalate to you and you can focus, when I was talking earlier, you can focus less on the tactical bits, and more on management, how am I growing the team and building their skills, and on the strategic, what are we doing in the long run, because when your team is not running well, the tactical did everything is going badly, that ends up sucking up all your time as a manager.
And then you’re not spending any time growing people on the team or are working on developing their skills, because you’re so busy handling the technical bits, and you’re not working on any of the long-term needs of your business or your users. Because again, you’re just trying to get product out the door and meet these hard deadlines.
That’s great advice. I personally give a lot of credit to communities when it comes to learning these sorts of skills, technical but even communication and collaboration. So, with you back in the time, we’re part of, let’s say, some community, some meetup groups that you used to hang out with the people who have the same interest. If you could just share the communities that you were part of, and maybe you are still part of.. I’ve seen that you’re still part of the Rust Foundation Board, that itself is a huge community and Android is a huge community. But back in the days, when you were still finding your ways around the software industry. Would you say that communities have also played a huge role in that?
Yes, and finding that intersection of your interests and others that you can talk with to get an outsider’s perspective, because you’re going to have the natural communities around the work that you’re doing at work, but trying to find what is local and interesting to you where you can participate. And it’s as much about building your network and talking with other people.
Because particularly early in your career, you can watch the talks, you can listen to me on a podcast or stuff like that. But you don’t really have a sense for what would like to work at a start at this exact phase in the company. And people can talk in very broad terms.
But going to these communities, local meetups, in particular, around your areas are really great for getting a sense of not; what are startups like in general, but what is one person’s experience in a very similar role at a startup? And that grounding, that very concrete set of discussions there can help you to explore and understand what your other career choices are, whether it’s either; Oh, boy, that sounds really great. Or boy, I really dodged one not going to that startup that gave me an offer as well.
I think that’s what can be useful because you can find people who are at a similar stage or the next stage of your career to sort of learn from as you’re looking for that next one. And of course, as you become more senior in the career, maybe you’re the one who’s a little bit more senior talking to people who are junior and trying to help them navigate their path through a lot of really hard choices in your career. We have an abundance. I mean, despite the little bit of a pullback going through right now. You know, software engineers have a lot of choices for where they go next and what their next step is, and really understanding concretely, what could that look like, for me and what I like it is something you can really only do in these communities to understand whether it’s work, or whether it’s going back to graduate school, or whether it’s taking some time off and volunteering. How do I come back after I do that, those local communities are what gives you the story, and especially if the local bit helps you really bring it in because the things that are relevant to people in the Bay Area may not make as much sense in Chicago or San Paulo, or in Madrid, right? Each of our hiring pipelines, the environment, the expectations and the norms are very different. And so, making sure that you’re using those local communities to really get a good sense of what it would be like for you.
Talking a bit more about the work that you’re going to be involved in the Rust foundation in general is like the new hottest kid in the block. So, with Linux adopting the Rust contribution, and now with the Web3 smart contract Solana ecosystem, what is the role of a general board member apart from influencing where it’s heading? Like, what sort of things are you responsible for in that foundation?
Well, I’ve been fortunate to be on this journey with Rust for a very, very long time, right? I joined Mozilla in 2016, when we were sort of just starting all of this work, and got to work on the new server, web browser. And when we were working on, Rust is just a new language for better implementing parts of the web, and then trying to see its adoption and seeing its growth.
And really coming back to your question about the Rust foundation board member, like where we’re at right now, in the early years of Rust, we were just, can we even ship a piece of code to a real user that’s in a production device? We didn’t even know, right. And work with all the tools with the debuggers work with the would we be able to profile it? What would happen if the code crashed? Does it interoperate okay with all the existing C code, because C code is not going anywhere, right? It’ll be here long after I retire. It was really about answering those questions. And now with sort of the goals of the Rust Foundation and the project, it’s really asking, how can we grow its usage, right, as you mentioned, large tech companies, very tech focused places that have technology at their heart, have and are adopting Rust.
Now, I won’t say there are no challenges, right? Interoperability is still hard. How do we train people? Could the language be more economic? Does it have all the tools, it needs all the libraries that are needed? Those are still big, open questions, but we have funding and support for a lot of that.
How do we get it to the next group of people, that is the companies that are in other areas where their core business is not technology, but technology is at the heart of it. How are we helping them to adopt? And what are we doing to make sure that they can build the confidence they need that they can not only use Rust, but trained developers manage a team of Rust developers? How do they interact with their C++ developers? Where are they going to get training? In a lot of these industries, they care about certification. That’s not something that is really top of mind for a lot of high-tech companies. But it’s really core for a lot of the businesses that have a larger swath of developers supporting the business.
How do I know this is a certified Rust developer that can do this work? And I’m not saying that’s an area we would necessarily immediately get into, but how can we meet the needs as Rust expands to these new companies and these new businesses. At a time when our demands on software are really scaling up, you may have seen the new executive orders from the US government around securing your supply chain, being able to verify every piece of software that went into your end product before it goes to the government. So, how are we scaling up everything that we’ve done with Rust into all of these new into sort of that next year of adoption and usage. And so, it’s exciting, but it’s a very different set of problems than when we were worried about whether the debugger would be able to show local variables in the stack frame, which I intimately remember breaking every three weeks, right? And right now, we’re not at that point anymore.
So, from your Mozilla days, I’ve seen your work a lot in augmented reality, virtual reality, mixed reality sort of things. So that’s an open-ended question. Do you think that anytime we’re going to be sitting in Metaverse sharing a small circular table and having this sort of podcast?
I hate to play the definition game here. But it really depends what you mean by Metaverse like if you’re if you’re on the far end of the Sci Fi spectrum, which many of the folks I’ve worked with are, where I’m in a sensory deprivation pod, and I’m living in, a fully digital world having my meetings, I think we’re pretty far off. If you are looking at it more as how am I interacting across mediums with virtual representations of people to perform some task, whether it’s a conversation, as you mentioned, like this one, or that, I would argue we’re already there for a lot of it. And a lot of the work is really around how we anchor the use cases.
So, when I’ve seen the growth of the technology over the years, right, we went from VR where it was just for gaming. And then the next explosion was really around video consumption and 360 interactive content. And then the next explosion was around social platforms getting together to play games and hanging out. And then the next explosion was around exercises and fitness during the pandemic. And when I looked at each of these things that brought in millions more users, there was some technology component, there was some element of the devices that got better at something. But it was paired with some specific use case. There was something people wanted to do in the virtual space, either alone or together and were enabled by this technology that was richer than what they could do in the virtual world and so, or in the physical world today with the existing set of technologies.
So, when I look at the roadmap here, and the metaverse, I’m much more interested in what are the new capabilities around remote collaboration around what kinds of conversations we can have. When we talk about Mozilla and some of the stuff that we were building, there was this Hubs, proud of that project which continues to grow, very proud of the work that team is doing there. One of the things that I thought that was most interesting there, that hadn’t really occurred to me was that audio was really the key more than any of the visual aspects. Because when we have a conversation like this talking heads on a screen, really only one person can be talking at a time. And so, the key takeaway from the products we were building there was that you could have multiple conversations, because if we had eight people in the room, they could move off into corners. And just as it did in physical spaces, you could do that.
And so when we think about okay, so now we can have meetings where people are breaking out and coming together, something that’s really hard to do in our modern Chat programs, but it’s very seamless within this virtual environment, like okay, now, now we’ve got… that’s a product, that’s a feature, that’s a thing, we can now do a new capability that we have as people that pulls me into these devices, because these devices are really high friction, right? The biggest question we had around the products was: what are we going to do that gets people to put them on their face? Putting these things on your head even with the most comfortable headsets is just not pleasant. I mean, I don’t like wearing glasses. And so what’s really going to get us there in the VR and AR space, and what are those really key use cases that are going to light up that are not just an occasional thing, it’s not once a month, it’s maybe once a week, or maybe it’s a few times a week, to the point where it becomes daily. And once it becomes daily,
I think coming back to really answer your question, it’s once we have use cases that every day are worth the friction of putting on devices that require more work than just walking up to a screen. That’s sort of where we’re at a point where I would say, we’re now in the metaverse.
I don’t think it’s like a sacred long game, it just attracts lightning bolts in a way. But what I’m super interested in is how we are helping people do new things that are difficult to do today that are facilitated by the set of technology and services.
Do you have a book that you think everyone should read?
Well, number one, so I’m a longtime supporter of public libraries. I love donating to them, I love volunteering with them. And so, I don’t want to get super caught up. Like all reading is good reading, like building the habit of reading is the most important thing. And so don’t get too intimidated by you have to read this book, you have to learn this technology. ‘Hennessy and Patterson computer architecture book is the only way you can learn architecture; this is the only way you can learn a language’.
Like if you find things that engage you the progress, the learning, the thinking is the most important part. Getting out there and supporting your local libraries is really important from my point of view. But to answer your question more directly, because everyone does have sort of one book they’d like to recommend sort of in the people management space. I really love this book from the 80s. It’s called Peopleware by DeMarco and Lister. And if you haven’t read it, it’s just a fascinating read, because they did a whole bunch of basically productivity studies on developers and their work environment and what makes not only developers, but teams really be successful. And many of the things that came out of that book are things we still puzzle over today and get confused. It’s actually the origin of the term ‘10x developer’.
It’s interesting to go back and read it, because they were doing these productivity studies on developers using some coding tests, and was really interesting, because the thing that came out was that the thing that contributes to being a 10x developer is whether you work in an environment with a mostly quiet private space where you are not interrupted during the day, there was no other control, it was not related to intelligence in any way. It was not related to your degree, it was not related to your background. It was solely were you able to build your skills in this craft and in a place where you are not disturbed. And you are able to do work, like real work, whether it’s flow state, like people mentioned, and it’s been twisted into this really weird techno abrasive techno nerd thing.
And it’s interesting to see that journey, especially in an environment where we’re looking at returning asking people to return to the office, and many of these offices are open floor plans, and are very noisy, and many of our changes in technology have this sort of hyper aware like, are you on chat, we just opened a bug. Did you read the bug comment? Did you respond to it? And a lot of the data that we have shows, the more responsive people are and the more noisy their environment is, all their productivity goes down. I liked the book for re-grounding myself in some of that stuff, but also can be useful to sort of track down some of these terms that have just gone totally kind of sideways in popular culture. It’s just a fun read. This is a very easy casual read. It’s not technically very challenging, so I highly recommend it. It’s one of my favorites. I reread it probably every four or five years, just because there’s always something new I pick up or that I’ve forgotten over time I come back to it over and over again, if kindles had dog eared pages, the book would have the spine would be broken, and the pages would be dog eared on that one.
Thank you for the recommendation. And I could totally relate going back to some things for me. It’s this blog by Sam Altman. It’s called “The days are long, but the decades are short”. So, this is something like I keep going back every now and then to remind myself that this is something that I really resonate with. So, I totally understand and thanks for this recommendation, I’m definitely going to add it to my reading list. The next easy one for you is what are you most excited about in this evolving technology world at this moment?
I think although software and compiler sky, really, the innovations in hardware, are the things that over the last 10 years, have really impressed me because if you look at, we had video cards, and then people figured out how to run general purpose programs on top of video cards. And then people realize that now we can do a lot of computational work that was infeasible on CPUs if we have these cards. And then people started building accelerators. Then they started moving those accelerators onto chips. And that’s really what has enabled the AI revolution. That’s what’s enabled short form video, it’s what’s enabled a lot of our work with filters and overlays. And so, it’s only been in 10 years, right? That is a super short.
I mean, it’s long if you’re not as old as I am. But from the point of view of technology, we have so much innovation coming so quickly in hardware, and the hardware is now adapting so quickly to new use cases and needs. And we’re seeing all of the architectures out there adopt and adapt to these new technologies, where it used to take a very long time for something to go from an idea to a new instruction, to new support in the CPUs, like seeing that shrink to, from decade to years, to now some of these things are running in quarters. Right where we can go from, we have some new kind of AI model that we want to either train or execute to a piece of silicon that we can actually put in a CPU that makes this possible to run within our power performance cost envelope budget. That’s really neat.
When I grew up all of these things with AI were no, everything we see around bland, GPT, all of the math that underlies it, right? This was all known. This was old stuff in the 90s when I was going to school, right, but it was computationally infeasible. And we didn’t even think given the growth of transistors that this was ever going to be feasible that we’d be able to do billion and trillion parameter model training. And so the hardware changes that have enabled all of this, in my mind are some of the most interesting things because there are so many things that we think are infeasible that, well, if we just throw enough custom hardware at it we can really tune what we’re doing for it.
And so how do we continue that trend? What does the next even five years look like with that trend? And what other things that are even more exciting, are we going to be able to do given very, very highly customized, capable hardware that makes it possible to do this work?
Well, I’m exactly the same thing that I’m very much excited about, given the fact that I feel that something that’s happening again, and again in software, that tends to make its way to hardware, like it’s been cryptography, six-seven years back. Now, every new chip has a cryptographic unit onboard, so this can be offloaded to that unit. And same is going for ML and Apple coming with their own silicon and tensor units for Google. So that’s exactly the same thing I’m very much excited about. And as you mentioned, it’s really fascinating to see where we are heading, even if we are not following the Moore’s law, but we are still very much you’re not keeping up with the hardware of generational revolution, I would say, and I’m sure it’s going to, it has to be really hard being a compiler’s guy and always guy to keep supporting all the things that are coming up in the hardware.
It’s an infinite deployment. As long as they keep coming up with new instruction sets and new construction. They’ll still need compiler folks.
As long as the documentation is good. So, do you have a favorite piece of tech as of now that you would say that I can’t start my day without?
I really liked bone conduction headphones. I don’t know if you’ve ever used a pair of these. They are absolutely fabulous. Just because not just for the fitness side of it, which is really great for being out and exercising. But it’s important to me to be able to be present with my family. And even if you’ve only got one headphone in your ear, it still makes it hard to hear a young kid. Nicola would say, Dad, did you know how many exoplanets there are in the solar system. And if I constantly have to pull it out and say what, that just doesn’t feel like I’m present.
But I do like to listen to music throughout the day, or podcasts or other things. And so being able to use bone conduction headphones, let me still be present in the world with my family at the gym with people around me aware of my environment without sort of having something in place there.
I would say, that’s really the piece of tech over the last year or two that’s really just sort of jumped into my life where I was like; I don’t know, is it going to feel buzzy? How am I going to like this? Where it just became like; No, I like every day, it’s on my head a lot of the time. So I’m really impressed with how good that technology is -again, coming back, like our other hardware statements- how much better the sound quality has gotten even year to year with these devices. Yeah, I mean,
I mean, technology, giving our life back, yes, I’m sold. It has been a really great time discussing all these things with you. Thank you for your time and doing this. But before we wrap up, I just want to ask, if someone’s listening to this podcast and feel very much inspired by your career journey and want to follow a similar one ; since you have been into the software industry, and having written a lot of code back in the time, now being a stakeholder of a project of this magnitude, and also influencing the direction tech is heading, make this sort of career journey, and given the fact that you also hold a PhD. How important is it to go through the traditional route? Because I’ve seen a lot of next generation software engineers who have never attended a professional degree course, but are taking the courses, books and all those things, they’re still very much managing to find their way into the industry. What is your advice to someone who wants to take a similar path with you? What are the right things that they should be doing in their life to be at this position?
That’s a huge question. I think one thing that I really need to point out about my own career is that I had no idea this is where I would end up when I started. I joined my first job. And I thought, 20 years later, I would retire from that first job, this was it, that’s where I was going. I know other people have plans they come in, they’re like, I’m going to do a startup. I’m going to race after that. There’s two parts here.
One is the career and one is the education. A large part of it is that these ambitions in the abstract are good to think about, but they’re very stressful to anchor yourself on and feel like, I have to make a director or vice president within seven years, or I have to run my startup and stuff like that, it can be very stressful on you. Because most of what you have control over is not where you’ll be in 5 years, or 10 years. It’s what decisions are in front of you, what is your decision in the next two years? Focusing on how am I building a lot of skills right now, in the role I’m in, how am I making the best use of my time here in the job that I’m at? And then at each point, what is the right decision because programming languages were not really on the rise when I entered the field, right.It was just kind of opportunistic that when I got to where I was programming languages were very important, but you can’t anticipate these larger trends.
The same thing with AI when I was in grad school, I had some colleagues who were working in the machine learning space, when it was not a hot topic, right? People were not very cool on it, and then just kind of at the end, so I want to acknowledge that there is a bit of fortuitous luck that you cannot control for.
I really focus on what you are doing that’s helping you grow. And what is interesting right now, what do you think is a role that you are actually glad to be a part of and so that really ties into some of your questions about schools and education.
I think about it from two fronts. One is there are a set of skills that are hard to get without potentially without structured mentoring, a PhD process, it’s more about the mentoring that’s having an experienced researcher who’s teaching you how to do research, which is something kind of like management, where you can read books about it, but it’s really about the actual experience and having someone there to mentor you and grow you there. So, if the thing you need requires a PhD you should go get a PhD. Things I needed required a PhD, I went and got one. I wanted to do research in programming languages. That’s kind of that in many ways even though it’s a long and hard track like grad school was unabashedly the hardest thing I’ve ever done and probably will ever do in my career.
But it was the easiest path to get into the roles that I wanted to house afterwards. If you can get the roles without it, that’s fine, and whether it’s a bootcamp, a professional masters or other degrees. One thing that those do confer beyond the learning can be that they often have a network that involves a placement network that either is direct portals into job opportunities, or a network of peers who have been through that program who can help you expand that work.
If the thing that you’re worried about is maybe not the specifics of the program that is, how to learn and write the code and that. What you’re using it for is that network. We talked about certifications on the rough side before, these things are the certification to potential future employers, that you can perform the task or that get you past that first level of gatekeepers that are keeping you from getting the interview, to have the conversation with the job, but I don’t want to tell people that they thave to do those kinds of things. But I do want to acknowledge that those gatekeepers can be a real challenge particularly for people who are from a non-traditional background of any kind, whether it’s internationally or racially or culturally, that getting past it can be really, really hard and super frustrating.
And sometimes, it can be a huge leg up or make things much easier for you to go through those programs to get the certification that has the right name on it to get you through the door, so that you can then show those skills that that you can develop in part on your own, and possibly in part through the program, but I never say that they’re mandatory. But I do also want to acknowledge the reality that getting through those gates can be really hard and unfairly and unequally hard in many cases.
Thanks a lot for doing the podcast, Lars. It was really amazing. I couldn’t ask for a better start of this podcast. So, I’m sure we’re going to be getting new again very, very much soon and talk more on this. Thanks for spending this time. I’m sure a lot of people in the community will get inspired and learn a lot from this one. I had a great time. I hope you are too. Thanks a lot, and have a good one.
Thank you for the great questions. And I wish you all the best both with this and all of your future podcasts. I will definitely be subscribing and listening to them.
Thank you so much. Have a good day.