Switch Statement

042: Ask for Forgiveness Not for Permission

September 01, 2023 Matthew Keller
Switch Statement
042: Ask for Forgiveness Not for Permission
Transcript
Matt:

Hello everyone And welcome to the switch statement podcast It's a podcast for investigations into miscellaneous tech topics

This is the first part of a show and tell where John shares a few entries in his Pantheon of programmer quotes.

Matt:

Hey, John. How are you doing?

Jon:

Hey man, I'm doing pretty well. How are you?

Matt:

I'm doing okay. uh, if people are hearing some echo, that is because I'm in my, the, the shell, the shell, well actually this is the old place,

Jon:

Oh,

Matt:

of my old apartment, so hopefully that's not too annoying,

Jon:

nice. Yeah, you're sloughing off your husk and moving to your new mansion.

Matt:

metamorphing into the new place, or I guess it's more like the hermit crab,

Jon:

Yeah, right. Um, so today we're doing show and tell, which

Matt:

show and tell, bringing it back,

Jon:

But heck yeah, yeah, this is an ancient format for us, although we did just publish an episode that was show and tell. So for the listener, it might seem like it's not ancient at all, but yeah, we have not done this in

Matt:

it's been years.

Jon:

yeah, we've been doing the format where we like read a book and discuss it, but for show and tell the way it works is each of us brings a topic and we just sort of discuss the topic and the other person reacts, I guess, or. Adds to the discussion. So I'm going first.

Matt:

the rule is defensively related to, uh, technology.

Jon:

Exactly. Which

Matt:

pretty, pretty expansive.

Jon:

yeah, it's very helpful because I, it can sometimes be really hard to think of a topic that's interesting, but the topic that I chose today is actually one that I absolutely love. Uh, it's programmer quotes.

Matt:

Ooh. Okay. Okay.

Jon:

Yeah. So, and I'm sure that we've mentioned a lot of these quotes and I'm sure also if folks are software engineers, that they've heard a lot of these quotes. But I thought it would be interesting just to kind of throw them out, discuss them together. Some of them are, you know, some of them are like old quotes, but are like super, uh, sort of salient today, which I find awesome. And some of them are just really fun and thought provoking and hilarious.

Matt:

Do you have any ones that are like, just like aged, like milk?

Jon:

Um, I don't think so. Maybe I ignored those because I was focusing on ones that I thought were like, surprisingly. prescient. Um, one example, actually, of a super prescient one is, from Edsger Dykstra, who, to me, Dykstra is kind of the sleeper best person in software engineering. Like he's definitely in my top five as far as just brilliant software engineers.,his contribution is completely unmistakable. It's Dijkstra's algorithm, which if you're talking about like compute time in the history of the universe, I'm sure a decent percentage of it has been spent processing Dijkstra's algorithm. It's popular in networking, mapping things, obviously. Anyway, let's jump into the quotes. The effort of using machines to mimic the human mind has always struck me as rather silly. I would rather use them to mimic something better,

Matt:

interesting.

Jon:

yeah, when I read that quote, I was a little kind of bowled over because obviously the popular thing today are these large language models that they're a big criticism of them is that they're, you know, quote unquote, not mimicking the human mind. They're just kind of. Um, I, I think there was a quote from Michio Kaku recently where he said they were glorified.

Matt:

tape recorder.

Jon:

Yes, glorified tape recorders. Yeah. Which is true in a sense. But it's also not really true at all, um, because there are obviously much, much more than that. Uh, so, yeah, I just thought that was interesting. I mean, that quote was made about 100 years ago, or maybe 60 or 70 years ago. But, um,

Matt:

do you think that Dykstra would approve of LLMs today, or do you think he would disapprove of them?

Jon:

That's an interesting question. Like, I think you would approve. I think they're, you know, they're taking us to places where we haven't been before, which is the ultimate goal in all of this. I don't think he would see it as the endgame, you know? I think he would see it as probably a stepping stone. And maybe I'm imparting my own philosophies onto Dykstra. Uh, but, yeah, I think he would see it as like a big leap forward

Matt:

It's interesting I forget who I was listening to, but they espoused an opinion that like, logic, like rigorous logic that computers have is actually kind of like a higher order,

Jon:

like humans aren't capable of that.

Matt:

exactly, exactly. These have this next level of rigor that human minds lack. And we see that in, in LLMs. And I think that that might be the spirit of what Dijkstra is getting at here. Where it's like,

Jon:

Yeah.

Matt:

