126. Functional vs Object Oriented Paradigms with Sandi Metz

On today’s show, we are joined by a very special guest, Sandi Metz, to talk about functional versus object-oriented paradigms. Sandi is arguably the most famous Rubyist and is the author of several books on the subject. She talks about how functional language, and in fact any language, operates within a paradigm that requires a certain type of thinking. So often, we can be quick to point out the flaws of a language, but that it usually because we are not using it for its strengths. While she is not the greatest fan of functional languages, she can see the instances in which they are useful and make sense over using OOs. There is a lot of divergent talk about which way the industry is going and how useful certain languages are to learn in light of changes. It is easy to get caught up in the hype, but Sandi recommends persisting with what you are passionate about and you will find that you have many transferable skills to use when learning a new language. For all this and more, join us today!

 

Key Points From This Episode:

 

  • Why functional language has its appeal in some cases.
  • Does functional thinking attract a certain kind of person?
  • Why immutability is an interesting concept in functional languages.
  • The common difficulties faced when moving from an OO to a functional language.
  • What functional languages do better than OOs.
  • In which situations Sandi would use a functional language over an OO.
  • You have to use a language for what its strengths are.
  • Some of the current industry trends and their trajectories. 
  • To have longevity as a developer, you cannot follow every fad.
  • The language that Sandi recommends learning. 
  • What you can do to become as developer famous as Sandi.
  • Some of the lessons that Sandi has learned from her fame. 
  • And much more!

Transcript for Episode 126. Functional vs Object Oriented Paradigms with Sandi Metz

[0:00:01.9] MN: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast, live from boogie down Bronx. I’m your host, Michael Nunez, our cohost today.

[0:00:09.4] DA: Dave Anderson.

[0:00:10.6] MN: Our producer.

[0:00:11.5] WJ: William Jeffries.

[0:00:14.8] MN: And our special guest.

[0:00:15.4] SM: Sandi Metz.

[0:00:17.7] MN: Great to have you. Sandi, thanks for taking the time to join us on the podcast, how are you today?

[0:00:22.5] SM: I’m good, it’s a treat to be here.

[0:00:24.9] MN: Awesome. We were just discussing or wanted to discuss some going down the avenue of explaining functional versus OO and some of the paradigms and the thought of – thoughts that you would have to think when you are using those different types of languages. And you're a specialist in OO, you’ve written a lot of books especially POODR, widely known. Let’s just – anyone has any thoughts on the conversation?

[0:00:48.8] SM: I’m not going first.

[0:00:52.9] WJ: But you're the one with the most interesting things to say, Sandi.

[0:00:55.9] SM: I don’t think so. I’ve written a lot of good OO and some really bad functional code and so I don’t really know that –

[0:01:06.2] WJ: Well, you know, you thought that it was worth [inaudible 00:01:09] , right? Sounds like you’ve invested some time.

[0:01:13.3] SM: Yeah.

[0:01:16.3] WJ: Double checking to make sure.

[0:01:20.6] SM: Okay, would you describe yourself as a functional programmer? No? I mean, here’s the thing, why is it, all right, now, I feel like I’m going to get tweeted at about this.

[0:01:33.6] MN: Hot takes, it’s hot takes with Sandi Metz.

[0:01:35.3] SM: Let me ask you guys, you tell me. If you had to use the adjective smug, to describe a language of a style of programming, would you apply it to procedural OO or functional?

[0:01:49.5] WJ: Functional

[0:01:49.6] DA: Functional.

[0:01:53.2] SM: Your words, not mine.

[0:01:57.4] DA: One of my favorite things is like, whenever I’m trying to learn words and you end up on [inaudible 00:02:02] and see what the community looks like. The [inaudible 00:02:07] community are really bubbly and friendly, nice. Python community, inclusive but a little opinionated. Scala community, my god, just writing dissertations in response is like –

[0:02:19.2] MN: Really?

[0:02:21.1] DA: I just asked you how I could make my function better. I don’t need three paragraphs-

[0:02:28.2] MN: Oh no.

[0:02:29.5] SM: And so why is that? Is it something about the style, the way the language needs to be written that draws people, who a certain category of people or –

[0:02:40.5] DA: Like certain rules. There’s certain rules. Function [inaudible 00:02:43]. There I said it, I said it. [inaudible 00:02:52] inputs some outputs, given those inputs [inaudible 00:02:56]. So, it’s like nice to the test, that’s my attraction to function.

