Algorithms + Data Structures = Programs - Episode 19: Finding Your Way in Tech

Episode Date: April 2, 2021

In this episode, Bryce and Conor talk about getting started in tech.Date Recorded: 2021-02-06Date Released: 2021-04-02Category Theory for Programmers - Bartosz MilewskiEric Niebler’s range-v3 librar...yC++Now 2021Research: The Average Age of a Successful Startup Founder Is 45boost::algorithm::splitDemo of Conor’s 2012 Technical Stock Screening programProgramming Languages Virtual MeetupC++Now 2018: Ben Deane “Easy to Use, Hard to Misuse: Declarative Style in C++”Functional C++ for Fun and Profit by Phil NashIntro Song InfoMiss You by Sarah Jansen https://soundcloud.com/sarahjansenmusicCreative Commons — Attribution 3.0 Unported — CC BY 3.0Free Download / Stream: http://bit.ly/l-miss-youMusic promoted by Audio Library https://youtu.be/iYYxnasvfx8

Transcript
Discussion (0)
Starting point is 00:00:00 So, I've bought, like, six Lululemon headbands over the past week. That's my new obsession, is buying fancy headbands, trying to find the ones that are most comfortable, and then, like, I need enough to, like, wear one all the time because my hair is kind of crazy. I could get a haircut. Welcome to ADSP, the podcast, episode 19, recorded on February 6, 2021. My name is Connor, and today with my co-host, Bryce, we talk about getting started in tech. No, don't do it, man. I'm growing my hair out, too, to look like Bartosz Maluski in the hopes that looking more like him will give me an edge at understanding category theory. Some of my best memories are hanging out with him at C++ now and also watching my old mentor Hartmut uh hang out with him it's so Hartmut uh I think when we
Starting point is 00:01:07 when I was working for him back in you know 2010 to 2014 period I think Hartmut was in his 40s or 50s and like he he was not a he was not a young guy you, and he was not also, you know, a party animal. But I still remember one year at C++ Now where him and Eric Niebler stayed up literally all night. They pulled an all-nighter in the bar working on something. I think it might have been related to ranges. I think that was the year where there was somebody gave a talk that touched upon the idea of ranges and other languages and i remember being in the audience sitting next to eric and uh eric just watching the talk and he just says huh and uh then i don't know that these two events are related but shortly thereafter Eric started working on the ranges. That's just my recollection.
Starting point is 00:02:13 I might be completely wrong but I have so many fond memories of the C++ nows of old. Yeah, I'm jealous I didn't join the inner community until later. Yeah, well. Never met Bartosz. At what age did you learn, did you start programming? I mean, so technically, when did I start programming? I mean, in first year of university, it was my first programming course.
Starting point is 00:02:48 But then I sort of had three courses where I did coding in, and then that was it. And so I sort of paused that for, what was it, 2012 to 2014 when I started my job. Or not, 2012 is a bit. the point is is I like I took courses on and off in university and then when I started my job at um ggy now known as moody's um then I started programming for work and technically like when we talked about ti basic you were telling me about all these games, like, the extent of my programming was the quadratic formula. And like a few other small, like math programs. And like if else statements, like I didn't do anything fancy. And honestly, like, I didn't even know I was programming.
Starting point is 00:03:36 When I was working on the TI basic. Yeah, I don't I don't think I was either. And, you know, when I was a kid, I was raised by a single mother who's an absolutely great person. But she is not a technology minded person. She was a lawyer by day, yoga instructor by night. I never had a computer in the house. I never had a gaming console in the house either because she was of the mind that if I had a game console, I would be spending all my time playing games on the TV instead of going outside and smelling the roses. But I didn't have a computer in the house until I was maybe like 11 or 12. I remember when I was in elementary school, I knew so much about PowerPoint and Excel and Word that the librarian had me assist him in putting together, I think, tutorials for either other students or for the teachers on how to use Office. But I didn't have a computer at home.
Starting point is 00:04:49 The only computer I had access to was at school. And then even when I was in middle school, I didn't really have a computer. I think I got a computer at home when I was in middle school, but it was the same thing when I was in middle school where I just had the computer at school. And I don't know if I've told this story in this podcast, but I went to a very funky middle school. And I don't know if I've told this story in this podcast, but I went to a very funky middle school. It was called Talcott Mountain Academy. It's in Connecticut where I grew up. And it was this private school that was, it was a nonprofit. It was on top of this mountain. And the site had begun its life as a U.S. military base. It was a Nike missile site for, you know, like intercepting incoming Soviet bombers. And then I think in like the 70s or 80s, it got converted into a weather station and then it later turned into a
Starting point is 00:05:48 science center and then they opened up a school and this school was like very very non-conventional biology class would involve this like six foot tall instructor Mr. Noonan who was like this big tough guy he would go and take all of the, middle schoolers out into the woods to go like catch snakes or something. And, uh, we had, there, there was, um, there was a weather station there. So once a week we had a class where, um, we would produce a, um, uh, a weather report, like a TV weather report, because there was a film studio at my middle school. And so all the kids, you know, each week you'd have a different role. Maybe you'd be the director or you'd be the talent who was, you know, on the air, or you'd be the camera operators. Like it would all be run by the kids and we'd make like a five minute weather broadcast.
Starting point is 00:06:43 And we'd have like astronomy class because there were some pretty big telescopes, um, uh, at the, uh, school. The, one of the school's benefactors was, um, Alan being the fourth guy to walk on the moon. I know a lot of weird stuff about him because he was like the school's like benefactor and hero. But anyways, so to give you, I think this story gives you the best sense of the atmosphere and culture of the school. So it was maybe like 80 kids total from like kindergarten to like eighth grade. And they were very informal and sort of down to earth. And so the staff would often have their staff meeting in the morning, sort of like right in front of the kids, just like, you know, huddled.
Starting point is 00:07:35 And one morning the dean comes in and she's like, well, we need somebody to substitute for the, you know, the younger kids computer class today. And I like jokingly raised my hand. And I was a little bit of a troublemaker. And none of the teachers volunteer. So she looks around. She looks at me.
Starting point is 00:07:54 She shrugs and she's like, all right. And somehow I ended up teaching that class for the next like six months. Pretty much unsupervised. I'm pretty sure there was some supervision, but they were pretty much like, they gave me the freedom to sort of, you know, do what I wanted. And I showed the kids how to like the younger kids, how to use computers. And, uh, I don't remember what exactly the extent of my instruction was, but it like, this was the type of school where
Starting point is 00:08:25 a student could just volunteer to teach a class and the teacher would just be like, yeah, okay. Seems, seems fine. But, uh, that's one of my earliest memories of doing stuff with computers. But the reason why I brought up this whole topic is, uh, I didn't have a computer in the house until I was, um, 11 or 12. And I didn't really start programming until I was in, you know, my first or second year of college. I think you and I basically started programming around the same time. But I meet a ton of people in tech who tell me that they started programming at a very young age. You know, they had a parent that was tech savvy. And it's like one of the things that I think you and I share is that we both were relatively late bloomers. You know, we didn't start programming at age, you know, 10 in, you know, C don't know if it's a bias, but I think there's actually a lot more people like that. I have the same impression of that as I do of startups.
Starting point is 00:09:33 Like I read an article headline the other day that said average age of successful startup, 45. But most people's impression of startup founders are university dropouts that went on to found companies like Facebook. And even Bezos, I think, was in his late 20s. Maybe he was actually 30 when he did it. But there's a bunch of, like, young people that go on to, like, drop out of school and become super famous. But that is not the majority of people that are successful with startups. It's people with experience under their belts. And you hear about all these people that started coding at, you know, age seven on their, you know, Zed 80, whatever, some instruction thing that, you know, Jason Turner. For the Americans, that's Z80.
Starting point is 00:10:22 And yeah, we we had a computer. I looked it up. it was a company called e-machines and i i remember distinctly it was around grade three or four which would have been like 2003 or four and i remember for our science fair projects like the first thing that we ever sort of did i did on them was like make graphs in Excel for our, our, uh, experiment part. Um, but yeah, we, we never really used it much for word processing. I, I also did not have like parents in tech. Um, my dad was a journalist, so technically he did work on a computer for a living, but mostly just, uh, writing. Um, but yeah, you met, you fell way steeper and faster into like C++ than I did. Mine was a lot more gradual. Like my career, I arguably wasn't even like a full software developer for the first four years of it. So yeah, and I got started when I was a kid, I played a lot of
Starting point is 00:11:23 text based games called MUDs, which is basically like a multiplayer game, but it's all text-based. There's no GUI. And I got started programming because I was interested in writing my own MUD or I was interested in running my own MUD. And somebody that I knew who ran a MUD told me,
Starting point is 00:11:41 look, if you're going to run a MUD, you should like, it's fine to work with a coder, but you should be able to do all the coding yourself if you need to, because in a volunteer project, you can never really rely fully on others, he told me. So that's what inspired me to go learn to program. And I was working with this one guy and he suggested, hey, we should write this in C++. Most MUDs were written in a C code base,
Starting point is 00:12:12 but he wanted to do it in sort of what was at the time modern C++. This was before C++11. And when I was working on that project with him, he was using, I've mentioned before, the first piece of Boost I've ever been exposed to, which was Boost's algorithm for splitting up strings.
Starting point is 00:12:32 And then I started started contributing to Boost. Within the first three or six months of getting started with programming in C++, I was contributing to Boost. And that's not an indication that I'm some brilliant, skilled programmer. I was just very fortunate that the, the Boost community was very accepting of a, you know, an eager, you know, like inexperienced programmer who wanted to make contributions. which I was like contributing a big open source projects was very rapid but the time from when I started programming to when I actually became you know an experienced programmer it took me a few years as it does everybody um uh but yeah you you sort of had a not a slower start but it was like more of a trickle for you. For me, it was just like, I just sort of started doing this thing and it quickly took over my whole life. Whereas you, you know, you started doing it for work and then you, it slowly became something where you got more and more involved with, you know, open source and the tech community. Yeah. Yeah, it was, I just ended up, I pursued a different field, ended up at a company where you were a domain expert using programming as your tool, and then fell in love with the software
Starting point is 00:14:20 development side of things. And it's interesting because we sort of started talking just about random things, and now we're in the middle of our episode. So maybe we should turn this into a... I'm not sure what you think. I can cut this out if you think it's a bad idea, but advice for people that want to get into tech later because not super often, but a lot of times people... It's not so much about getting into tech yeah uh later because um not super often but a lot of times people not it's not so
Starting point is 00:14:48 much about getting into tech it's like you know i want to become an awesome c++ programmer you know where do i start or yada yada yada and i like i always feel weird answering the question because like i don't i don't think there's any one path and i don't really think i'm a good person to ask um but i don't know if you have thoughts good person to ask. But I don't know, if you have thoughts, you can share them. And like, yeah, we both started late. Yep. We're both in tech. So I'm sure there's a lot of people in that position right now. You know, what should. So I think that if you're looking to get into tech in particular, if you're looking to get into any sort of role where you're going to do, you know, programming or software design, I think the first thing that you want to figure out,
Starting point is 00:15:28 or I'm not going to say the first thing because it's actually hard to figure this out, but the most important thing for you to figure out long-term is what you actually want to be doing. And I'll explain what I mean by that. There are a lot of different roles that one can play in the world of software. I think like most fundamentally, it splits down into two basic categories. There are folks that are really interested and passionate in developing software itself. You know, sort of regardless of the application, what your interest is is in developing the software, writing the code, etc. And then the other sort of broad category is what you started out doing, Connor, which
Starting point is 00:16:20 is you want to use programming or software development for some particular goal. I work a lot in HPC and we often talk about the distinction between somebody that is a software engineer or a programmer versus a computational scientist that for like a programmer or software engineer, the primary focus is the code themselves. That's what you're interested in. That's what you want to be doing. Whereas if you're a computational scientist or somebody that, you know, is a domain expert who's in some field and you're just using programming as a tool, the programming isn't the primary thing that you're doing. You're using it as a tool to advance some other things, you know,
Starting point is 00:17:14 to build some application that you really care about, to do some science that you think is really important. And I think it's really critical for people who want to get into the field to decide where they fall here. Are you just really passionate about software development in general? Or is your passion in what you can use software to do? Yeah. Well, so say someone has identified that, and I should say, too, that I think, well, actually, I'm not sure if I think or if it's this is a widely acknowledged fact, but I think the number of individuals that fall into that latter category that are insert,
Starting point is 00:18:04 you know, title computational scientists. Like one example, while I was interviewing for Amazon, I was also interviewing for a consulting company in Toronto. And they were really interested in bringing me on because of my experience, like working as a domain expert, but someone who was more interested in the software development side and like introducing best practices and stuff like that because they had a client that was working in aviation and they basically had like a huge legacy code system of like people that were aviation experts that also had the exact same kind of code base like they were not software developers and didn't use best practice stuff but they were interested in bringing on people that were able to introduce that stuff. And so I think in so many industries, there are code bases out there that
Starting point is 00:18:49 are just experts using programming and software as a tool. But anyway, say you've made that decision, like what next? I assume most of the people that are asking it, they actually are less specific about like an industry that they want to go into and they just like i feel like there's a lot of folks that reach out and they're just mostly like they don't want to outright say it but it's like i want a six-figure job in tech um and they don't really ask themselves like what do they want to do um they just they want to be in tech and after after that point, after they've gotten a little bit of experience, then they'll maybe start to decide where do they really want to
Starting point is 00:19:29 take their career. They just sort of, they just want to get their foot in the door at a company with a good salary. Well, and, and I think, I think it's almost impossible for you to figure out what exactly you want to be doing. Like as you're entering a career in tech. And it's also something that's going to change. Like, I'll just give you an example before I actually answer your question. You know, when I was, when I started my career, I thought I was always going to be, you know, an individual contributor, you know, this prolific programmer, and I was not really interested in management or leadership. I just wanted to write code, and I did that for a few years. And I was working in HPC at the time, and there was a period where I was working on HPC applications
Starting point is 00:20:17 and where I thought that maybe my interest was going to be in becoming a computational scientist. I was working on some really cool climate in astrophysics simulations. And I thought I was good for that because I was good at understanding both what the physicists and climate scientists wanted and also understanding the, you know, I was good at communicating with both the scientists and the pure software folks
Starting point is 00:20:48 that I was working with. And I also sort of thought that I was going to be in academia my entire career until I decided to go leave for the public sector, or the private sector. And now I think I'll be in the private sector forever, but that might change. So I think it's always something that's evolving. I do think it's good for you to try to figure this out as early as you can, because it sort of helps you guide what your priorities should be and also what communities you want to become a part of and what technologies you want technologies you want to learn. Um, I think everybody has a different, um, uh, learning style. Um, for me, at least when I got started, um, what I did was I found a mentor. Um, and, uh, that mentor really shaped my, really has really shaped me as a software engineer. And for me, finding a mentor
Starting point is 00:21:49 meant I, when I was younger, I thought I was pretty, pretty smart and pretty slick guy. So I would always tell myself what I'm looking for in a mentor is somebody that I legitimately believe is smarter than me. Like, you know, I'm maybe a little bit of an arrogant guy. And so I want to find somebody that like I in my heart of heart, I really think this person's smarter than me and I can learn from this person. And having a mentor is just so valuable. You're not just going to learn the skills from them, but you're also going to learn a lot about, you know, career trajectories. And they're going to help you build the sort of network that you need. And I do think that having a professional network is one of the most valuable things that you can have if you're in tech because it gives you a lot of mobility.
Starting point is 00:22:44 And so trying to build out that network is really important. But for me at least, my advice to people is to try to seek out a mentor. And that can often be hard to do if you're new to tech. But when I was new to tech, the way that I got a mentor was I started contributing to the Boost project. You know, I came, I said, hey, I'm interested in, you know, fixing this bug. I was just filing bugs at first, but then it was fixing them. And as I spent more time in the community, I got to know people. And then I got, you know, close with a couple of particular people that I was working with, and then one of them became my mentor and gave me my first job. And so I think finding a project
Starting point is 00:23:35 that you're interested in contributing to, even if you feel like you're not qualified to do that, that can be a really good way to get started. I know not everybody gets started in open source, but I can really only speak to my experience, which is, you know, I did get started, you know, contributing to an open source project. And that did, you know, lead me to my first job when I was a college dropout. That's not going to be the case for everybody, you know. But at least for me, that was my path to success. So is there like a step one, two, and three in there of Bryce's how to make it in tech? And, and, you know, step three is getting a mentor. Step one is what finding an open source project
Starting point is 00:24:22 that you're interested in contributing to? Because the thing is thing is is like i'm sure there's a lot of people listening and thinking well you're it's it's made it sounds so easy like just go and find an open source project start to get to know people and then you know from step two to three like oh then you've got a mentor but i feel like a lot of times people that are working on open source etc et cetera, like they, there may not be a good opportunity or good individual there for mentorship or like, so is there like more concrete or is it, is, is at the end of the day, is this, it's very sort of, um, not hand wavy, but just like, it's, it's going to be different for every single person and you just have to find what you're interested in and pursue it and good things will happen. I think before you're in a place where you can start, you know, one of the reasons why you start
Starting point is 00:25:11 contributing to a project is that you want to get connected with a tech community and you want to start building a, you know, a professional network. But you're right, that is sort of like step two or three. I think before you do that, you have to figure out what your learning process is going to be. For me, I am not somebody who learns well in a classroom setting. Dropped out of college once, and then I subsequently got a degree. But college was never a fun experience for me. I never enjoyed college. I never really felt like I learned anything in the classroom. It always felt like make work. And I always joke the last place where I ever learned anything was that weird middle school that I described, which is a great school, by the way. If you live in Connecticut, you want to send your kids to a great learning institute at Talcott Mountain Academy. But so for me, the way that I learn, I sort of, I like to teach myself and I
Starting point is 00:26:16 don't go and like read a book about programming. I've never really read a book about programming except for elements of programming. I tend to like to learn by doing and to learn by example. So, you know, I'm not going to go and read through a tutorial in its entirety. I'm going to go and like get some example from the, you know, the tutorial and just start messing around with it. Um, when I was younger, my, my mom used to tell this story about how I, once I described to somebody how I learned as like a six-year-old, how I became a PowerPoint expert. And I told my mom, well, I just pressed every button to see what they all did. Um, so that's the way that I learned. Um, and so I know that like, if I need to go and learn a new thing, the way I'm going to do it is I'm
Starting point is 00:27:05 going to go and find some example I can use as a starting point and then I'll just sort of teach myself by doing but that's it's not going to be the same for everybody but once I discovered that that was my learning process that I was not somebody that was going to learn in a classroom that I was going to learn best teaching myself and by example and through doing, then I knew how I was going to build up my skill set sort of independent of whatever mentor I had or whatever else. Now, for other people, it might be different. You might be somebody that, you know, you're going to learn from a book. And so then maybe the first thing you want to do is find yourself some really good programming books.
Starting point is 00:27:50 Or you might be somebody that does want to learn in a classroom, in which case, you know, you got to look at, well, what's the best option for you? Do you want to do it in a college type environment? Do you want to do it at, you know, sort of like a code camp, code boot camp sort of environment? Do you want to do it at sort of like a code boot camp sort of environment? But figuring out how you're going to acquire your skills and it's going to be different for everybody, I think that's really your first step independent of anything else. You don't need to be
Starting point is 00:28:18 an expert to start building out your community connections, your professional network, etc. But I do think you need to have a learning process that is independent of your community connections, your networking, et cetera. Like you shouldn't go out there and try to find a mentor and expect that a mentor is going to take on responsibility for educating you. You need to take responsibility for doing that yourself. That's not the purpose of a mentor. The purpose of a mentor is to provide guidance and insight
Starting point is 00:29:02 and to help you make connections. Yeah, I think there's a like a fantastic piece of advice in there. Not that all of it wasn't fantastic, but specifically, you said you don't need to be an expert to get started. And I so many times in my career or life have sort of thought to myself oh like I'm gonna write a program to do that but I just I don't know how to yet so like I'm gonna wait until I take the course in school that teaches me the skills to to make that program and then and then I'll make it at that point and like specifically one of the things I always wanted to do was write a, um, a technical stock screening program. I used to want to be a quant before I became an actuary. A quant is short for quantitative analyst or quantitative something.
Starting point is 00:29:59 And they work typically on wall street and get paid a lot of money just to crunch numbers. Typically you have to go get a master's or a PhD. So I had spent a lot of time looking at like, you know, Yahoo Finance, Google Finance, and I was never satisfied with like the little, you know, screening options. Yahoo Finance was the only website that would color their volume bars the same color in an OHLC chart. So like red is for a down day, green is for an up day. And like there's usually volume at the bottom, which shows how many shares of a stock traded. But Yahoo was the only website
Starting point is 00:30:31 that like colored it the same color. Or maybe I'm getting that mixed up. Anyways, I thought I needed to go take like a graphics programming course. And I needed a bunch of more knowledge in order to scrape data from the internet. And long story short, when I was in China and I had sort of stopped going to
Starting point is 00:30:45 class you can't dance for like 12 hours a day while learning salsa so i had quite a bit of free time while i wasn't learning how to dance and so i just start i was just like well you know how hard could it be and so like if you're thinking to yourself oh i want to do this i just don't have the skill set like well what don't you have just, this sounds very flippant, but just, just like Google it. Like if someone said, I'll give you $10 million, if in the next month you can build, you know, something to do this, like, and you didn't know how, like, obviously you would give it a shot. Like, what would you do? Like your first step would probably to be like, to Google, like how to, how to build X or how to do X. And you'll be surprised like how far you can get.
Starting point is 00:31:27 A lot of the times you're going to end up banging your head against the wall. But yeah, it's very similar to one of my current mentors, Dr. Mason. He said, he was saying, oh, you can just go and start work on it. And I was like, no, no, I got to do some more research first. And he was like, no, no, no, no. You know, first make it work, then make it fast and then do something else. But his point was like don't tell yourself you can't do something and you need to go research more. Just start doing it.
Starting point is 00:31:50 And you'll be surprised a lot of the times, like how far you can get. they either underestimate themselves or they overestimate what qualifications they need to do a certain thing. Like what one common problem in tech, this is a particular problem for people from underrepresented groups, is people not applying for a job posting because they don't meet the qualifications that are written on the rec. The, oh, you know, I don't have a master's degree. I shouldn't apply for this job. Or, oh, I don't have five years of experience, so I shouldn't apply for this job because I don't check all the boxes. You know, it's always a journey. And having a degree or having a certificate, that in and of itself doesn't hold value. It's really about the skills that you acquire. And you can still do cool and great things even without a lot of experience, even as a beginner. There's a phenomenon that I often tell new members to the C++ committee, a story like this. Sometimes, you know, you're in a room and you have a question about something.
Starting point is 00:33:24 You know, you see something that you think might be a problem or you don't understand. and you have a question about something. You see something that you think might be a problem or you don't understand, and nobody else is asking that question. Everybody else is just sitting there nodding their heads, and you think, well, I'm not going to ask this because it might be embarrassing or it might be a dumb question. Everybody might know the answer, and so you don't ask the question. But sometimes that's the only room that there is. Like sometimes that room that you're in, that's the last room where there will be an opportunity to have that discussion. And yeah, sometimes that question or that comment that you have, you know, won't be, you know, brilliant and insightful. Sometimes
Starting point is 00:34:07 it'll have a simple answer. Sometimes you just will have misunderstood stuff. But sometimes, sometimes that insight that you had will be critical. And if you don't say it, there's not another room where somebody else is going to think of it and say it. Like in particular, I tell people on the C++ committee this. Like if you're in a room where we're reviewing a proposal that's going to go into the C++ standard and you have some question and you think, oh, this is a dumb question, I shouldn't ask it. Guess what? If everybody else in the room has that same question but they're thinking that,
Starting point is 00:34:42 that question will never get asked. And this principle can be applied to bug reports or code contributions too. Maybe you think, oh, well, maybe this is a bug in this API in this really popular library, but I'm just this new programmer. There's no way that I could have found some bug that these brilliant developers that made this really popular library wouldn't have found. I'm sure that it's just meant to work this way. Don't assume that. Don't assume that. Don't assume that just because you're inexperienced, that you can't have a meaningful impact. And you also, you shouldn't be afraid to ask questions or to ask for help or to say, I don't understand this. The further along I get in my career and the more and more responsibility that I take on, the more I find myself willing to say, I don't understand what you just said,
Starting point is 00:35:55 or explain it to me differently. Or the more frequent thing these days is I'll tell somebody, I don't understand what you're saying and I do not think I will understand it until you show me an example. Because for me, that's how I learn. And, you know, I know sometimes that there are other people in the room who probably understand exactly what's going on. But, like, I don't care if I look stupid. My only priority is for me to understand. So I'll stop and say, hey, I don't get this.
Starting point is 00:36:24 Like, maybe the rest of you get this, but please help me. Yeah, there's two things I want to say. I was like, and 1000% agree with what you're saying. The first is a quote. The second is about Chris Lattner. I'm not sure if I made this quote up.
Starting point is 00:36:38 I must have stolen it from someone. But there's a bunch of these quotes of the difference between a junior and a senior software engineer is, and then insert some, you know, anecdote. And one of them is that a senior engineer is willing to ask the stupid questions. And like when I first heard this, or maybe, like I said, maybe I came up with it, like it resonated so deeply with me because for the first four years of my career, when I started, we worked on this immensely complicated code base, you know, millions of C++, millions of lines of C++, 30 years old, used to be written in, I think it was basic, and then they ported it. So like
Starting point is 00:37:15 some parts of the code base you'd run into that never get touched, looked really weird. And for like the first two years, I just didn't ask questions in meetings because I just always thought that like it's so complicated. There's like there's no way that like, you know, I'm like there's no way everyone in the room is confused. It's just that I don't know enough yet and I need to be silent and like put my time in. And then towards the end of my my career at that company or stay at that company, like I was asking so many questions because I realized like everyone was confused. Everyone in the meeting except for like two or three people that were the ones working on the current feature were confused about what was going on because it was just so complicated. And there's a fear of, like you said, looking
Starting point is 00:38:01 stupid by asking a question. And you ultimately just need to get over that fear and start asking. I think I was talking about this with Guy Davidson. So maybe once again, I'm quoting Guy from this, the difference between junior and senior software engineers. But yeah, the second anecdote is that Chris Lattner, you know, famous for LLVM and Swift and a bunch of other projects mlir um if you've listened to him speak in talks or podcasts he says one of the things that he's perennially trying to do is make himself uncomfortable he wants to be the person in the room that like knows the least
Starting point is 00:38:37 because that's when the opportunity for learning is greatest um he says as soon as he's the one in the room that like knows the most he's going to be learning the least. And that's right now at least where he's at in his career. He said that he's always trying to learn from other experts and constantly trying to find those opportunities, which I think I identify a lot with that sentiment like trying to learn from the experts around me. When I started at NVIDIA, the team that I formed there, there was an offer for us to move to a different part of the company where the part of the company that we were in and that we are in
Starting point is 00:39:22 is the part of the company that develops the software that our team uses. And the offer was to move us to a part of the company where we would be surrounded by the people who use our software. And I said, no, I want us to stay in the part of the company that we're in right now because I want to be surrounded by the people who can answer my questions, not by the people who are going to ask me questions. Yeah, that's a good... There's another thing. Somebody told me something like this at C++ Now.
Starting point is 00:39:55 And I think in my mind, I think it was Louis Dion, but I don't know that that was correct. It might've been that somebody said it about Louis, but it was something to the effect of somebody said that one of the signs of brilliance in a person is a willingness to rapidly change your stance or position with little hesitation when you come to believe that you're wrong. Essentially that, you know, that brilliant people are unafraid to, you know, change their minds to completely reverse their thinking when they have been convinced that their previous thinking was wrong. Yeah, this, oh man. So we're already over, I think, 40 minutes now,
Starting point is 00:40:43 but I have to tell this story. I hope Ivan doesn't mention me mentioning his name Yeah, this, oh man. So we're already over, I think 40 minutes now, but I have to tell this story. I hope, I hope Ivan doesn't mention me mentioning his name, but one of the smartest people I've ever met in my life is an individual. I'll just say his first name, Ivan. He, he, he was the chief actuary at the company that I started my career at. And I, I one time got the opportunity to talk to him over lunch for a couple hours and was asking him about how he got started in the industry. And he's got so many great stories. You know, one of, one of them is, is as an actuary, you have to write all these exams.
Starting point is 00:41:15 And he had, um, come to Canada from Hong Kong. And so he rapidly started writing these tests because he wanted to get a job as a, you know, junior actuary. And upon interviewing at one of the companies, you know, at the time there was 10 exams, he had like one or two, and he didn't have any experience. And the person interviewing him said, you know, you should not, you should stop writing the exams, you're going to price yourself out of a job, like with zero experience in a bunch of exams, no one's going to want to hire you because they're going to have to pay you X and you're not going to be worth that. And so he said, oh, okay, my bad. So he stopped writing exams. Then he ended up getting a job at this company. And then another person said like, oh, like I see you haven't
Starting point is 00:41:57 written any exams recently. And he's like, yeah, you know, the interviewer told me not to. And he's like, what are you talking about? You should just get these exams done as fast as possible. And so then he went out and like wrote five in one sitting, which is like insane. Like people write one at a time, sometimes two. This guy signed up for five and passed them all. But the reason I tell you this whole story about Ivan is that in a meeting once, exactly what you said happened.
Starting point is 00:42:20 Some information changed and he had been going down some path of explanation and someone said oh no you've misunderstood and then in that in like a fraction of a second Ivan acknowledged that and then basically like turned 90 degrees and just said well if that's the case then everything I said before is false and we need to start talking about it like and I was just like I hadn't even registered what the like the new information that the person had said and ivan was already off like had had registered it you know baked it into his mental model and was off okay if that's the case uh like scratch everything i said before and now we're going
Starting point is 00:42:55 this direction i was just like holy smokes like the ability to do it like that fast um it wasn't even about the fact that he had like zero shame about misunderstanding it. It was the speed at which he did it. I was just like, oh my goodness, this guy's out of this world. And that's not to say that you always do that.
Starting point is 00:43:13 I'm not saying that that means that you, that when presenting with new information, you always change your mind. What I'm talking about is exactly what you just said, that it's the capability.
Starting point is 00:43:23 It's the capability that in the right circumstances, when you hear the right thing that makes you rethink something, that you are able to just instantly change your worldview with like zero shame. And like, you know, there are times when you don't do that, when you're, you know, you really have a strong conviction about something and the new thing doesn't change your mind. And there's also times when it's more gradual where you also shouldn't be afraid to say one thing on a Friday and then think about it over a weekend. And then on Monday, after giving it some thought, change your mind. But that ability to like rapidly shift too, it's one of those signs of somebody
Starting point is 00:44:09 that's really, really, really gifted. I've heard someone refer to it as flexibility of thought. It's that you have your thoughts and your opinions and whatever, your conviction and insert whatever it is, and then presented new information you're immediately able to digest that and like change your stance um and you're not just you know sticking to something because that's what you said last week um anyways we should we should start to wrap this up so we've sort of i do have a question for you though um what what is your learning love language? How do you learn best? I, well, so I'm not sure which way I learned the best. I know the way that I think though. And that's when I'm trying to learn something, I try to find the way I can think about it. And I
Starting point is 00:45:01 am a visual thinker. Um like right now, we started this in my meetup, we've started covering this category theory book. And so much of it is abstract, that like I'm having an immense, immensely difficult time like visualizing some of these things. When I think about algorithms, when I think about code, when I when I think about things, like everything is, is like the way that code flows, it's like a tree and every function is a node and if statements
Starting point is 00:45:29 and other function calls and loops, they all sort of have this picture in my head so I can just walk through a code base and algorithms are very visual, like reverse, like you can visualize reversing something, rotating, you can visualize rotating two elements
Starting point is 00:45:42 to the back of a list, sorting, like you can visualize a lot elements to the back of a list sorting like you can visualize a lot of algorithms and so i i think visually um so a lot of the times i really really like watching talks like for me the order is in terms of difficulty like reading is the hardest listening is the second hardest or the second easiest and then watching is the easiest like i usually tend to like try and read first get tired of that then listen to a podcast get tired of that and then watch
Starting point is 00:46:10 because like watching a lecture for me is like fun and a lot of the times if you have a great person that is giving the lecture or a great conference talk you know not all of them are amazing but every once in a while you'll just click with the person that's giving the talk and they'll have some visual or like they'll be walking you through the code and then things will click immediately so yeah your question was like how do i learn i basically just try and like do the firehose method of just like consuming everything and anything because i'm also the kind of person that like sometimes i need to hear something like four or five times in slightly different ways for it to register a couple different times now
Starting point is 00:46:47 i've pointed out that i learned about immediately invoked lambdas from ben dean's talk but i had actually seen them in a phil nash talk like three years earlier but i just my mind wasn't like ready to learn that thing anyway so i'm not sure that answers your question but i think it answers it so the question is or the the way to wrap this up, though, is how do we bundle all these different things that you've said? So, you know, finding a mentor, finding what you really want to do, not underestimating how much you can get done or accomplish. I would call the episode, like, finding your way.
Starting point is 00:47:21 Thanks for listening, and we hope you have a great day.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.