Last month I got a chance to sit and talk with Darshan Shivashankar, founder and CEO of APIWiz on our brand new podcast. We two have collaborated in the past on API lifecycle management workshop and Darshan being a technical founder, whenever we talk our conversations tend to go in all places technical. So catch up on everything we discussed in this 50 minutes episode but here’s a quick summary or gist if you will for someone who needs more buy in before lending the episode their ears.
Darshan has 15+ years of experience in industry building technical solutions especially when it comes to designing API programs for companies looking for Digital transformation. In the past Darshan has worked with various industries from telecom to healthcare, FinTech to Neo banks. Though now a founder of developer first company, Darshan shared he never envisioned or planned his career to follow a fixed trajectory. Opportunities started coming in as he worked on more advanced projects and with right problem solving mindset and experience, he was acing the digital transformation process of the industries he worked in, sometimes leading and even starting their API first journey.
Darshan figured out the technical debt associated with APIs journey of organisations wherein teams work in Silos, leading to a lack in collaboration, reliability and consistency in governance. If you’ve worked in APIs development for a big project or digital transformation mission, then you could easily relate to it. This is where Darshan felt a need for a solution that could help in API lifecycle management. After validating this idea within his network he realised that indeed there is a requirement for such a solution but not an immediate urgency to have that in place. This gave Darshan and team the opportunity to bootstrap their journey building APIWiz, focusing on addressing Developer centric problems.
I asked Darshan if he’s still involved in the development of the product and he mentioned he was actually writing code till very recently but now he’s more involved in hiring, planning and giving direction to the product, though he still knows the codebase in and out and is always ready to pull up his sleeve and get down to programming and tracking bugs whenever required, which for me was really inspiring to listen. The team at APIWiz is now scaled up after they raised funds from their investors and that’s where Darshan focused on hiring the candidate with right vision and mindset, as he believes tools and skills can be learned at job but problem solving attitude can’t be taught. Darshan also mentioned motivating team members to fill the job roles needed within the organisation enabling them to explore more arenas to work and fit in.
I also asked Darshan where he sees industry heading and things he’s most excited about but I’m gonna tease, as he really has a deep and interesting perspective on this one which I feel you should listen straight from the Podcast to better understand it.
P.S : eBPF and Raspberry Pis were mentioned 😛
Darshan also shared the struggles associated with starting a company from scratch, the role of support from family members, friends and people within your network and great tips for anyone just starting out fresh in tech and wanna make big, making this one of my favourite episodes.
If you listen to it don’t forget to share it with your friends who might learn a thing or two from this podcast. As always I’m always looking forward to your feedback to make this podcast better and if you have any guest suggestions feel free to share it via the comment section below.
In this episode of the Developer Nation Broadcast we welcomed Adrienne Tacke, Senior Developer Advocate at Cisco. Adrianne spoke about her current role, her focus and the challenges she is facing. She also walked us through her journey and how she landed in the developer advocacy universe.
Adriane
Hi, Ayan. Really great. Really happy to be here. Thank you for having me on Developer Nation.
Ayan
Yeah, I’m really excited for this episode, especially given the fact that we both are developer advocates, I’m sure I’m going to be learning a lot of things from you today, as well as our community members who are mostly developers, but I’m pretty sure many of them would be interested in a career in developer relations and could learn a thing or two from you. So, for our community members, could you just introduce yourself referring to what you are currently working on and also giving an overview of your career journey?
Adriane
Sure, I’ll give the short version so we can go into more depth a little later. I’m a Senior Developer Advocate at Cisco.. My journey pretty much started by accident as a lot of the things in my career have, I never sought out to be a developer. I never studied computer science. I actually majored in Management Information Systems. And I got into software development through an internship, mostly because I needed a way to pay for college.
So, I found a student internship that focused on software development, and found out that I actually liked doing this stuff as I was interning. And from that point on, I worked at several different medium to large sized companies around the Las Vegas Valley as a dotnet developer, then slowly kind of merging into the JavaScript land and some of the other front-end frameworks.
Before, again, accidentally landing at developer advocacy, prior to Cisco, I was actually at MongoDB, also as a senior developer advocate. And that’s another story you can ask me about. I kind of fell into it, because I was actually sharing my journey on conference speaking. And MongoDB reached out and said; Hey, would you like to apply for this job? And I said, is this a job? That’s super cool. I didn’t know that. And so, I did. And that’s kind of how I got to this point in developer advocacy.
Ayan
Well, that’s really interesting, because given the fact that you did not know that this sort of job exists and now you are fully embracing it, going out to different conferences, giving talks and actually evangelizing for the company that you’re working for. So, tell me a bit more about that internship. Was it basically about learning development? Or was it more about how computer science in general works? What sort of internships do you have back in the days?
Adriane
So, at that time, like I said, I wasn’t even sure what I was going to do. And I actually found it through my student job. So even before the internship, the job that I found was for an IT Helpdesk position. So, if you needed your passwords reset, if you needed help troubleshooting your computer, both students or professors, I was the person you call to try to help troubleshoot that. And it was through this job that I found this internship. So, this internship was focused on software development to help in particular, the university’s Office of Information Technology. And at that time, the language that I worked in was actually VB dotnet, and also working with some Google API’s.
This position focused on helping the email administration system of the university, which at the time was at Google, we were using Gmail. A lot of that was really learning what development was about because I had no idea so I was very lucky to actually have a full team of all women as my first software development team. And I’ve never actually had that sense, which is kind of funny but focused on learning how to work with SQL and how to write queries that would grab all of the accounts that needed to be either disabled or retroactively brought back if they were, you know, a student coming back. I worked with Google API’s.
So, with a little bit of front end and learning with API’s, how to work with Google’s interface to create accounts, how to add information, how to send all that information through to Google to administer those accounts for the email for the university system. And then I worked with a bunch of other different people. So that internship was very foundational for me in terms of learning what software development is, what the types of teams you would work with, and what kinds of things you could do. But at the time, the major project I worked on was the email administration system for the university.
Ayan
What do you think about the influx of the next generation of software developers and computer science enthusiasts coming into the industry without necessarily having a computer science degree? They’re pursuing some certifications or training programs, and they are very well developers, they are able to find their way in open source contributions and find their place into the industry. So, do you think that it’s okay to not have a professional degree and use these courses instead? Is it very much possible to build a career and grow it? Or do you think that the degree would also be helpful?
Adriane
I think there’s a two-part answer to that for me in the experience I’ve seen so far.
Number one, you absolutely do not need a computer science degree, I have seen that throughout some of the best developers I know, who don’t have a computer science degree, they really just have a knack for learning. They want to know what the latest and greatest is, or they pick a specific topic that they really want to get well versed in, and they just continue learning as much as they can, building as much as they can. You absolutely do not need a computer science degree to be successful. That’s a fact.
The second part to that answer is, that this doesn’t mean that a computer science degree is not helpful, or that you don’t need it, I think if you have both, you actually put yourself forward and you have a leg up on a lot of other developers who also have a degree by doing the courses by doing the extra building by doing the extra projects. Especially coming from my own experience, I did management information systems, we still had development, networking databases, a lot of that foundational coursework, in addition to business courses. Where I don’t have the background is in data structures and algorithms or some of that other foundational computer science thinking. But I added that later on, or working on that, either for preparing for an interview, or using it in the job as needed. And that’s still very much useful, it’s still very good to know how things work under the surface, it’s still good to know, to have that way of thinking. It’s still very, very beneficial to know those topics. Even if you don’t learn it beforehand, or learn it, officially in university, it’s still very, very helpful. And you’ll still probably make use of it sometime later on in your career.
Ayan
Given the fact that you also have courses of your own now on LinkedIn learning platform, do you see a lot of the people who are purchasing these courses have a professional college degree or like, what sort of ratio do you see? Or is it something that you don’t care about? And you’re like, “Okay, everyone’s welcome. I don’t care if you have a degree”.
Adriane
At least of the other instructors that I’ve seen, it runs the whole gamut. There are people who don’t have college degrees, there are people who have PhDs and are teaching. Again, I think it comes back to how passionate you are about it, how much experience you’ve had with the topic that you’re trying to teach.
And honestly, there are a lot of courses to where there are people who are like, “I want to learn this subject and the best way to learn it is to teach it” so you can learn it but when you go to teach something, you find all those little bits and pieces of “okay, so I need to explain this topic to someone who doesn’t know it at all.” And that’s kind of where the deeper learning happens because you need to go that extra mile you need to go and see what are the pieces that are missing, that you know that you need to learn this topic well enough to be able to be comfortable to teach it. So college degrees, again, are not necessarily necessary, but they’re not a bad thing. You know, they don’t work against you. But it’s absolutely possible if you don’t have it.
Ayan
Coming to your current role as a Senior Developer Advocate, as you mentioned back, you were just giving talks in different conferences, because that’s what you loved about it. And MongoDB kind of picked it up from there, and you made a transition in developer advocacy, what would you say is something that motivated you to continue in this career journey, and what is that you really love about being a developer advocate from your day to day role?
Adriane
I was working as a senior developer, and working on a migration from Azure or on prem to full cloud as your platform. And at that time, I was learning a lot. A lot of companies, they sometimes offer stipends for employees to kind of put towards learning and development. So that could be going to a conference, going to some courses, etc. At that same time, I went to a conference, and I was watching somebody talk about a particular topic, specifically how to build pipelines and Azure DevOps. And I was thinking to myself, this person is really bad. They were not a great speaker, the talks that they had, or the content that they had, they’re basically just reading off of the slides, reading bullet points, and there was not a very good talk.
It was at that moment that I said, “what does it actually take to become a speaker”? How did these people get up there because I felt I could do a better job than that person there. And so, I researched it and found that at a lot of these conferences, you actually get in by applying and you just create a talk proposal and tell them, “this is what I want to talk about”. This is what I think will be useful for the attendees of your conference. I said, “you know what, I just felt like, let me just try to submit and see what happens.” And I did and at that time, I got accepted to seven conferences. So, I freaked out, because I’m like, oh, my gosh, you know, I’m a nobody, like, nobody knows me, why would they accept me. But that was kind of the first point that I said, that made me confident to think people actually want to hear the topics that I’m proposing, the way that I’ve written my proposal is good enough that it’s caught the eye of the committee and said, “this is good to put into our agenda.”
That is what kind of kick started everything. And I’ll be honest, a big part of why I really love what I do is that I get to travel and I get to go to a lot of different developer communities and talk to all of them.In college, I actually was a pre-International Business major, because I thought that would give me a job like Anthony Bourdain, you know, you get your own show, you get to travel to a place, eat everywhere. And when I learned that wasn’t the case, I needed a plan B. It’s, it’s kind of funny how I’ve gotten into developer advocacy, because I am kind of fulfilling that in this role. What keeps me going in this role aside from the trouble and aside from getting to meet a bunch of different developers around the world, is that there’s a lot of different ways to teach something.
So for example, let’s say I had to create a demo or kind of give a workshop on something that I don’t know at all, it’s a new product, or it’s a new feature, or it’s something I may not be familiar with, there’s an opportunity to learn more about it to see what developers would find relevant about that product or find why it would make their experience a lot nicer, a lot more productive.
Finding all the pieces that are relevant to developers and bringing that to the forefront. So doing a lot of that and having a lot of different avenues to do that: conference talks, videos, blogs, slabs, a lot of which Cisco has in sandboxes there’s so many different ways to teach something. I think that’s one reason why I do like this role is that, if I ever get tired of conference talks, which I don’t think I ever will, there’s always another way to teach something and provide more resources to all kinds of learners.
Ayan
That’s the best part for developer advocacy. You get to meet a lot of people who are actually like-minded and there are a lot of collaboration opportunities that come up when you are hanging out with those people. When you are not traveling, how’s the usual day at work in Cisco looks like, like what are different things that you’re currently working on? And of course, when you’re not traveling, what are your day-to-day things that you do as a Senior Developer Advocate that Cisco.
Adriane
So, as with all developer advocates at different companies, that can mean a whole bunch of different things. For me personally, I’m actually leading one of our OKRs which very much aligns with how I actually first felt when I joined Cisco, because, you know, when I would tell people, I’m going to be a developer advocate for Cisco, they’re like, “okay…” like, you know, and that’s part of my job is to kind of help bring what’s relevant and show that Cisco does have a lot of API’s.
And they do have a lot of open source tools that would be relevant to developers, you just don’t think of them because, you know, that’s part of what we’re trying to change is Cisco is relevant to developers.
Ayan
You mentioned the good part of developer advocacy. Now let’s talk about some challenges that you find in a day-to-day, you know, running your developer advocacy program, what are some challenges? And what are some aspects that you think are hard, and you’re still working on? And as a developer advocate, I understand that there are a lot of things that you’re doing at a time attending a conference. At the same time you’re maintaining documentation, you also have to update the community members about what’s happening. So, what are your challenges at Cisco being a senior developer advocate?
Adriane
I’ll say these are pretty common to most places. So, this isn’t just Cisco in general. But what I’ve found as a developer advocate is that you are kind of expected to do a lot, you are the community manager. You are the person that goes to conferences, you are the person that is maintaining documentation. You are the person that’s creating tutorials, and if you look at those four things I’ve mentioned, those are all jobs in and of themselves. Those are four separate things that four separate people could do. But there’s this expectation that developer advocates are expected to do it all.
The risk of burnout and just not knowing what is a priority, because everything is a priority is very difficult. So, it’s very much helpful to kind of align, you know, with your manager and say, what is the top priority? What are the things that I should be working on, then even better, if you can focus on a couple of those things, the better. What I tried to do, because I know, as you know, in the experience that I’ve had is that you kind of just get asked to do a lot of different things is that if you can make a way or find a way to focus on a couple of those things, it’s easier for everybody involved, because it’s easier to manage your time, it’s also easier to focus on a few of the things that you actually really enjoy. If you like creating videos, for example, and you like creating content, that alone can take up a lot of your time. You have to prepare for that, you have to research, you have to write the scripts, you have to film the things, if you’re doing video, you have to edit it. That’s a lot of work. And that’s just one task.
So again, if you could focus on what you want to do, it would be a lot easier for everybody involved. Another thing that’s kind of difficult in developer advocacy, that if you are the person that’s on the road, travel is glamorous. But if you’re on the road for like three, four weeks, two months, you get tired of it, you get tired living out of a suitcase, you miss your own bed, the jet lag is real when you get back, trying to coordinate different meeting times trying to still keep up with your meetings and tasks while you are on the road. It’s very, very difficult. So yes, it is nice if you get to go maybe once or twice a month, but if you are on the road a lot more, it’s exhausting.
Ayan
I see that you’re also involved in mentoring in different communities. And as a developer advocate, mentorship becomes a part of the role, community members look up to you for things that you could help them with. But you have also been a mentor at code.org and glue code. So, tell me about what motivated you to mentor the next generation of developers and people in tech? Is it something coming from the love of teaching? How do you see mentorship opportunities?
Adriane
That is very special to me, because it started with when I started to share my own journey on Instagram. This is when admittedly, Instagram was a little bit bigger, maybe it’s still big, I don’t know. But when I was in that role, right before I actually moved into developer advocacy, I just started to share my day-to-day of what I did as a developer because I didn’t see a lot of people like myself. When you say developer, the first words that come into your mind are probably they’re a guy, they like to wear hoodies, and they’re all in black. And they’re in the dark, and they don’t like to talk to people. There’s this very, very single one-sided vision or image of what a developer is supposed to be. And it said, that’s not the case. I’m a developer, and I’m completely opposite, I like to dress up. I’m a woman, I like to talk to people not so much. But I do like to talk to people, I’m not in a dark basement or whatever hiding from everybody. I wanted to change this image of what a developer meant. I started to do that in my own way by sharing my journey on Instagram. And that actually became a community in and of itself.
There are a lot of other girls and women who had reached out to me and say, thank you so much for sharing your journey. I didn’t know there were other developers, or I didn’t know there were Filipina developers.
I also like sharing that I’m Filipino descent. I’m Filipino-American, but I’m very proud of my heritage. And so, finding other Filipinos because in our culture, it’s very popular to kind of go into the medical route, either to become a nurse or a doctor. And I was not one of those people. I did not want to become a nurse. As a Filipino person, you’re kind of like, well, what do I do? Like that’s kind of the only path that is set forward for me. And so again, it’s like; Hey, here’s this other path that is a really fulfilling and satisfying path that you can be proud of if you don’t want to go into the medical field. This kind of naturally extended into sharing my story and kind of mentoring others at other schools in Las Vegas. Kind of just asked me; “hey, we see that you are there, you’re a part of the code.org list of mentors, would you mind coming into the classroom?” And just spending some time with these, first graders, fifth graders, third graders, high schoolers, I definitely would love to talk to them. It’s really interesting to go into those classrooms and say; “Hey, I’m a software developer, this is what I do. This is how you can get there. Here’s what you can do with code.” And it’s really, really fulfilling to see especially the little girls who are like, “you’re a software developer?” I’m like, “Yep, I’m a software developer, you can be one too.” Showing everybody that route, and it’s something that’s really fun, and can offer a very fulfilling career path. I think that’s why I like doing it and continue to mentor as much as I can.
Ayan
Giving back to the community and not just in terms of development, I would say I personally feel that every developer should go out and also try speaking in different conferences, maybe local meetup groups. You just mentioned that you sent out the call for proposal and you got selected by seven different conferences. So, tell us about that. And if someone is a developer who is working on some new technology, some new stack, andthey just want to, take it forward and speak about it at a conference or a local meetup group, and they are a bit shy about that? How would you say that they go about it, because you’re also coming from the same experience? Because you’ve seen someone giving a talk and you say, oh, I could do better than that. What are your views and advice for the people, first of all, why should they do it and how should they do it?
Adriane
That it’s a great question. Yes. If you want to do it, absolutely do it. The biggest question I get is I’m kind of scared or I don’t know if I can do it. Or another thing I hear is, oh, “this topic has been done so many times, like, why would I want to give a talk about that?” And what I’ll answer is,
everybody may do the same topic, but they don’t say it or explain it in a way that you will, because your voice is unique.
If you take a look at all the conference talks that you see, or Meetup group topics, you will find what’s common among them. There are a lot of JavaScript topics, a lot of the same JavaScript topics, a lot of the same React topics, there are a lot of topics that are done over and over and over again. But why do you still see them and it’s because different people have a different way of explaining it, and may have a better way or novel way to explain it. They will never go out of style, especially if they are hot topics or topics that are here to stay in the tech industry. So, if you think that is something that you are working on, if it’s new to you, that’s still a very valid perspective that should be shared. There are a lot of other people who can relate to you. Don’t let that be something that stops you from sharing in order to get started.
There are two approaches to this. There’s like the Big Bang thing, which is what I did. So, I just went straight to let me just apply to all the conferences that I think would be relevant and where I have something to share and see what happens. And I got accepted to seven, and you kind of just go in there and you do it.
The other way, if you want to do it a little bit more methodically and build up to it is, meetups are a super great place to kind of get started because it’s a smaller crowd, local meetups are usually easier to get to.
And people who run these local meetups are always looking for people to speak, they have a community already built, usually much nicer in terms of being more flexible in what you want to talk about. And it’s the local community. Once you do that once or twice, you get more comfortable with the community, you get comfortable with the audience, you get comfortable with what it’s like speaking to other people. And so maybe you work your way up. Maybe apply to a conference that’s in your state and then slowly but surely as your audience grows, I think that’s one way people find the confidence to kind of get all the way to the conference level where they’re speaking in front of 1000s people. So that’s another way to do it.
Ayan
And I would add that even the most experienced speakers from the developer community are still sometimes being rejected from these conferences, and that’s totally fine. You don’t have to be heartbroken about that. There’s always a next conference or a next meetup, where your talk would be the perfect fit, and you just have to keep doing it.
Ayan
Do you have sort of mantra when it comes to community and building community or scaling community or, you know what’s your take on that because I feel that being a developer advocate, empathy is a really strong suite that every developer advocate should have, they should understand the needs of the community and be able to advocate that within the company. And this is what we need to prioritize.
Adriane
That’s a great question. I think, personally, I’ve kind of focused, as most people would, with the communities that they align with, and the communities that they would like to grow into or be a part of. So, I’ll explain that by saying, when I mentioned how a lot of other Filipina girls and women would contact me and say, “Oh, you’re a developer”, you know, they would ask me questions similar to how you are doing right now, like, how did you get into developer advocacy? What is being a software developer like? How do I prepare for an interview? How do I write a CFP or Chuck proposal? How do you not get nervous when you go up and talk all of these different questions? They come to me, partly because, my face is out there. You know, I’ve spoken at conferences, I write content for companies, I have a book, my name is out there. So, people come to me. But in the beginning, I purposely intentionally tried to find other Filipina software developers to grow that community. I know that we’re out there, I know that we’re not all in the medical field.
It’s part of showing that there is this community that actually exists and wants to be part of the larger tech community as a whole. And so that focus has led me to find other Filipina speakers who are in tech who are around the world. And that’s been a really great part of focusing on this community. There’s Jonah in Sweden, who is also a speaker who focuses on Azure topics. There’s Marylog in Denmark, and I’ve gotten the chance to meet Marylog but not Jonah yet- I hope to meet her sometime this year. And even though we haven’t met, we still have a friendship that goes across the internet. And we support each other, if we have a conference that’s happening, and they’re looking for more speakers, I reach out to them and say, “Hey, here’s a great opportunity for you to go speak at this place, because you have the expertise, and you probably would enjoy speaking here.” Those kinds of relationships,and then connecting people to the relevant places, I think, is a really big part of that community building. it’s one thing to meet it and grow the network for yourself, it’s another to kind of say, “Hey, you are a perfect fit for this particular thing.” And then that community kind of naturally grows because you’re connecting people.
I think if there’s any mantra of mine, when it comes to community, it’s, I kind of meet the people myself first, and then I see if there’s a fit for them.
And then I try to connect relevant people together to grow that network even larger, where those connections may not have ever been made.
Ayan
When it comes to communicating ideas, developer advocates, usually write blogs or make videos or, you know, it could be like, I’m just going to give a talk out there in a conference about this topic and use that conference recording to put it out there in my community. So, what are your thoughts on this? How do you decide on this? Baes on the topic, like this topic is best fit for a blog. Or this topic is better explained when I share my screen, so I’m going to make a video about it. So how do you go about this?
Adriane
I think it depends. And that’s the famous answer. For me, I think it comes from number one, what does the community want? So that could mean what topics are most relevant? What topics are they searching for? What do they want to learn, because you may be really interested in some super niche topic, but nobody wants to learn about it for you, great. But as a developer advocate, you want to serve your community you want to serve the developers that you are creating this content for. And so what’s number one is what does your community want? What do they look for?
Then once you narrow down those topics, then it goes down to how do they like consuming it? So, you may have a community that loves blogs, they like reading, they like step-by-step tutorials. And then you may find there’s another subset of that community that actually prefers videos. So, this is where creativity comes in. Because usually when you create this kind of content, you probably do both to cover both of those communities. And sometimes the topic lends itself well to having both. So, you may have a video that has the screen capture and you’re doing a voiceover of, here’s how you do something. But then you have an accompanying blog that has code snippets that’s easy to copy and paste so that they can work alongside the video. So, it depends on the topic. Sometimes if it’s a bit more generic or just an overview, then yeah, maybe a video is fine, that will be enough. Sometimes you just do a blog. But in most cases, most of the topics and content that you create are going to be in all of the different forms, so that it serves the majority of your community and the way that they want you to consume.
Ayan
I’m really excited about the things that we are going to be doing together. And that includes some blocks coming up for the Developer Nation Community. Would you also like to talk about this so that our community members know what they could expect in future weeks or months?
Adriane
This is something I’m super excited about, we have an open-source tool called API insights. And it’s a way to help developers pretty much create better API’s. And what I mean by that is, it’s a partly static analysis tool. But it’s also a tool that helps you look into your API’s. And it essentially calculates a score. So, if you like games, and you like gamifying things, this is like the perfect thing for you. So, as you’re writing your API, we have an engine that statically analyzes your API endpoints, and it checks all of the different versions of your API against, say, an open API spec, and it calculates a score, how well are you doing against these specifications, and that concept is wrapped into this tool. Tthe next blog that I hope to write for developer nation is an introduction to how to get started with that tool, specifically how to install it on VS code, because we have a VS code extension for it and to do just a couple run throughs of how you would use this tool in your developer workflow, and then hopefully, a follow up blog on how to integrate that into your CI/CD pipeline with GitHub actions.
Ayan
We are coming to the end of this podcast so I’m just going to ask you a couple of last questions. The first one being what are you most excited about in today’s tech world? What excites you, when you see technology happening here. I know, CES is happening in your city at the moment. And then we will have Mobile World Congress next month. So, a lot of amazing things are to come. But what excites you the most in the tech industry at this present moment?
Adriane
So, one thing that I’ve been following closely, I don’t think it’s there. But I think we’re starting on is the prospect of being able to own our own data. And what I mean by that is, I think it’s pretty understood at this point that a lot of different companies have a lot of data on us, they know us very, very well from what we search online, to how we shop, to what devices we use. And a lot of people don’t necessarily understand that there’s this really large profile about us that unwillingly most of the time they have collected about us. So there are movements that come to light and say; “Hey, we should take charge of our own data of our own profiles that have been built up.” And are very excited at the prospect of potentially owning our data. And you know, if we actually wanted to sell that data to the companies ourselves, why not make a buck off of our own data, right?
So, the people who want to be super private can have autonomy over their data, and then the people who want to make use of that data can.
So, it’s always been talked about, and it’s something that always interested me. But I think now it’s becoming closer to reality, because of all of the protections that we have in place. And because a lot of it is being brought to light. So that’s what I’m excited about
Ayan
100%, I wouldn’t mind monetizing moisture data in my room any day. Why not? All right, so I have the last question for you. Because this podcast is mainly focused on inspiring people from the career trajectory of our guests. For someone who is currently doing some sort of development and they want to make a transition to Developer Advocacy, what sort of advice would you give them, where can they start? And what are the different places they can hang out, what are the different skills that they should learn? Do they need to be a really good speaker, and really good writer ?
Adriane
The developer advocacy is a very exciting thing to be thinking about as a developer. What I would say to those who are considering it is if you find yourself sharing in a particular way about what you’re doing, hone in on that.
So, for me, the first thing that I wanted to do was share via speaking because that’s something that I was used to and wanted to learn more about. Was I a great speaker before that? No. I, again, went into it headfirst and found out that, hey, I actually don’t mind talking in front of 3000 people. I still get nervous beforehand, but I enjoyed doing it. It’s something I really like to do. What I would say is, for those who are thinking about a career in developer advocacy, or want to switch, find what it is that you’d like to do. If you find yourself creating videos in your off time, that’s what you’d like to do, you’d like to edit videos, you’d like to teach in a way that you screen capture recorded, write the scripts and write those out, maybe you have a way in by creating that type of content. If you’d like to write blogs, really focus on making your writing better, make it more concise, learn all of the different tools, like become more well versed in Markdown or some other writing tool that makes it easy for you to publish on a better cadence, start a newsletter to kind of get into that zone of producing something every week or every two weeks. If you like talking to people, go to your local meetups, Ayanone yourself or organize one yourself, or see if you can help volunteer and be a part of those local meetups because then you get to see what it take to run a meetup? How do you organize it? What does it take to get people in seats? How do you market your event, there are all these different pieces that you don’t necessarily learn until you’ve done the thing.
And so that’s my advice, to find what it is that you’re interested in and find what makes you happy. And then do those kinds of additional things to help you learn what it means to do it, like going to the local events, or continue to write or continue to make videos and then share that with the outer community.
And then you’ll find that there are a lot of people who are wanting to hire you for developer advocacy for that particular thing that you’re doing, and sharing.
Ayan
Amazing. Well, thank you so much, Adriane for your time. I really had a fun time discussing everything with you. And I’m sure we will be getting you back in pretty soon for another episode. For now I’m looking forward to all the blogs that you will be sending our way for our community. So, thank you very much again for your time. I really had a fun time and we are probably going to see you again. Thank you so much.
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.
Ayan
Hi, Lars, how’s it going?
Lars
Hey, it’s going great. How are you?
Ayan
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.
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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.
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
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?
Lars
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.
Ayan
Do you have a book that you think everyone should read?
Lars
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.
Ayan
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?
Lars
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?
Ayan
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.
Lars
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.
Ayan
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?
Lars
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,
Ayan
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?
Lars
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.
Ayan
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.
Lars
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.
The 24th Edition of Developer Nation survey is now live and this blog post is your cheat-sheet to know everything this survey wave has to offer and how to make most out of your experience as a survey participant.
What is the Developer Nation Survey ?
If you have never participated in a Developer Nation survey before, this section is for you.
It is our most complete global survey that we have ever created for professional developers, hobbyists, students, and no-code software creators. It is intended to shape the key trends among developers and software eco-system for 2023.
When you participate in this survey you’re supporting the developer research which is used by companies and organisations creating developer centric products to provide for a better developer experience and as a bonus, you also get to win some amazing prizes and support the charities and causes you care about by donating to them.
When you participate in the survey you’re eligible and automatically enters to win prizes from a pool worth $19,000+
General prize draw: For every participant we have 250 prizes including:
2 x ThinkPad L15 Gen 3,
ThinkPad L13 Gen 3,
iPad Air,
DiY IoT kits,
choice of gifts cards or crypto,
Github CoPilot or Tabnine yearly licences,
IDE licences,
courses,
Swag bags,
cloud credits, and
tech accessories.
Special prizes for Developer Nation community members:
For our Developer Nation community members, alongside General Prize pool we also additionally have extra:
ThinkPad L13 Gen 3,
iPad Air,
swag bags,
$15 vouchers.
You can choose to join the community during the survey sign up process or by subscribing to our fortnightly newsletter at: https://developernation.net/subscribe . As a community member you’ll be part of 70,000+ developers around the world and will be getting regular updates about :
All this is powered by the survey results intended to help our community members grow in their career journey and connect with like-minded people.
ARVR prize draw:
As part of this global survey, we’ve a special section calling all Augmented (AR), Virtual(VR), Mixed(MR) and Extended(ER) Reality developers, designers and creators.
Let us know what do you think the future holds for creators of these immersive technologies which will only take 10 mins to participate and make you eligible for additional prize draw pool including :
iPad Air
ThinkPad L15 Gen 3
Meta Quest 2,
KODAK PIXPRO SP360 4K PREMIER Pack,
Crypto and Gift Cards
Check more about winners from previous surveys in the blog here .
Donations
By participating in the survey, you can also support a cause you care about by donating to one of the following organisation or non-profit :
Girls Who Code
CoderDojo
Free Code Camp
WWF
Raspberry pi foundation
You can read more about this in our last donation blog here .
So what’s Next?
The survey is live and will be running from December 8th 2022 till February 3rd 2023. You can pause the survey and finish it at your convenience, within the deadline.
It is available in English + 8 additional languages including Chinese Simplified, Chinese Traditional, Spanish, Portuguese, Vietnamese, Russian, Japanese, and Korean
Participate and let your voices be heard. We’re excited to learn what has changed in the developer world these last 6 months. Which tools and platforms are you using now and if JavaScript still rules the world of programming?
All these answers unveil along with the prize distribution with the 24th Edition of Developer Nation survey.
Thanks to the advanced camera systems and even LiDARs nowadays in our smartphones Augmented reality is subtly blending into everyday consumer life; you can actually see how a new Ikea couch or Apple Homepod will look in your living room before you decide and buy one. Companies like Meta (formerly Facebook) are building an entirely new world using Virtual Reality termed Metaverse where you can create virtual office spaces to have real-time meetings with your colleagues, play a game of basketball and even attend concerts.
AR augments the real-world scene by adding layers on top of your real world, whereas VR creates completely immersive virtual environments that need VR goggles or headsets to experience it. Both of these technologies started as the next chapter of the gaming industry but quickly found their way into other applications like Fashion, Interior Designing, e-commerce, Architecture and Metaverse. You no longer have to visit a physical store to experience how a new jacket or pair of glasses will look on you or a theme park in Florida to enjoy a roller-coaster ride.
Download the Aspiring AR/VR Developer infographic here!
The Developer Nation surveys are designed in a way that giving back to the community becomes an integral part of them. For each survey wave we run we donate 0.10$ to the favourite charities of our Developer Nation Community. The goal is to reach at least $2000 in donations.
During our 23rd Developer Nation global survey, we collected a total of 26,183 qualified responses, that means we were able to meet and surpass our goal by donating $2,618- and support the causes that you care about.
Though most of these organisations and NGOs are developer centric, helping people learn software development and grow in their career, we welcome more diversity in theorgs we are supporting . You can use the comments section below and add your suggestions.i
For the 23rd Developer Nation global survey, here is the list of organisations we donated to:
The mission of freeCodeCamp is to help people learn code for free. I’m personally a huge fan of the work they are doing and have myself learned quite a bit from there. A total of 7979 survey participants picked them for support so we were able to donate $798 to freeCodeCamp.
The Free Software Foundation (FSF) is a nonprofit with a worldwide mission to promote computer user freedom. A total of 5622 participants picked FSF, hence we were able to donate $562 to support their cause.
Women Who Code (WWCode) is an international nonprofit dedicated to inspiring women to excel in technology careers. We donated $528 to help support the cause of this wonderful inclusive organisation. They have many local chapters around the world, so if you’re a woman who is trying to learn to code or find some mentorship, the Women Who Code community and local chapter is definitely a place to look for.
A non-profit organisation on a mission to develop and scaling technologies to rid the oceans of plastic. A much needed cause to support in order to sustain the ecological balance or marine ecosystems. Our developer community has enabled us to donate $470 to them.
Ada developer academy offers an immersive and intentional coding school prioritising community over competition. It’s very welcoming and inclusive and we were able to donate $261 for their cause.
It really feels great to give back to the community in a way that can help them further their noble cause and create a more sustainable ecosystem for everyone to live and thrive in.
We’re truly grateful to our community members who have enabled us to do this and without your survey participation it won’t be possible so we extend our thank you and promise to continue to do this in future.
Rarely any software project today is built from the ground up. Frameworks and libraries have made developers’ lives so easy that there’s no need to reinvent the wheel anymore when it comes to software development. But these frameworks and libraries become dependencies of our projects, and as the software grows in complexity over time, it can become pretty challenging to efficiently manage these dependencies.
Sooner than later developers can find their code depending on software projects of other developers which are either open source, hosted online or being developed in-house, in maybe another department of the organisation. These dependencies are also evolving, and need to be updated and in sync with your main source tree. This ensures that a small change breaks nothing and your project is not outdated and does not have any known security vulnerability or bugs.
A good recent example of this is log4j, a popular framework for logging, initially released in 1999, which became a huge headache for many businesses at the end of 2021, including Apple, Microsoft and VMware. log4jt was a dependency in a variety of software and the vulnerabilities discovered affected all of them. This is a classic example of how dependencies play a huge role in software lifecycle and why managing them efficiently becomes important.
While there are a variety of ways and frameworks to manage software dependencies, depending on software complexity, today I’ll cover one of the most common and easy to use methods called “git submodule”:. As the name suggests it is built right into git itself, which is the de facto version control system for the majority of software projects.
Hands-on with git submodules:
Let us assume your project name “hello-world” depends on an open source library called “print”.
A not-so-great way to manage the project is to clone the “print” library code and push it alongside the “Hello World” code tree to GitHub (or any version control server). This works and everything runs as expected. But what happens when the author of “print” makes some changes to its code or fixes a bug?Since you’ve used your own local copy of print and there is no tracking to the upstream project, you won’t be able to get these new changes in, therefore you need to manually patch it yourself or re-fetch and push the code once again. Is this the best way of doing it, one may ask?
git has this feature baked in which allows you to add other git repos (dependencies projects) as submodules. This means your project will follow a modular approach and you can update the submodules, independent of your main project. You can add as many submodules in your project as you want and assign rules such as “where to fetch it from” and “where to store the code once it is fetched”. This obviously works if you use git for your software project version control.
Let’s see this in action:
So I’ve created a new git project namely “hello-world” on my GitHub account, which has two directories:
src – where my main source code is stored
lib – where all the libraries a.k.a dependencies are stored which my source code is using.
These libraries are hosted on GitHub by their maintainers as independent projects. For this example, I’m using two libraries.
hello – which is also created by me as a separate github repo
resources – which is another git repository in Developer Nation account
To add these two above-mentioned libraries as submodules to my project, let’s open the terminal, change to the main project directory where I want them to be located. In this case, I want them in my lib directory, so I’ll execute the following commands:
cd hello-world/lib
Add submodule with command : git submodule add <link to repo>
This will fetch the source code of these libraries and save them in your lib folder. Also, now you’ll find a new hidden file created in root of your main project directory with name .gitmodules which has the following meta-data:
Now every time someone clones the project, they can separately clone the submodule using following commands:
git clone < Your project URL >
cd <Your project URL>
git submodule init
git submodule update
OR:
This can also be done in one command as:
git clone <Your Project URL> —recursive, in this case
git clone git@github.com:iayanpahwa/hello-world.git —recursive
One more thing you’ll notice on GitHub project repo is in lib directory, folders are named as :
print @ fa3f …
resources @ c22
The hash after @ denotes the last commit from where print and resources libraries were fetched. This is a very powerful feature as by default, the submodule will be fetched from the latest commit available upstream i.e HEAD of master branch, but you can fetch from different branches as well. More details and options can be found on the official doc here.
Now you can track and update dependency projects independent of your main source tree. One thing to note is all your dependencies need not to be on the same hosting site as long as they’re using git. For example: If hello-world was hosted on Github and printed on Gitlab, the git submodule will still work the same.
I hope this was a useful tutorial and you can now leverage git submodules to better manage your project dependencies. If you have any questions and ideas for more blogs, I’d love to hear from you in the comments below.