[0:03:02.8] SM: I definitely noticed that.

[0:03:04.0] DA: It’s so bite sized.

[0:03:06.8] WJ: I bet, that’s a pitch for it, what is it about the functional programming community that tends to attract people who might be of a [00:03:15]?

[0:03:18.0] MN: I don’t know from experience because I don’t think I’ve ever stocked overflowed any Elixir related projects, but I do think that it may come from where the language derived. When we say the same for Java developers that they’re not. I think Java can be also kind of mean in the community versus Ruby, is there any thoughts on that?

[0:03:38.9] SM: I mean, Java’s so big, it feels like every kind of programmer in the world is out there somewhere in Java land.

[0:03:45.1] MN: Right.

[0:03:46.4] DA: And same thing with [00:03:47], it’s hard to say it’s a community. It is a thing that exists and we all have, whether we want it or not.

[0:03:56.2] SM: I mean, it was interesting that you mentioned Elixir as an example, right? Because Elixir came, like Jose Valim is a super nice guy and they came out of Ruby land. I mean, in some ways, just like every time like every business you go into, all the rank and file, the culture of a business comes from the top. Whoever started it and was the boss and it has all the power they hired people like them and they hired people like them, right?

In the end you get either a bunch of really nice people or a bunch of jerks. And certainly, the Elixir community reflects his personal style which – right? Then, that’s not. It’s not you know, that’s a counter argument to my thought that it was something about the thinking style that functional requires of you that draws a certain kind of people.

[0:04:44.5] DA: Right.

[0:04:46.5] MN: I think it does, the lab, you mentioned before, Elixir does have a lot of Ruby. I think people who are interested of functional programming that know Ruby would dip their toes on Elixir I think before other programming language because it eludes to the similarities of the languages between the two.

[0:05:04.9] SM: Are you suggesting it’s Ruby’s influence that makes the Elixir people be so nice?

[0:05:08.6] MN: Yeah, I think so. I think it’s the influence. Because I think it’s – because Java could have all sorts of different personalities but Scala, the rise from like Java I guess I’m going to say and maybe they just you know, they get angry as they use more Scala, maybe. I’m not a Scala engineer myself.

[0:05:27.7] SM: Before we all get in trouble here.

[0:05:31.7] DA: This is just all [00:05:32].

[0:05:34.6] SM: I mean, there’s that whole thing. I think that idea and I don’t know who said it, it might have been the notion that there’s a whole bunch of rules in functional. And certainly, it’s not true for every dynamically typed OO language. But certainly, in Ruby, the whole sort of bottom line is there’s lots of ways to do things.

You know, my joking answer to every question I ever get about OO is, “it depends.” I don’t think that’s a thing that the functional people would say, right? There’s no, it depends.

[0:06:01.1] DA: It doesn’t kind of have [00:06:02]. So, don’t ask me [inaudible 00:06:06].

[0:06:08.2] SM: So, here’s where I wanted to look at functional, right? I got intrigued by the idea of immutability. Because, whether or not one would use the word smug to describe a while category of programmers, despite that, we can recognize a good idea when we see it. Right? The value of immutability is huge. My OO like now my first goal, every time I create a new object, every time I think of creating a class so that I can have objects, I want the objects I create to be immutable.

I’m going to treat creation is free and I’m going to not mutate the objects I make. And that doesn’t mean I don’t get to do OO because I want that you know, the functional languages seem to me and again, this is my I don’t know, right? So, I could be totally wrong about this. They seem to want – it’s like, you know, pipes and filters, data’s passed around to rigid functions which are pure, right?

To me, the OO applications are like I’m creating a play, I’m creating characters, I’m casting – I’m making a movie and its art, right? It’s not science, it’s art. And so, stealing some of the rigor from the science people to make my art more dependable was a very attractive idea to me and I am not too proud to steal things from them, even if I don’t want to write functional languages.

And those things, that was super – that has, like I’ve tried to write – I’ve written a moderate amount [inaudible 00:07:48], a little bit of Elm. Like I spent a summer writing Elm. And that was really interesting to watch like what my tendencies were, how easy it is to write bad OO in a functional language. Absolutely bash. It was really hard to avoid my tendencies to do – I was trying to remake it in my own image.

