 So next up is my homegirl Sarah May. She lives up in San Francisco. She's a pivot at Pivotal Labs. She's friends and cohorts with the Diaspor... Diasporos? Diasporos. Diasporos. That's real close. The Diasporos. We met a couple a year ago or so at Goga Rucco. We've been buddies ever since. We've had some real heart to hearts. She was an obvious go-to when it came to finding great speakers for this conference. So Sarah May. I'm going to kind of low-tech with my notes. I have to tell you I'm super nervous. I've never even talked about slides. I've always had slides that at least reminded me of what I was supposed to talk about next. I don't do bullet points, but at least I don't forget entire sections. So my worst nightmare for this talk is I go 10 minutes and forget half the stuff I was going to say. So hopefully now that I've said that out loud, I have to spell the curse. We'll see how it goes. So my name is Sarah and I'm a computer programmer. And people have told me I don't look a whole lot like a computer programmer. Actually lately at work I've been trying to wear more skirts so I can change the visual idea of what a programmer is. So far, you know, no one else has taken me up on it at Pivotal sadly enough. Although one guy said he would wear a kill, but he hasn't actually shown up in it yet. So we'll see. And I'm a programmer because I like to build stuff. What I like about programming is that I can build things with it and I can have an idea and I can build an entire system out of it by myself, which is kind of awesome, right? I can build stuff where there wasn't anything before. And I like programming itself. I like the mechanics of programming well enough or I wouldn't be doing this, right? But what I really love about it, what gets me up in the morning, is the ability to build stuff. And so what I'm going to do today is I'm going to tell you two secrets about programming. And if you're a programmer, I'm probably going to insult you. So just keep prepared. So this is kind of a different crowd than we had this morning. I want to take a little bit of temperature. Raise your hand if you're a developer. I guess part of your day-to-day job, you write code. Okay, so how many people have tried programming and then spent like five hours tracking down something that turned out to be a comma missing somewhere and you were like, fuck this, I am going back to something I like better? Perfect. Okay, so some of the same people raised their hands and this is an interesting combination. And how many people have never tried programming ever? I don't even look at code. Wow, that's awesome. So the last category, right, is the one that's actually the most numerous in the world at large, even though I forget that. I lived in San Francisco in my little tech bubble and all the people I know are programmers. But, you know, even in the city of San Francisco, most of the people there have never tried programming. And sometimes I wonder about why that is, right? Like, there's a lot of people that just, it never even occurred to them, even if they're smart, even if they're like reasonably tech savvy, it never occurred them to try programming. And, you know, I started wondering a couple of years ago why that was. I mean, when I was in high school, you know, if you're good at communicating, I was pretty good at writing, I was good at English. You know, I didn't get pointed towards programming as a potential career. Even though I was like, I want to build stuff. They were like, well, how about English literature? You know, I'm not sure that we're on the same page here. And, you know, people who are good at math, I was also reasonably good at math. But what I noticed was that, like, people who are good at math sometimes got pointed at programming. But if they were also, if they were good at math, but they were also good at communicating, they never got pointed at programming, right? If you were, if it was one of these people who was like, well, I want to work with people, which is why I don't understand that at all. If you were one of those people who was like, one of those people, you never got pointed at programming. You know why? That's different than other engineering, other pieces of engineering, right, using other sciences. Like, there's this stereotype of programmers as being kind of antisocial and just unable to communicate. And, you know, people think about programmers and think about them as people who spend all day in front of their computer, put their headphones on, like, in a room with as few windows as possible. Like, basement preferred, right? But they'll take, like, a cube in the middle of the building if they can't get the basement. And, you know, people who work with programmers are like, okay, over there is where we keep our developers. Don't go talk to them or they'll growl at you. And God forbid you ask them to go to a meeting. Like, it's, this is the stereotype. There's a certain amount of truth to that stereotype, right? But, you know, I think that one of the big secrets about programming and one of the reasons that we get some, like an interesting and unusual mix of people into programming, one of the secrets about it though is that it really doesn't have anything to do with math. And people that are good at programming tend to be people who are good, like, translators. And I have a slightly different definition of good programmer maybe than most people do, which is that to me, someone who's a good programmer builds stuff that's actually useful, builds stuff that people use. And the difference there, I think a lot of people when they think good programmer, there's, like, good code style, right? Difference between, like, YouTube comments and the New York Times editorial page, right? And then there's, like, then there's content, right? Once in a while, YouTube comments have something more interesting to say than the New York Times editorial page, right? And to me, what makes code really useful is the fact that it can do something useful for someone else, right? But people are going to use it. And people who tend to be good programmers, how many people have ever done any kind of, like, translation work from, like, one language to another human language? It's actually really, really difficult. Like, it's one of those things where you take a piece of text in the original, and you look at the words that the original author chose, and they chose words that convey some kind of surface meaning, and they also chose words that convey certain emotions. So when you translate, you need to take words that convey both the meaning and the emotion of the original text, which is actually pretty difficult to do, because sometimes there aren't words that have the same combination of meaning and feeling in the destination language as they were in the source language. So translation, programming is fundamentally a translation task, where you're taking your vision of what you want something to do, what you want the computer to do, and you are translating it so that you and the computer are on the same page, right? So that you and the computer have a shared vision of what's going to happen, right? So people who are good at translations tend to be good programmers, and I think that's one of the reasons that women are underrepresented, because people who are good translators and good at communication tend not to be pushed towards programming. So the second secret of programming, I think, is that people who work like in the basement by themselves with their headphones on all day actually kind of write pretty shitty code. And by that I mean they write the wrong code, right? They write the things that no one wants to use. They write the things that aren't actually useful. And it took me a really, really long time to figure that out, because there's this myth of the program that's super strong, right? Not only in the media large, but among programmers. And there's a certain resistance to the idea of something different, some other way of programming. My first job out of college, this is going to be kind of funny, given the other talks we've had today. My first job out of college, I worked at Microsoft, and I moved up to Seattle, right? And I went to work in a project, and so at the time Microsoft was kind of like Google is now. It was sort of vaguely past its prime, but there were still a lot of really interesting things to do there. And so I went up, and I showed up, and they gave me an office, like a real office, with a door. And everybody got an office at Microsoft, at that time, your own office. And the Motorsport brand, I basically used to show up in the morning, go into your office, close the door, work all day, go home, maybe you'd go out, and you'd go to the bathroom, and you'd see someone in the hallway and you'd be like, hi, and that was about sort of the sum total of the social interaction generally did. And I was at a project, I was at a project that was like exciting by Microsoft standards. It was a green field project, no existing code base, no existing users. And one of the first things that happened when I showed up, the project had only been going a couple of weeks, and one of the first things that happened was that they, we got an email, we all got this email that had a document attached that was this beautiful document about our users and what they were going to do with the product and how it would make them feel and what they wanted to use it for. It was interesting, but the problem with a document like that is that you can't really ask your questions. And we had no access to the people who had been hopefully in theory interviewed to make that document. And so we just had people whose job it was to guess what they wanted based on this document. And so as developers, as the people who were actually building the product, we had no access to actual potential users. And so we were just writing, we were making shit up, right? We're like, oh, we think we'd have meetings when we discuss whether the kind of fake person that they had, the persona they created in this document wanted to do this from the menu or wanted to do it from a right click. We had meetings. And then someone would win and we'd write it and keep going. But it was like, we just kind of made shit up, right? And it was, it felt kind of futile, right? And around about that time, there was a, has anyone here ever heard of a singer called Utah Phillips? He's kind of a folk singer. He's a Christian anarchist, which is an interesting combination. He died a few years ago, but he put out an album right about that time. There was basically him telling stories on top of music by Andy DeFranco. And that's bizarre. It's also bizarre. Yeah. But one of the things that he said on that album was that, and I'm going to read it because I thought it was so awesome. What he said was, I learned when I was young that the only true life I have is the life in my brain. But if it's true that the only real life I have is the life of my brain, what sense does it make to hand that brain to someone for eight hours a day for their particular use on the presumption that when they give it back at the end of the day will be in an un-mutilated condition? I listened to that when I was in my office in my door clothes. What am I doing here? Because every day I came to work, and I was 22, I didn't really know what having a real job is supposed to feel like. And I just kind of thought, well, this must be how it is. And every day I came to work, I just felt more like, this is a waste of my time. This is a waste of my energy. And I fantasize about like going and being an aerobics instructor at Club Med. There's a thing totally different. Which I know, can you just picture me doing that? That would be hilarious. And one day I called up my friend in San Francisco. I said, hey, can I crash into your couch for a minute? And he was like, sure, what are you doing down here? I was like, I don't know. I gotta get out of here. There's a middle of winter in Seattle, too, and it was a particularly bad time. And I'd go to work at 8.30, and I'd leave work at 6.00, and it would be dark on both sides. And I moved up there from San Diego, so it was not a good transition. So I came down to San Francisco, and I started talking to my friend, and he was at the startup, said to give me a job at the startup, and all of a sudden I was like, oh, they don't have offices here. I'm not gonna get my own office. They had us all in a big bullpen, right? We were expected to talk to each other during the day. It was like, oh, that's kind of cool. That's kind of neat. And they actually brought in users, like actual users of the site that we were gonna build. But the interesting thing about it, I mean, everyone knows that you need to be able to, in order to build a good product, you have to talk to users. One of the things I realized when I was going through this is that talking to users and talking to other people made me a better programmer. It made my code better. And I started thinking, huh, something to like this communications thing. I was a nerdy kid, right? I don't know. I like to read a lot. This is before the internet was widely available, right? When I was a kid. I spent some time in the library, and I read every book in every section of my school library when I was in middle school. And so I started thinking, huh, I need to do more communication. How do I do that? It wasn't very good at it. I'm still not very good at it. How many people have heard of, like, the Myers-Briggs personality tests? So that basically it's like one of these things where it's a big matrix of different types of personalities. And the first letter is four letters. The first letter is either an I or an E. Either an introvert or an extrovert. Right, so an introvert, this is reviewed for most of you. I think an introvert is someone who has, who, for whom talking to people is a draining activity. Right, you can do it. It's fine. But it doesn't energize you. An extrovert, on the other hand, is someone who talks to people and gets energy out of doing that. And I was definitely firmly on the I side for a long time. I just had trouble, like, I would rather, it was like, I would rather clean the bathroom and go to a party than a deal, right? Like, I just had trouble talking to people. But I discovered that, like, the more I did it, A, the better I got at it. But B, the better actually it made my code because not only was I writing better code, but I was writing code that was actually more in line with what people actually wanted to do with it. And sometimes I felt like I got more out of three days at a conference. Like, I got better programming out of three days of a conference than I did out of three days of actual program. And, you know, I started teaching classes, which was a really interesting experience. At that point I had been programming, you know, for a while. I, you know, I learned about arrays a long time ago. But if you have to actually explain to somebody what a variable is, what an array is, it was a really interesting experience. I ended up with a lot more, it definitely added nuance to things that I thought I already understood. And just explaining it to someone. And then a couple of years ago, when I started working at Fibital, of course we do air programming all the time, which is sort of the like, the woo crazy part of XP that no one actually does, right? This is the part where you've got one computer, hopefully with a big monitor, right? You've got two keyboards, you've got two mice, two chairs, and two people sitting there looking at the same computer, right, working on the same code at the same time. And, you know, I've been doing this for a while. Now it's already a pretty good program where I thought when I joined Fibital, I mean, I may have been wrong. But I thought so. But, you know, all the time when I did, doing all this teaching and a lot of conferences, when it came down to program, it was still just me and the computer, right? It was still just me and the computer, hopefully, you know, at least four or five hours a day if I was lucky between meetings and whatever else. Programming. And then when I started working at Fibital, it was like, suddenly, I spent eight hours a day talking to people about programming. And it was bizarre. It was exhausting. Like, I would go home at the end of the day and just be like, nobody talks to me, I'm going to bed. And one of the interesting things that happened was that I got really quickly, better at communicating, even with people that weren't programmers, just talking about what I did all the time seemed to turn me into someone that could talk to other people about what they did, even if it wasn't programming, which was like me. And I also started noticing that if I went a few hours without talking to somebody, I started feeling antsy, which was a totally new experience for me. Definitely, definitely very strange. And, you know, one of the things that I've noticed though is that in the last year and a half, I've gone from being a decent programmer to being like a really good one. And that's an interesting feeling because I had already thought I was decent. So what else could I do? What other unseen, leveling up opportunities are out there? I'm letting you in on one. But if you have others, I want to hear about it. So, I don't think I took ten minutes, but I took a pretty short amount of time. So I want to leave you with a thought, which goes along with a lot of the other stuff people have talked about today. I want you to remember the Utah Phillips quote, and think about who it is that you're handing your brain to you for eight hours a day. And is it worth it? Is it worth it, people that you're giving it to, is it worth it when you're giving it back? And I encourage you to try and find a job or a profession or something where not only do you get your brain back un-utilated, but hopefully transformed and improved in magic sprinkly dust on it. And, you know, we're all in a fairly privileged position, right? And most of us have that choice to make. And I think that we should all make it. This may be hard to answer. Without getting too geeky, in what ways would you say that you are a better programmer? Like, is there any sort of generic description that just makes sense to people who may not necessarily be a developer? So when I'm programming by myself, it's basically a variation on fail faster, right? So the time between when I make a stupid mistake in the code and the time when I find out about it is shorter if I'm sitting there with somebody else and they can point it out, right? Like, oh, there's the typo. I mean, at the very sort of trivial level, you can point out typos before I even have to run the specs, right? Or they can point out, oh, you know what, this doesn't belong in this object. I think it should be over here in this other file because blah, blah, blah, blah, blah. And then we have a discussion about why it should not be over there. It should definitely be over here. And then, you know, we negotiate and we discuss why it should be over there, over here. So basically, it's some variation of fail faster, right? You find out about your mistakes sooner. And so you can iterate faster. Do you have any tips on how to teach people programming? I'm starting to do it myself and I've always taught myself. And, like, it's already exposing the gaps in my knowledge that I thought I knew of. Or, you know, enough. But, yeah, could you talk a little bit about that? I think, you know, the first time that I tried to explain to somebody what a variable does, I think I did a really, really horrible job. I was like a variable. It's a thing in memory. It's a place in memory where you want to keep something and they just looked at me with this blank look. Like, what are you talking about? And I honestly think that the only way to do it is just to explain it more than once. Like, to explain it over and over again to people, to different people. Like, I explain it, I try it, so for a while I got in this thing where I was like, you know, I'd explain it to taxi drivers, you know, or something. You know, like, anyone that I happened to run into that, like, I could make them listen to me for more than, like, 30 seconds. Like, hey, have you ever tried programming? Let me tell you about it. It was one of those super obnoxious people. I kind of got a feeling that they'd be like, but yeah, I think just doing it. You had a question. On the subject of language, how do you feel about, oh, so on the subject of language and programming, how do you feel about linguistic kinds of programming, text programming versus visual programming? Do you think visual programming is a good thing for teaching or bad? No effect? I think it depends on what you're trying to teach. I think for concepts, sometimes visual programming can be super useful. And there are people who learn in different ways, too, right? So there are some people for whom, like, a visual representation of something is much more powerful than a textual representation. So I think it's good sometimes to have both if you can. You know, I try to have, I mean, this is not quite the same thing, but, you know, in the classes I teach, I try to have both diagrams that show what I'm talking about and code examples that show what I'm talking about, because a lot of times, you know, some people will, you know, have a lot more success with one than the other. So, yeah. I wanted to comment. Okay. Now I'm just going to say, like, explaining a, I've done this a lot myself, explaining a linked list in text and a linked list in a diagram. Pretty much everybody gets it if you explain a diagram the first time. If you try to explain it in text, it probably takes you an hour to try and explain to them. Because it's sort of like the difference between like math being, between apples and math being the derivative of something. Right? If it's apples, it's something that you can latch on to, you can make the C and so on. I find that there are some people, though, that's like, maybe they should have been programmers originally, because they really get the text. I mean, it just depends on the person. Yeah, I think it's good to have both. But even when... I feel as though, I don't know, I don't have a huge planning program experience, but I do like teaching. I feel as though connecting with what they already know is the key. It doesn't matter. That's true. That's a good point. Yeah, I mean, it helps to have, if you can, you know, most of the time when I do these classes, I try and break the classes up by sort of similar experience. So I'll put all the people together by project managers. And that makes it much easier, because then you can start, you know, connecting to what they know. Thank you.