 So without further ado, I'd like to introduce Emily Morehouse. Emily is a core Python contributor and she's going to have a great talk for us today. Let's give her a round of applause. All right everyone, welcome to Pi Texas. I'm really really excited to be here. Sort of one of the one of the interesting things about my Python regional conference journey is that every other regional conference that I have attended has rained, which is a very lovely, lovely welcome to the city. But I live in Denver right now, but I grew up in Florida. So we see these like really, really incredible thunderstorms and so anytime we do get rain it always kind of reminds me of home. So all right, so a little bit about me. My name is Emily Morehouse. I am the director of engineering at a company called Cuddlesoft. We are a digital product development company, so we make anything from web and mobile applications to CICD pipelines and cloud architectures to embedded systems and sort of everything in between. I'm a Python core developer, which as you may have guessed is actually one of the reasons why I'm here today. A couple of other things. I consider myself to be a polyglot. I work with a lot of Python and JavaScript and a lot of other languages. If you are in the JavaScript world, I help maintain a package called Axios, which is basically like the requests of JavaScript. I'm also a huge proponent of visual testing. I really like screenshot testing. I really love auto formatting, including black, and I am just in general a really, really huge language nerd. But aside from all of these things, I really like playing video games, doing yoga, going hiking, and I also have a really cute dog. So outside of all of these things that you kind of see listed here as my pedigree, I'm just like all the rest of you in this room. So a little bit about why we're here. I'm going to talk about my path to becoming a core developer, how I got here, a bunch of kind of lessons and things that I observed along the way, and some other things that you don't get to know about yet or else that would spoil the ending. All right, so I want to start at Picon Montreal 2015. And actually to get a really good sense of why Picon Montreal 2015 was important to me, I have to step back a little bit. And so in 2014, I had finished my bachelor's in computer science, along with a couple of other degrees at Florida State University. And because of some timing issues, I wound up starting my graduate school program at FSU, which was not necessarily what I had intended. And so I was in a state where I didn't really know what my next step was. I was being recruited by a lot of large companies. I was thinking about transferring schools so that I could finally move out of Florida. But I didn't really know what I should do. And so a bunch of things sort of fell together. And I actually wound up dropping out of grad school, staying in Tallahassee for a few more years, and starting a company with my boyfriend at the time, now my husband. And so getting to the point where we were able to attend Picon 2015 was really a validating experience for us. Cuddlesoft had matured at that point to where we could actually like support us financially going to this. And it really made me feel like I was at least taking a step in the right direction for what my future was going to be. In all of this, I did have some doubts. I really, really loved programming languages. I was working on building compilers and parsers and like doing some really cool research in that area. And I was pretty unhappy that I was leaving all that behind because I didn't necessarily see where that could fit into my future of building a company like Cuddlesoft. And so at Picon Montreal 2015, Guida Van Russam, our BFL emeritus, beloved creator of Python, made an announcement. And that was that he had made the observation that there were no female core developers on the CPython team. And so he had he had this sort of call to action to everyone that by the following year at Picon he wanted to have at least two female core developers on the team. And so I think Frank was sitting next to me at this point and he was just like poking me and he's like, do it, do it! Like this is exactly like the thing that you felt like you had been leaving behind. And now you have a way to like contribute and find that again in this new path that you're taking. And so I stopped the gift for you. But at this point I was able to meet Guido at kind of like a post conference event. And it was in this like very stereotypical like not Python necessarily post event. So it was at this bar. It was really dark. And so Guido was there and Frank and another attendee that we had met kind of encouraged me. They're like, there's Guido over there. You should totally go talk to him. And I'm like, okay. And so I kind of have to get up my nerves to go to go talk to him. And I think that I just went over and just sort of like word vomited and was like, I really love Python. I really love compilers and I want to do this thing. And very, very shortly into this conversation where maybe two minutes in and the other conference attendee that we had recently met walks by and takes a flash photograph of me talking to Guido in this very dimly lit bar where it is very, very obvious. And so I just like immediately turned bright red. I feel like paparazzid. I feel like very embarrassed and very kind of like put on the spot and like have a lot of attention brought to us that like I really didn't need at that time. And so I very quickly like concluded the conversation and Guido was like email me and we'll figure out like next steps. And I was like, yeah, okay. And like just backed up and just like immediately started burrowing directly into the ground. And at this point I didn't email him. I didn't move forward. I really sort of let this experience really sort of envelop what I had wanted to do moving forward for myself. And so we get to Python Portland keeping Portland weird in this picture. We get to Python Portland and there are still zero female core developers who have joined the team. And so at this point one of the things that I really have grown to admire about Guido is that everything about our Python community really is top down. And one of the things that Guido has always done is if he recognizes that there is a problem or something that he believes in, he is one of the first people to step up and and put in the work to make those things happen. And so what actually happened is that Guido offered to personally mentor anyone who is interested in becoming a core developer. And so at this point I I had already gone through about a year of you know this kind of feeling of regret and this like is somebody else going to step up and do this? Me feeling like I had really sort of like backed away and paid in myself into a corner where the longer that I didn't take any sort of action to move forward the harder it was for me to actually step forward again and say like hey remember we talked about this thing I do I do really want to do this. And so at this point I reached out to Guido and said hey remember that really embarrassing time we met in a bar and this guy took a flash photograph of us and like it really had to make a joke out of it to get myself mentally passed the barriers that I had set for myself. And so I honestly like I don't think Guido had even thought twice about it and he was like oh yeah I totally remember you where have you been kind of thing. And so at this point I got to start meeting with Guido every few weeks. And by so basically so I started this process with Guido and like mentorship and so one of the first things that they tell new contributors to do is go read the contributing guide try to fix documentation fix typos like learn the process of contributing find bugs and fix bugs that sort of thing. But to a certain extent some of those things didn't interest me I wasn't really drawn to contributing to CPython to fix documentation and I started to try to fix bugs along the way but one of the really really difficult things about bugs in CPython is that they're fixed really quickly or CPython has been around for so long that a lot of the low hanging fruit and easier bugs to fix are already kind of picked off and knocked down. And so the things that are left are these things that have a really really high barrier to entry for new contributors. A really great one is like Unicode for example we've been fighting with Unicode for how long and we still are having issues with it. It's just it's not a great place for somebody to be able to come in and feel any sort of validation because you can't really come in and make an impact very quickly. And so I tried to take this experience and learn from it. So what I started doing was if I started on a bug fix and somebody else wound up kind of like beating me to it and submitting a patch before I did I would try to go through and still finish my implementation and go through and see how what I could learn from how my implementation maybe differed from somebody who was a core developer submitting a bug fix and really learn from that. And so what that allowed me to do was see different things about the CPython environment that I wouldn't necessarily have known otherwise. Whether that was a helper function, a different way of doing things, different impacts that changes in one area of the code might have on another place, ways to see these edge cases that I wasn't maybe thinking about. So I tried to take that and turn it into a really positive experience. The thing was that still at the end of the day I didn't feel like I was really truly contributing anything. I was just kind of learning on my own. So I kind of ditched that very quickly and started reading the source code. And so I kind of made the decision to go back to my roots of what I had been interested in and I started kind of stepping through the compiler and the interpreter and the parser and like really figuring out how all of these CPython internals worked under the hood just by putting a bunch of print statements or debug statements in there and just learning. And so one of the interesting things about Guido's mentorship was that I had never really had any sort of technical mentorship in this way before. And so what I expected coming in was Guido to say, you know, here's this bug. I've found this bug for you. Go fix this bug and come back to me with your bug fix. And that's really not how it went. He came to me and said, how can I help? What do you want to learn? And really, really left the door open to me and I was like, oh, okay, I have to drive this ship but I don't know what on earth I'm doing. And so at this point Guido asked me like a very, very kind high level question that wasn't really meant to guide me necessarily. But he asked, you know, what do you see yourself doing with this process that you're going through? And he warned me that a lot of the code and things that I was working on didn't really change very often. And he was like, there's not really anything that you can like go in and improve or change. There's no bugs here. And basically I realized that what I was looking at was 15-plus-year-old files that hadn't been touched in that many years. And so I was kind of like, well, this is fine. Like I'm enjoying what I'm doing. I feel like I'm learning a lot so let's keep going. And so not having any idea what on earth I was reading turned into this process of reading and learning and discovering and getting to to find new things. But still on this journey I would get really, really introspective because I felt like I came in and had this expectation for myself of like I'm going to come in and I'm going to contribute and I'm going to do really awesome things. And that wasn't at all what I felt was happening. So I would have these like highs and lows of feeling like I'm doing something really cool, but then I don't feel like I'm doing anything at all. And wondering if I had made the right decision. Should I have just listened to the guidelines that had been set out and like should I have just been fixing documentation and like was I trying to do too much as a new contributor. And maybe at the end of the day I was worried that I just wasn't cut out for that type of work. And so throughout this process one of the things that I am very gracious that I was able to learn is that there is a lot of unwritten history especially with projects that are that are as old as CPython's implementation. So much unwritten history that doesn't get communicated to contributors or the sort of general audience of of the project. And so one of the things that I would really enjoy is that I would come across something in my sort of meandering discoveries. And I would you know find something confusing or not really understand it and I would ask Guido about it and he would say oh no that's interesting. And I would find these very like innocuous pieces of the code that wound up having a really really interesting backstory as to why they came to be that way. And there there was no other way that I would have known or learned about these things if it hadn't been you know finding it and asking Guido about it and getting a chance to actually interact with the people who had shaped and written that code in the very beginning. And so having I learned that having a respect for the history of a project is really really important. So especially with something like CPython it would be really awesome to come in and like rip a bunch of things out and do it better and do it in like a more modern way. But if you don't have that respect for why it is the way it is you're going to come in and you're going to break things and like you're going to wind up taking something in a very wrong direction. And so this this whole process for me went on for about a year and a half. And during these times I was really worried that he would like cut me off. That he would be like hey yeah so like it's been like a year and a half like I'm not really totally sure what you're doing. I don't know if you really know what you're doing yet. So like I was I was just very worried he was going to sort of reclaim his time back from me. And don't get me wrong I had absolutely zero reason to think any of this. It was all in my head. Guido had never given me any sort of reason to doubt myself or to doubt his support of what I wanted to do. But there was still this like inkling in the back of my head that something that I wasn't doing enough. And so in that time we also got our first two female core developers Mariah Wajaya and Carol Willing were both promoted to core developers which was a really really monumental step for CPython. So we fast forward to PyClean Cleveland 2018. And so this was actually the second year that I was able to attend the language summit. I attended in 2017 and really didn't interact with a lot of people just kind of like snuck in the back listened and like soaked up everything that everybody was talking about and then just like crept right back out. If you if you might have guessed I'm an introvert. I'm just throwing that out there. And so the second language summit I was feeling a little bit better. I felt like I was really keeping up to date with some of the major happenings in CPython. So I really kind of forced myself out of my shell to talk to other core developers at the language summit. And so there were a couple of really monumental things that happened around the time of PyCon 2018. And one of them was that PEP572 was accepted. So if you don't know what PEP572 is it is assignment expressions. It is one of the most recent changes to Python syntax. These things don't really roll around very often. But that was accepted. And right around that same time Glido stepped down as VDFL. And so at this point I wasn't really sure what the path forward for CPython was. I wasn't sure what my mentorship relationship with Glido was going to happen. But at that point he reassured me who said no like yes I stepped down but I am still going to mentor you. And actually I wanted to see if you wanted to implement PEP572. And so at this point it was really this moment of like everything coming together. Like all of the areas that I had spent so much like time meandering and learning and not really being able to do anything with it. All of that came together for this really really lucky situation where I was the perfect person to move forward and implement that because I had been like researching and learning so much about it. And so he basically said I know that this is going to be really really tricky. As they wrote the PEP for this they were like well we don't really know how this is going to work but like we'll figure it out. And so he said it's going to be really tricky but I'll be here to help you if you get stuck. And so this is where I got into some of my favorite moments because this is where any of those doubts and uncertainties that I had had evaporated. And so I got to like sit and so this is a photo of the like whiteboard conference desk in one of our old office spaces and I would just sit there and like figure out like how am I going to do this? Like how does this work? And really just got to like dive headfirst into figuring all of this out. And so I was actually able to get like my like 90 percent implementation completed within the first couple of months. And at that point I was very very graciously invited to attend the Python Core Developer Sprint which was sort of a rarity. Typically that's only reserved for core developers for them to kind of get together and work on implementations, talk through details together. And I was very very grateful that I was invited to attend this. And so at this point I got to kind of see all these people again that had turned into friends and colleagues from attending the language summit. And I also got to sit and work through all of the like really really hairy implementation details of scoping for assignment expressions with Guido in person at the sprint. So one of the things that I had to remind myself was that my path didn't wind up being the one that I expected myself to have. I realized that I had to give myself time and honestly you can look at this timeline and sure it took three and a half years from that initial inception for me to actually become a core developer. But there's a whole lot of other really really small ticks on this timeline that happened along the way to get me where I am. And so I had to give myself time and give myself the space to let the process happen as it needed to and not how I wanted it to. And so one of the other really important factors when promoting somebody to becoming a core developer is trust. We have to have trust that they will kind of uphold the CPython name, that they will be good community members and kind to other people, whether they are core developers or first time contributors. We have to trust that they won't merge in PRs haphazardly and that they will take care in the code that they're crafting and the code that they're merging in from other people. And that's something that you can't really measure in the number of commits. You can't look at someone and say, oh well they have 30 commits and 30 PRs to CPython and therefore they deserve to be a core developer. There's so much more that goes into that and being able to interact with people and establish that trust in an online distributed environment is something that is really really tricky and at the end of the day really does just take time. And so I want to talk a little bit about internal versus external motivations. And so a lot of people come to me and they're like oh like you're a core developer like that's so cool like well I mean yeah but it's also like a lot of really hard work and a lot of tedious work at the end of the day too. So keeping up with the bug tracker giving beneficial feedback it's all it's all things that are not necessarily always very fun or very glamorous but it's things that all core developers have to do. And so if you go into something seeking some sort of public recognition or if you are the kind of person that decides like oh one day I want to be a director of engineering or I want to be a CEO or I want to make a certain salary I would really encourage you to kind of look inside of yourself and try to figure out why you want to do those things because if you're looking for external accolades your like the longevity of your motivation is not going to be there. Whereas if you find something that you're really truly passionate about as an internal motivation you will continue working towards that thing for years and years to come. Okay so I really love this gift of Alison Brea. So one of the things that I also had to kind of really like solidify myself was that you don't have to be the badass all the time like you don't have to be the person that comes in and always has the great ideas or the the best implementation or the most elegant code and so these things really take take time and process and if you try to kind of walk in there and like be this like really awesome person I don't think that you're being very true to yourself and I don't think that you are taking care to build your team and your colleagues up around you. And so I wanted I wanted to be very clear that like it is very very okay and it is very very human to be the person that has doubts and insecurities and uncertainties and that you're okay to have moments where you don't know what your path is or what your next step is or how to solve that problem and that all of those things are very very normal and very very okay. And so this leads me into imposter syndrome and I think that that is a lot of what I was going through and probably what a lot of people go through whether they put this sort of name on it or not. And so imposter syndrome can be really really crippling and I think that a lot of that probably played into that first year where I had met Guido and then stepped back and was too scared to kind of take that next step and I think that having an excuse for oh well this embarrassing thing happened and so therefore I'm not going to reach out to Guido again really got in the way and also really fed into allowing myself to feel a lot of imposter syndrome. And one of the things that I also think is important is that there are a lot of pieces of our communities that play into imposter syndrome. I'm going to show you a couple of tweets in a second that I think really illustrate this but even after our tech communities are fixed we're still going to be talking about imposter syndrome. And so this is a really great tweet it says imposter syndrome will have you questioning your place in the spaces that you prayed about being in. And so this really kind of spoke to me because you can put in so much work to get to somewhere that you really really want to be and you can still have this little like demon in the back of your head telling you that even though you put in a bunch of work and that other people think that what you're doing is beneficial and great you can still feel these insecurities even though you've worked so hard. And so this one's a little bit more relevant for happenings that have been going on in the last few days with the really really awesome depiction of a black hole that we are able to see. And so I think that reframing imposter syndrome a bit in terms of how our communities impact our own personal feelings is really important. Being able to separate the two is important. So if I'm getting a bunch of external feedback telling me that I am not necessarily worthy does not mean that you should listen to those people. And so I think that for most of us in this room we're really really lucky because Python has an absolutely incredible community. But in a lot of other tech communities these things aren't necessarily as guaranteed especially for women and minorities who are part of those groups. And so I've heard throughout my journey from a lot of different people who are either first time contributors to see Python or who have been contributing to see Python for five to ten years. And they all have expressed feelings of doubt and feelings of imposter syndrome. And even the people who I think that it's expected when somebody is new that they feel imposter syndrome. But it's it's less expected that once somebody reaches like a certain level of success or acclaim that they no longer feel these things. And so I've I've really been grateful for the people who have been at it for a long time and who are still really willing to open up and say yeah like I've been trying to work on this problem for the last six months and I don't feel like I'm getting anywhere. And I've been working on this for five years and I still don't really feel like I know what I'm doing. Because at the end of the day if you if you don't feel that sort of uncertainty or or doubt moving forward you probably aren't doing something that's really truly challenging yourself. And so I wanted to bring this up. There's a lot of different versions of this of this image circulating on the internet. But I think that everyone needs to hear this again. And that's that the things that I know are not a subset of what I think everybody else knows. And that really at the end of the day I don't know anything more than you do. I just know different things than you do. I'm gonna grab some more. And so throughout all of this one of the things that really kind of stood true to me was that the fear of regret has to be greater than the fear of failure. And so even though even though we might be placed in these situations where we have really really high stakes and there's something that we really really want to do and we don't know if we can do it or we don't know if we'll have the support for it etc. The the fear of failure has to outweigh the fear of regret. And so this really ties back to these these internal motivations that we have. And you have to be really really passionate about something to be willing to put yourself out there and and take that risk and especially to be willing to fail publicly. So I kind of want to go back and wrap this up a little bit. And I want to talk a little bit about why it was so important that people like Marietta, Carol, myself and our other we now have five female core developers. And so I want to talk a little bit about why diversity matters. And so I want to show you a couple of pictures. So this is from the Picon Language Summit 2017. I don't know how well you all can see it from your seats. But basically what you can see here is there's myself Carol and Marietta in this photo and everyone else in the picture is male. And this is again from the Picon Language Summit 2018. And again Carol, Marietta and myself and everyone else's male. So when I started contributing to C-Python there was literally not anyone else who looked like me who was a C-Python core developer. And the thing is is that role models who look like us are really important. I'm not going to go down that path of trying to convince you why diversity matters. But there have been a lot of different studies on why diversity matters and why having role models who look like us matters. Whether that is a Barbie doll that has the same skin color as you do. Or somebody that you can identify with. Whether on like a gender or race level. And there's studies that have been done that say that students who have teachers who look like them in different ways actually wind up feeling a lot more cared for, are a lot more interested in their schoolwork and ultimately perform a lot better at the end of the day. And so today we have approximately 100 core developers. I think we're just under that number at this point. And actually this is an older slide. Five female core developers today. And so you can kind of see that that ratio is still pretty sad. And the other thing that happened is that a lot of people, not a lot of people, but a couple of people came forward and said oh well she was promoted because she was female. Or why would you want to bring somebody into the core development team just because they're female? And so one of the things that started happening is that the successes and the work that we had all put forward was then sort of denigrated by these people who decided to doubt us or tried to attribute our successes to our genders. And so I have to point out that increasing diversity is not equal to lowering the bar. And that just because I had, I had a lot of doors opened up for me because I was female. Whether that was mentorship, whether that was sponsorship, whether that was just somebody else who was a little bit more willing to listen to my voice because I was different. But all of these things at the end of the day really can only make us better and can only help our communities grow in the ways that we want them to. And so through this process I've really had a chance to kind of look back on my journey over the last four years. And I really recognize how much community has played into that. And a lot of that is specifically how incredible our Python community is and how devoted to diversity all of us are. And so the thing is that if I hadn't met Guido, like if I hadn't happened to be in the same event that he had been at or if I hadn't had the guts to send that email or hadn't like let myself fall, you know, pray to my imposter syndrome and given up, like if all of these things hadn't happened in the way that they did I wouldn't have made it here today. And I also got to really witness a lot of other people going through the same process that I didn't know they were going through. And so I think moving forward what my sort of call to action is for all of you is to be more open with each other. Especially if you're somebody who is in a position of leadership or is running a team, I really really encourage you to say I don't know a lot more often. And to really encourage everyone to work together to find a solution and foster that community and those relationships with people. I also think that it's really important to tell other people when you're feeling doubtful or you're saying like man I don't know like I just don't know if I'm doing a great job today. What do you think? And really sort of open the door to that sort of feedback that you can get from other people and that sort of support because if you come in one day and you're feeling you know you're feeling bad because you you know pushed something into production and broke something or whatnot. If you don't open up to people and tell them how you're feeling you're never going to wind up getting the support that you need and you're never going to like grow your team to be a very empathetic understanding group of people. And so by supporting each other through all these sort of highs and lows by making the decision to make conscious choices with how we interact with each other, I know that I think at the end of the day that we will always go further when we have each other. Thank you.