[0:08:09.9] DA: Right, yeah, yeah.

[0:08:11.7] SM: I remember, I would take my dog for walks and walk around the neighborhood thinking, “how can I do this by recursing over a list, how can I do this by recursing over a list?” It just seemed impossible, right? I did get better at that, but it really took just absolutely refusing to follow my instincts. I mean, usually rules I knew, right? I got a recursive list. There must be some way to solve this problem.

[0:08:41.0] MN: Because it solves everything.

[0:08:43.1] SM: Well, when I just insisted on dealing with you know, operating, walking over lists to do things like if I insisted on it, I always found a way, but it was often quite painful to figure out how. I mean, I’m really sympathetic to like the complaints that people, that OO programmers are going to functional and just writing bad functional by trying to make it do objects. Yeah, that would be me.

[0:09:08.4] DA: It [inaudible 00:09:08]. I think.

[0:09:12.3] WJ: What do you think the functional programming languages do better?

[0:09:17.6] SM: I mean, the short answer would be, I’m probably not the right person to ask. The longer answer would be, if I had a problem that was big, an app that was big, that had a lot of concurrency, where I need you to do many hundreds of thousands of tiny things very quickly, that wasn’t like you know, where I had the threading issues, I would look at a functional language.

I would look at go or a functional language to do that. They’re too slow, they’re dynamically type stuff. Or if I wanted, you know, for many years, I worked at Duke University Medical Center and this is horrible. I’m going to say it on your podcast. We had this criteria that we would use about how careful we had to be about code. Because you know, sometimes, you can write pretty good code and let the phone ring if it’s wrong.

But when we were doing stuff that involve the OR, our criteria would be, will babies die? If babies will die If we do this, right? Or if rocket ships are going to blow up, right? I mean, it’s really people will die will be the more probably palatable generic term for that. And so you know, if I had to really 100% know, not only that it was going to work but that no programmer could screw it up. I’m – it was a matter of life and death, I probably wouldn’t use Ruby.

[0:10:36.2] DA: Right, yeah. Because like the [inaudible 00:10:38] attitude [inaudible 00:10:39], okay. It’s dynamic. It's [inaudible 00:10:41] I follow method [inaudible 00:10:45]. It’s like a bit risky early on, it’s assurance beforehand.

[0:10:50.4] SM: I mean, yeah, I feel like I can write Ruby, that’s 100% reliable. You don’t know what’s going to happen in the future. And if lives depended on it, I would want a language that was less fun and easy to write in. But you know, the functional languages like I don’t know if all of them say this, I suspect they do, certainly in Elm, it felt like if you could get it to compile then it was going to work. It couldn’t be wrong if you compile.

[0:11:19.1] DA: You got this niche.

[0:11:20.9] SM: Right, that’s super interesting because that’s not true at all in Ruby, right? Like lots of things, we’ll parse that won’t execute, right? That are not going to work at run time. But in those functional languages, I suspect. One of the things I notice was how I felt comfortable writing many fewer tests.

[0:11:43.8] DA: With [inaudible 00:11:43] types?

[0:11:44.6] SM: Yeah, with the language of types because the compiler was acting like a unit test for types.

[0:11:51.0] DA: Yeah, your contracts are there.

[0:11:52.6] SM: Yeah, there were categories I’ve tested, I write in Ruby too, to confirm that the API’s are following, the contracts exist and you don’t have to do those, right? I’m sorry I’m using Ruby, I don’t have to write all that down in the run time code. New people can come in and read your Ruby code and understand what the app does by reading the code and that can be impossible and those languages that are like you know, Klingon with math.

[0:12:22.1] DA: It’s interesting point about kind of like cross pollinating [inaudible 00:12:25] the comfort zone and like going from a dynamic to the assembly type. [Inaudible 00:12:33] functional language. There are totally ideas that exist in one paradigm or another that are valid and very useful. Why not? Let’s do that, let’s not –

[0:12:46.7] SM: I could just do that, that would work. I can have that.

[0:12:49.3] DA: Side effects are awful, let’s get rid of them.

[0:12:51.5] SM: Yeah, let’s stop. I mean, it’s exactly the same kind of thing that we were talking about in the last episode with like JavaScript letting you write over a method just by variable assignment. Getting those – all the languages come with a paradigm that expects you to behave in a certain way. You know, we’ll be into you if you try to bend it like you can’t really try to make JavaScript be like Java or Python or Elixir or Elm or whatever, right?