there's so many ways in which the human mind just completely falls short, basically. So it's like, why don't we work on the things that, it doesn't do well today? Um, you know, because we have all of these minds, uh, you know, that are presumably doing what they have, you know, what their strengths are. Um,

Jon:

Yeah. Yeah. Yeah. No.

Matt:

in a way, I almost think he would, he might be like, These are, this is really cool, and this is like the greatest incarnation I've seen yet of attempting to mimic a human. But like, it still suffers from those other issues that I have with, like, these things that are attempting to mimic humans, which is like, it lacks this kind of logical rigor.

Jon:

Yeah. Interesting. I do think you're right that that's probably part of what he was saying in this quote is like computers are capable of performing these exact logical chains, which humans just don't have that ability at all. I mean, humans are these intuition creatures. We actually struggle to reason. We have to kind of dip into the slower part of our brain in order to actually do that. Um, So yeah, I think, I think you're probably right about that. Anyway, let's move on to some other quotes. Uh, here's one that I really like. This is from Martin Fowler, the dude who wrote the refactoring book that we went through. And I think we did mention this quote before, but I just want to throw it out again because I love it. Any fool can write code that a computer can understand. Good programmers write code that humans can understand. So this is something that... As a, you know, if you're early, if you're a junior programmer in the industry, take this to heart, you know, don't write clever code, write code that your team can understand, write the dumbest possible code that someone who's not even a very good programmer can like look at immediately understand. I think often we write, you know, quote unquote clever code to try to be efficient or try to write really fast algorithms, but a lot of times that is not that important and almost always it's important that your code is easy to understand.

Matt:

Yeah, I can't tell you how many times, like, I will read code that even fairly senior engineers will write. And like, in a way, it's like their, their seniority and experience is like, is actually what's... Causing it, but they, you know, they've seen all these cases. They're like, this was slow and a lot in like another System that I had so like let me optimize this now

Jon:

Yeah,

Matt:

And like you wind up with these really impenetrable like blocks of code Really hard to follow. It's like We don't even know if this is the bottleneck If you'll allow me to Bogart the quoting, Don Kinooth premature optimization is the root of all evil, uh, I really believe that, and this kind of, I think this is of a piece with, you know, your quote, where it's like, start by writing it so that it's like really easy to read, and then only like, only optimize it once you know that it's what's slowing things down.

Jon:

Absolutely. Yeah. Uh, next quote, Ada Lovelace, one of my favorite people in, uh, computer science. So she was 19th century mathematician and thinker. She was actually a contemporary of Charles Babbage, who we discussed in our last episode. Charles Babbage made the difference engine. Um, and I think this is kind of my naive point of view. I'm not a historian and I don't, you know, I don't fully know all of the figures in the history of computer science. But I think she was one of the first computer scientists. She was one of the first people to recognize that machines were more than just calculators. You know, they were reasoners, they could represent chains of logic. And she sort of recognized that that whole entire, you know, facet of science, like representing logical chains was a science unto itself, which I think is just a huge leap forward in computer science thinking.

Matt:

Isn't she thought of as the first programmer?

Jon:

Yeah, yeah. No, I think she is. I mean, a lot of what she wrote about and actually let me give her a quote because I think her, her quote is going to kind of underpin a lot of what we're about to say. The science of operations as derived from mathematics more especially is a science of itself and has its own abstract truth and value. So I think, you know, I sort of said this before, but I think she's, you know, coming to the realization that. There is this entire area of science, computer science, where the goal is to be able to represent logical chains. Um, and so many things stem from that, you know, ways of writing code, flow control for instance, and just various things that you can accomplish that go far beyond something like an abacus, where it's like an automated calculating machine. And she was one of the first people to realize this, uh, and, uh, yeah, she deserves a ton of credit for that.

Matt:

That's awesome, I never... I feel like she's held up as like, an important woman early in computer science. But it's funny because I feel like I've never heard anyone talk about like... What she has said.

Jon:

Yeah.

Matt:

Um, So I'm glad that you're bringing that quote out. Because I feel like, yeah, she's not given like a voice a lot of times.

Jon:

