Algorithms + Data Structures = Programs - Episode 19: Finding Your Way in Tech
Episode Date: April 2, 2021In 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)
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
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.
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.
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.
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.
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
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.
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.
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.
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
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.
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.
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
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,
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,
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.
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
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
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,
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
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,
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,
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
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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.
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
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
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.
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.
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.
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
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,
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,
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.
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.
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
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
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
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
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.
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,
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.
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
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.
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
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.
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.
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
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
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
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
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
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
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.
Thanks for listening, and we hope you have a great day.