Those are the most annoying programmers, right? The ones in your shop that want, the language you're using to actually be a different language, right?

[0:13:26.9] MN: Surprising.

[0:13:28.4] SM: Yeah, exactly.

[0:13:29.2] DA: [ Inaudible 00:13:29] doing surprising things or going outside the box and it’s like, “no,  we have a nice box here, pleases stay inside.”

[0:13:35.9] SM: It’s like dude, you’re here, if you don’t use a language for its strengths and all you get is just weaknesses. Don’t buy a language and just have its weaknesses. I don’t’ know. You know, there’s a bunch of you know, there’s books about like learn 12 languages in 12 weeks or whatever.

There’s a lot of people who spend a lot of time getting a really broad base of the language. You know, getting exposed to lots of different things so that they can do some. Get some gestalt of all the possible things that you might do. I would probably be better off if I did more of that.

Every time I go away to another language, I’m like, “hmmm, that’s interesting.” It sort of expands my thinking a little bit and definitely there’s sort of treat object creation as free and do immutable objects. It changed my OO and I’m like – now when I’m teaching, I teach that, I tell people.

You know, old people often don’t do that but they don’t do it because they can’t treat object creation free because they have like 14,000-line objects, right? There’s all kinds of other things wrong with how they’re using the language that prevent them from adopting these techniques that would make everything even more interchangeable and easier.

[0:14:48.2] WJ: So, what trends have you seen in the industry? Do you think that people are moving away from OO and toward functional? Do you think that that’s [inaudible 00:14: 57] and people at the time? Do you think that it comes in cycles? What’s your perspective?

[0:15:04.7] SM: I’m a cycle kind of person. Here’s the thing, right? What do businesses want? They want the most function they can get for the least amount of money. And whatever languages can win that battle are going to survive in long term. Languages that – maybe have a lot of support in the community. And so, the functional languages like most of them, they’re super reliable, but they’re hard for people to come in and read. If most of the cost of code is in the reading then those are premium on reading those languages that don’t tell you a story.

Again, I’m not the right person to ask, right? Because I’m OO, OO, OO. I don’t want to imagine. It feels to me like there’s a place for everything and different problems need different solutions and you’re just trying to decide what you’re willing to pay like what tradeoffs do you want to make for the problem that you have?

[0:16:00.5] WJ: have you seen people moving away from Ruby or is that –

[0:16:06.1] SM: There were two different news articles I read that Google offered me in my fed because I read this stuff, right? I did not pick these things, they got delivered to me from the big internet and the sky.

[0:16:15.8] DA: I feel like I have some of those too [inaudible 00:16:16]. Oh, like Python?  Python’s so, [ inaudible 00:16:24] my gosh.

[0:16:26.5] SM: And so, like on a Tuesday, I got an article that said, it was titled – I think the headline was like, five programming languages you should not learn in 2020 and Ruby was on that list, this was on Tuesday. On Wednesday, I got a different article from a different like tech place that was like, five programming languages you should definitely learn and Ruby was on that list, right?

I mean, Ruby has never had – I don’t know that they’ve ever – have they cracked 10% on any of those metrics ever?

[0:16:58.6] MN: I don’t think I can recall –

[0:16:59.7] SM: Like even in the hay day of Rails. And so, then the question is like, okay, all the cool kids are gone, they are, right? All the early adopters have moved on and early adopted something else, they early adopted themselves away when Go came out or you know, that was two generations of software ago. I mean, the real question is language like Ruby, is it worth learning, is it worth knowing, is it worth staying on?

I don’t really see a going away, I mean, I’m going to shut up in just a second. Here’s the thing. You should know, if you want to keep a job, if you want to stay put. I’m 62 years old. I’ve been programming, I’ve been living in this business since I was 20, I’ve been writing code for a living. I started out writing Cobol. You know, a little Fortran. I wrote a little whatever that language we used on IBM mainframes, right? I was good at DOS once, right? Like all the things that happened before probably most people listening were born I did them all and I’m still here today.

How do you stay, how do you make yourself so that you catch the next wave well enough to stay employed? I mean, you can’t follow every fad and really, right? All you need is like you need to understand how dynamic OO works, probably need to understand how static OO works. Probably need to know shells language and a little bit about bash or whatever., right? You probably even need to be able to script some things, probably need to know a little functional.