Ada, I've always thought Ada Lovelace was kind of a kindred spirit because she saw a lot of beauty and poetry in computer science. In fact, there's another quote, If you can't give me poetry, can't you give me poetical science? And I just love that she approached computer science from this, angle of like artistry and, and beauty and poetry. And like, cause that's sort of how I think about it. Like I've always thought of computer science as. Like, sure, of course, there's a rigorous scientific element to it, and in a lot of cases, there's a right and wrong answer. But a lot of what we do on a day to day basis, like writing code into a massive software repository, we are making creative decisions. You know, we're naming things, we're creating abstractions, and like, these are human decisions. These aren't like these binary right and wrong things. And I think Ada Lovelace was one of the first people to sort of realize that... That that's what this new form of science was going to look like. You talk about Ada Lovelace if you take computer science courses, but I think she's almost underappreciated.

Matt:

Oh yeah, no, I would say so.

Jon:

So maybe, maybe one or two more. Um, Grace Hopper, one of my, another hero of mine in the, in the computer science world, she was a Navy rear admiral, so she was a total baller in the United States military. And she was actually, I didn't really know this until maybe a few years ago, but she was one of the first creators of higher level languages. And, and what that means is like, you know, back in the day, folks used to, everyone knows that folks used to write on punch cards and all that. But what they were writing on those punch cards were individual instructions that were passed to a CPU. And that's an extremely laborious kind of tiresome process, probably very error prone, very hard to represent, you know, higher level abstract things. A higher level language is basically a language on top of all that that gets compiled into that. So this is where kind of the term compiler comes from. Grace Hopper was also one of the, um, She was one of the people that initially developed Linkers, which is a way of taking a bunch of units of compiled code and kind of turning them into one executable program. So she not only was like way ahead of her time in terms of thinking, computer science thinking, but also she was an implementer. Like she was a total boss. She just did these things and was a part of some of the most important early developments in software. Um, so just a couple of quotes from her. One accurate measurement is worth a thousand expert opinions. I'm a big fan of this one. Um, if you're trying to convince people of things in your day to day life or in your profession, use numbers if you can. Like, you just kind of argue with numbers. And if you're like me and sort of struggle to build compelling arguments with your words, rely on, you know, the underlying raw numbers to tell your story. Uh, another one, another quote from her that I really love, the most dangerous phrase in language is we've always done it this way. And I think this resonates hugely in the world of computer science, where when you're first starting out, a lot of what you do is just copy off of other people. And that's totally okay. But I think you need to kind of have a critical mind when you're doing that. Um, and just, just, you know, realize that if you're copying, you need to make sure that. What you're doing is fitting within the context that you're copying it into. So you might need to make some changes or rethink some things. Um, and then the final quote, also a Grace Hopper quote, um, It's, if it's a good idea, go ahead and do it. It's much easier to apologize than it is to get permission.

Matt:

Is she the, is she the ask for forgiveness, not for permission? Is she the source of that?

Jon:

I'm not sure if she is the source of that, but she definitely espoused that. And I think it bears repeating.

Matt:

That's amazing, that feels like the quote, like I don't know, I guess, I don't know if this happens to you like, or you hear a quote, and then you hear the original, and it's just like a much more like, wordy version of the, like, the more pithy version, like ask for forgiveness, for permission. This is tracking, like, okay, the timelines and unpith, the unpithification

Jon:

Yeah.

Matt:

with her being the first person to, said that.

Jon:

Yeah. No, I think she was just an ultimate pragmatist. And I am a huge fan of pragmatists, especially in the world of computer science, where there's so much ability to, like, not be pragmatic and kind of endlessly bike shed about things. I think she was the type of person that just like, quickly made decisions and just went with them and implemented things and that's the type of person I love.

Matt:

I think if you kind of like combine her quotes together, you kind of get something that is like a really powerful, you know, Like something that I've seen on, of like really talented engineers, which is like, you know, measure your stuff and like, just go out and do it. it doesn't matter If you're really junior, like if you kind of really understand the problem, like a problem, like you're trying to optimize something or like, you know, your, your, your app has this problem that you've noticed. Just understand how to measure, the problem. And then just, like, go and implement a fix for it. And as long as, like, you can come to your coworkers with, like, Hey, like, this is how I was measuring whether or not I was successful. And this is what I did. I would be very surprised if, like, Unless the way you did it broke a bunch of other stuff. They would be like, all right, how do we get this into production or something like that?

Jon:

Yeah. Just do it. I have a million other quotes, but I'll stop there. Maybe we can dip into this well again at some point. Cause I, there's something about computer science quotes that I just really like. You know, they're, they're all just these very, you know, crisp thoughts. And, uh, a lot of them are very thought provoking, but we can stop there.

Matt:

Let's, we'll take a quick break and then switch over to, uh, to, my topic.

Jon:

awesome. Looking forward

Matt:

All right, see you there.