Keynote: My Path to Becoming a Python Core Developer

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
so without further ado I'd like to introduce Emily Morehouse Emily is a core Python contributor and she's gonna have a great talk for us today let's give her a round of applause alright everyone welcome to hi 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 it 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 if these like really really incredible thunderstorms and so anytime we do get rain it always kind of reminds me of home so alright so a little bit about me my name is Emily Morehouse I am the director of engineering at a company called cuddle soft we are a digital product development company so we make anything from web and mobile applications to see ICD 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 screen shot 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 gonna 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 PyCon Montreal 2015 and actually to get a really good sense of why PyCon 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 this 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 school 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 getting to the point where we were able to attend the PyCon 2015 was really a validating experience for us cuddle soft had matured at that point to be 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 and all of this I did have some 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 cuddle soft and so at PyCon Montreal 2015 Louie divan where some are 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 C Python team and so he he had this sort of call to action to everyone that by the following year at PyCon 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 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 that this bar is really dark and so Guido was there and Frank and another attendee that we had met kind of encouraged me there like there's there's glue 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 she sort of like the 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 we're maybe 2 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 or it is very very obvious and so I just like immediately turn bright red I feel like paparazzi eat 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 ok and like just backed up and just like immediately started burrowing directly into the ground and at this point I 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 Pyke on portland's keeping Portland weird in this picture we get to Pyke on 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 I really have grown to admire about Guido is that every everything about our Python community really is top-down and one of the things that we do has always done is if he recognizes over 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 we don't offer 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 painted 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 you remember we talked about this thing I do I do really want to do this and so at this point I reached out to to guido and said hey remember that really embarrassing time we met in a bar and he's guide to go flash photograph of us and like it really had to make a joke out of it to get myself mentally past the barriers that I had set for myself and so I honestly like I don't think we don't think even thought twice about it 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 weed oh every few weeks and by so basically so I started this process with we do' 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 and see python is that they're fixed really quickly or C Python 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 you how what I could learn from how my implementation may be deferred from somebody who was a core developer submitting a bug fix and really learned 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 in 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 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 um 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 C Python internals worked under the hood just by you know 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 we don't 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 we'd owe 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 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 you 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 enjoy I'm enjoying what I'm doing if 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 gonna come in and I'm gonna contribute and I'm gonna 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 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 sea pythons 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 we know about it and he would say oh no that's interesting and I would find these very like and knock ewis 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 more in like a more modern way but if you don't have that respect for why it is the way it is you're gonna come in and you're gonna break things in like you're gonna 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 um that he would be like hey yeah so like it's not like 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 gonna sort of reclaim his time back from me until 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 a 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 Mariana wijaya and Carol willing were both promoted to core developers which was a really really monumental step for cpython so we fast forward to Python 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 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 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 Python 2018 and one of them was that pup 572 was accepted so if you don't know pipette 572 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 Guido stepped down as btfl and so at this point I wasn't really sure what the path forward for C Python was I wasn't sure what my mentorship relationship with Guido 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 cut 572 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's a sulli 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 gonna work but like we'll figure it out and so he said it's gonna 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 had evaporated and so I got to like sit and so this is a photo of the like whiteboard conference desk and 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 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% implementation completed within the first couple of months and at that point I was very very graciously invited to attend the Python core developer sprints 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 we tow in person at this and so one of the things that I had to remind myself was that my path didn't wind up being the ones 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 - 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 it's 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 your core developer like that's so cool like I'm 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 - so keeping up with the bug tracker giving benefits feedback it's also 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 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 gif of Alison Brie so one of the things that I also had to kind of really like solidifying 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 want 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 impostor syndrome and I think 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 impostor 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 this embarrassing thing happened and so therefore I'm not gonna reach out to we don't get 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 impostor 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 gonna be talking about impostor syndrome and so this is a really great tweet it says impostor syndrome will have you questioning your place and 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 then other people think that 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 their really really awesome depiction of a black hole that we were able to see and so I think that reframing impostor syndrome a bit in terms of how our communities impact our 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 cpython or who have been contributing to cpython for five to ten years and they all have expressed feelings of doubt and feelings of impostor syndrome and even the people who I think that it's expected when somebody is new that they feel impostor syndrome but it's it's less expected but once somebody reaches like a certain level of success or a claim 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 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 somewhere and so throughout all 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 to support for it etc 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 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 but people like mariotta Carroll myself and our other we now have five female core developers and so I wouldn't talk a little bit about why diversity matters and so I'm gonna show you a couple of pictures so this is from the Python 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 Carroll and Mariana in this photo and everyone else in the picture is male and this is again from the Python language summit 2018 and again Carroll mariotta and myself and everyone else is male so when I started contributing to cpython there was literally not anyone else who looked like me who was a cpython 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 as you do or somebody that you can identify with whether unlike 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 or 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 a hundred core developers I think we're just under that number at this point and actually this is an older slide size 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 try 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 whatever 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 tell and so through this process I've really had really had a chance to kind of look back on my journey over the last 40 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 is that if 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 I had just 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 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 and the 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 opened 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 you you know push 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 gonna wind up getting the support that you need and you're never going to like grow your team to be a very empathic 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 [Applause]
Info
Channel: Next Day Video
Views: 5,648
Rating: 4.5789475 out of 5
Keywords: pytexas, pytx19, Python, EmilyMorehouse-Valcarcel
Id: rOzUMQW4p0Y
Channel Id: undefined
Length: 36min 21sec (2181 seconds)
Published: Tue Apr 16 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.