Whatever functional language you choose and for me now, I’m just like, “well, I know, it’s just syntax.” Do I leave ruby when it’s just syntax and I could just get a job doing something else. I don’t know, maybe I’m wrong about that, maybe that –

[0:18:39.9] DA: I think that’s true. Definitely I get that. That resonates with me a lot. Being like they sell [Inaudible 00:18:48] choice? [inaudible 00:18:51] next one to be working on. You have to have that mindset Okay, today I’m a Ruby engineer, next month I am front end. Honestly [inaudible 00:19:06].

[0:19:14.3] SM: And not so dogmatic.

[0:19:16.3] DA: Yeah.

[0:19:17.0] SM: Right? I mean, we have our preferences, but that doesn’t make them the one right answer.

[0:19:24.4] DA: It’s your favorite answer though.

[0:19:33.0] MN: I mean, I started out programming in Java and that was introduced to Ruby later in life and asked myself like, “Why didn’t I learn ruby first? It is a nice language to read and write.”

[0:19:44.1] SM: how did you learn Java? Did you learn java, did you learn it at school or did you learn it on the job?

[0:19:48.0] MN: I learned in the school and then I got a job in Java and then I’ve been OO since. It was Java then I went to Ruby.

[0:19:56.4] WJ: Do you feel like you have to sort of you know, represent and defend Ruby as like kind of a – maybe the arguably the most famous Rubyist?

[0:20:06.3] SM: Well, okay, that’s again, I’m going to beg that question. I mean, people seem to assume that I have some inside track on what’s going to happen – knowledge of what’s going to happen in the future, which I do not. So, I get asked a lot by people who are – want to write Ruby but are afraid they ought to be moving along.

I sort of keep up with the stats and it goes up and down on me and yeah, I don’t feel like I need to defend it, I mean, here’s the thing. I wrote, it was many years, I’d written Ruby a long time before I wrote ruby longer than I wrote Smalltalk.

If I had my way, we’d all be writing Smalltalk, right?

[0:20:45.0] DA: Are you [00:20:46]?

[0:20:47.1] MN: Just Smalltalk?

[0:20:48.4] SM: It does not feel like there’s an audience for that work. I mean, Smalltalk is, you know, I mean, the conversation we had about like how the way a language works, teaches your brain how to think about what – how to solve a problem. Like everything I know about OO, I learned from like Smalltalk. And then Ruby let me do that, let me express myself the way I wanted to express myself because it’s just like Smalltalk. It’s a little. I mean, it’s not as perfect as Smalltalk.

It’s pretty good, right? I’m very happy in Ruby and so, you just –

[0:21:31.5] DA: I mean Smalltalk lives on, right? It’s influenced so many –

[0:21:35.0] SM: It did. In influence, it does.

[0:21:38.4] WJ: Now I’m worried that Ruby is going to go Smalltalk and –

[0:21:44.9] SM: I mean, you know where I would go right now, I’d go to JavaScript. I would dive, I would go full on in java script and I’d figure out how the things I wanted to know about it and because I think you can write really good OO in JavaScript. And so, if you could manage to get aligned with people who had OOE problems that you could solve in JavaScript, yeah, why not?

Just getting better and better, right? I mean, it’s like every language has got like history and it’s got backward compatibility stuff that it has to do with like, there are certainly probably decisions they might make differently now but who knows, I don’t know. Maybe the designer –

[0:22:18.4] DA: I think the most wild thing about JavaScript is, you can just [inaudible 00:22:24]. Not even produce your wildest fantasies [inaudible 00:22:23] in to existence. Maybe we’ll have like an optional chaining and rigor, you know, in 2020 or you could have it today, just by putting in the plugin. Okay great. Thanks, bye.

[0:22:45.3] SM: Okay, I’m old enough and have had so many problems maintain it. Like porting applications to new releases of the supporting software that what you just said terrifies me. I always thought, “ whose going to fix that later when it doesn’t really come true?”

[0:23:04.0] DA: I mean, that’s fair. There’s definitely like arguments for [00:23:07]. But if the possibilities and what that. But I went to [00:23:14] recently and they’re like, they found 4.0, maybe we should consider [00:23:19] because I thought 3 was huge train wreck. They changed and nobody wanted to be there but eventually they came around. Now it’s good but you know, [0:23:34] circle never happened. 

I think two, there’s whichever [00:23:36]. They’re there forever.

[0:23:40.6] SM: Either we’re just wrong and probably shouldn’t be programming or there’s a language that we’re going to love. Can you guys imagine not being able to find a language? No matter what, if every language that you’re aware of today went out of style and disappeared? Is it conceivable that there wouldn’t be some language that would just be the coolest thing ever?

[0:24:00.4] DA: Impossible.

[0:24:01.9] SM: It’s impossible, yeah. It’s going to be fine. Just do what you like and pay attention, learn the things, but don’t get side tracked by the news because that’s all it is.

[0:24:13.9] DA: Getting those clicks. I totally look at those articles [inaudible 00:24:35].

[0:24:24.8] SM: I have that same thing. I’m just encouraging you Google. Sometimes I go into incognito mode to read them.

[0:24:34.3] MN: Just to make sure that they get their impression?

[0:24:36.7] SM: Just to try not to get them fed more for me.

[0:24:42.5] MN: Google knows all.

[0:24:43.4] DA: They’re off the trail.

[0:24:45.9] WJ: So, how do we get as developer famous as you?

[0:24:48.6] SM: Well okay, there’s – why don’t you define what developer famous is?

[0:24:53.3] DA: For the layman.

[0:24:56.1] WJ: To me, it seems like kind of the perfect kind of fame because you have community where you can play a celebrity, everybody loves you. You can make a lot of money and have a lot of impact on people, but at the same time, when you go to grocery store and nobody is there with paparazzi, sounds kind of great. Is that what it’s like? Is that what your life is like?

[0:25:19.3] SM: Yeah, just like that. Okay, I want to first take issue with the make a lot of money, yeah, we wish. It’s hard for me to even talk about this as you can tell because I’ve like stuttered four times already and I didn’t say anything.

[0:25:33.4] MN: We’ll fix it at post, that’s fine.

[0:25:36.9] SM: Because what is it? Are you special? Am I special? Because I don’t feel special, I’m just like a schmuck right? Like we paid attention and we tried to learn and I’m better at things than I used to be. And the one thing, it’s so true, when I go to conferences, certain conferences, not all conferences so I go to some conferences and no one has any idea who I am, but there are certain Ruby conferences we want, Ruby Rails or even the PHP conferences.

I can’t walk down the hall and get to the bathroom. I can’t even walk around because people will want to say hi to me and get selfie sticking with me. And that is a very weird role to play. That’s exactly what it feels like and I’m not complaining because it feels like such an honor. I feel so buoyed up by the esteem of people that I worked really hard at trying to produce something for that would be useful and the fact that they found it useful is incredibly rewarding.

It’s really wonderful, but it’s also not real at all. I don’t want to seem like I’m complaining about people. You know that thing where you go to conference and all the famous people are standing in a little circle and they’re having a conversation in the hall and you wish you can hear them and it seems like all seem really smart and funny and you wish you were part of that circle, but there’s no way to get in it.

[0:27:13.5] WJ: This literally happened to me with you. I spoke in that conference that you were speaking at.

[0:27:18.4] SM: Dang it.

[0:27:19.1] WJ: You were at the cool kids table with a DHH, and I was sitting at a different table and I kept on looking at –

[0:27:26.6] SM: I don’t remember ever being in the table at DHH. Was I really?

[0:27:31.2] WJ: I didn’t, yeah, it was the –

[0:27:33.9] SM: I don’t ever remember talking to them at that table with me.

[0:27:36.1] WJ: Maybe you guys were [inaudible 00:27:37].

[0:27:42.3] DA: They were about it.

[0:27:43.4] WJ: Rails conference.

[0:27:45.5] SM: Well, it’s that, it’s a thing where –

[0:27:49.4] WJ: But I was starstruck, I remember like –

[0:27:55.7] SM: Yeah, here’s what we know right? You should just go talk to those people because let me just say this.

[0:28:01.5] WJ: I tried with you [inaudible 00:28:03].

[0:28:06.4] SM: Yeah, I feel keenly my obligation to be what people – again, language is really hard here. There’s a way in which I represent your best self, right? I represent your aspiration and it’s not really me, that’s the fact that people don’t really know me and they’ve just read the book and there’s that level of isolation which makes me seem like smart and other. There’s a way in which that people want to be told their own story.

They want to be reassured that they’re smart. They want to be – feel like they have a place in the world and there’s a way in which the slot that you put like an author in, like you’ve cast – the authors get cast in that role. I believe this to be true because I cast other authors into that role.

[0:28:54.8] DA: [inaudible 00:28:54] for the author.

[0:28:59.5] SM: There’s a woman named Rebeca [inaudible 00:29:00] who someone knew and she reviewed POODR and I had read her books and she – bless her, she wrote me a couple of emails like she was trying to be sort of friendly and I couldn’t even talk to her. I was so starstruck. I couldn’t – I was afraid that she felt like I didn’t like her, right?

I mean, I know how that feels on the other side. Most of my interactions with authors are that way and then I became one. And I saw people starting to do it to me and so then from this side of the fence, as you guys will all know when you write your own books. Then what you have to do is be super kind, you have to treat people the way you wish you would want to be treated yourself.

[0:29:46.0] MN: A golden rule.

[0:29:46.3] SM: As that sounds, I know.

[0:29:47.9] DA: One of the rules of thumb that I really appreciate from [inaudible 00:29:51] where they’re like, “okay, if you’re not in the conference.”  [inaudible 00:30:00] If you’re forming a circle as one does often having a conversation, keep it open.

[0:30:11.8] SM: Yeah, leave a spot. I’m super conscious of that when I’m out. I’m always leaving a space and looking for people who are hovering. Because I hovered and never found a way to get in and now like, the great, okay, this is the ultimate answer to your question, William, about being developer famous.

What I have now is power to make things be the way I want them to be and that means that there’s always room in the circle for people to join us, that means no one can be mean in the comments of your blog post because I’m going to mallet you in a heartbeat. We’re not, we’re happy. I get to make the world I want because people want to talk to internet Sandi now and so that means I can like set the boundaries for how that, collegial and friendly and safe that conversation is. That’s really cool.

[0:30:58.1] DA: Yeah, this is like super power in there. It’s like super hero.

[0:31:02.5] WJ: I’m sold. I’m need to write a book then I’ll become famous. It does seem though like it has to be good, you can’t just write it.

[0:31:13.9] SM: Well you write the book that you wish someone had given you when you were younger.

[0:31:17.7] WJ: That’s a good one.

[0:31:18.6] SM: That’s what I wrote, right? You write the book. If you know anything now that you didn’t use and this is for everybody, right? Do you know something now that you didn’t used to know? Well, the answer to that is pretty much always yes. Then write that book. Tone matters, you’re explaining it to your younger self who is – doesn’t know very much but is eager and motivated and wants to learn. They’re not stupid, they’re just ignorant, right?

They’re young. That tone really matters, super interesting, right? It does. People know if you’re condescending to them. Don’t be condescending, people will love it. It’s been very gratifying; I have to say. I’m a little dyslexic so writing is really torturous for me and so it was – made it all worthwhile.

I didn’t think anyone would ever read it and then people did. How cool is that?

[0:32:03.5] MN: That’s awesome.

[0:32:05.5] WJ: I think I’m too young for this one.

[0:32:10.1] SM: Time will happen.

[0:32:11.4] DA: Little baby William.

[0:32:15.2] MN: Awesome. Sandi, how can people contact you?

[0:32:18.1] SM: I am @sandimetz on Twitter and I have website, sandimetz.com, there’s all kinds of ways you can get in touch with me there. Do that.

[0:32:30.7] MN: Yeah, you have 99 bottles for sale, the second edition coming soon.

[0:32:36.8] SM: Second edition coming soon, you can reach out, if you just come to my website and go to that content tab, you can navigate, write to place where you can get in.

[END OF INTERVIEW]

[0:32:44.6] MN: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going. Like what you hear? Give us a five-star review and help developers like you find their way into The Rabbit Hole and never miss an episode, subscribe now however you listen to your favorite podcast. On behalf of our producer extraordinaire, William Jeffries and my amazing co-host, Dave Anderson and me, your host, Michael Nunez, thanks for listening to The Rabbit Hole.

[END]

Links and Resources:

The Rabbit Hole on Twitter

Sandi Metz on Twitter

Sandi Metz