My Path to Becoming a Python Core Developer
파이썬 코어 개발자가 되기까지
I attended my first PyCon in 2015. Hosted in Montréal, it was my first time to Canada and my first visit out of the country as an adult. 6 months earlier, I had started a company with my husband (boyfriend, at the time). It'd only been 4 months since I dropped out of graduate school to focus on building Cuttlesoft.
저는 파이콘에 2015년에 처음 참가했습니다. 몬트리올에서 열렸는데, 캐나다에도, 성인이 되어 해외로 가보는 것도 처음이었습니다. 남편과 함께 (당시에는 남자친구였지요) 회사를 시작한 지 6개월이 된 시점이었습니다. CuttleSoft를 창업하는 데 전념하기 위해 대학원을 그만두고 4개월쯤 지났을 때였습니다.
Hindsight has given me a very different perspective, but in the moment, I wasn't sure if making such a risky decision was the right choice. I wanted desperately to leave the city where I was living to experience something new, already feeling like I had spent too long in the only state I was old enough to remember living in. I wanted to pursue graduate school to continue studying language theory, formal verification, and compilers, but I would have to wait until the following year to transfer to another university in a shiny new city.
모든 일이 지난 지금은 완전히 다른 시각을 가지게 되었지만, 당시에는 위험을 감수하는 것이 옳은 선택인지에 대한 확신이 없었습니다. 필사적으로 제가 살던 곳을 떠나 무언가 새로운 것을 경험하고 싶었습니다. 어디서 살았는지 기억하기 시작한 때로부터 한곳에 너무 오래 머물렀다는 느낌이었습니다. 계속해서 언어 이론, 형식 검증, 그리고 컴파일러에 대한 공부를 이어갈 수 있는 대학원을 찾고 싶었지만, 빛나는 새 도시의 다른 대학으로 옮겨가기 위해 이듬해까지 기다려야만 했습니다.
There were constant waves of excitement, nervousness, uncertainty.. but mostly excitement.
흥분과 불안함과 불확실의 파도가 계속해서 몰아쳤지만, 그래도 대부분은 흥분되는 일들이었습니다.
I had the mentality of a person who'd grown up being told she could do anything if she worked hard enough at it, and having the ability for our young company to send both Frank and I to a conference in Canada was a sign that I was taking a step in the right direction. I still worried that I was leaving something behind that I was passionate about. Maybe I would go back to graduate school one day? Who knew.
어렸을 적부터 열심히 하면 뭐든지 할 수 있다는 얘기를 들으며 자라기도 했거니와, 새싹 회사임에도 프랭크와 저를 캐나다에서 하는 컨퍼런스에 보낼 능력이 된다는 것은 제가 옳은 길로 가고 있다는 신호였습니다. 열정적으로 했던 일을 두고 왔다는 불안감은 여전히 있었습니다만, 언젠가 다시 대학원에 돌아갈지 말지 누가 알 수 있을까요?
One of the keynote speakers at PyCon that year was Guido van Rossum, Python's beloved creator and (now Emeritus) BDFL. During his keynote, he made a call to action and set a public goal to have at least 2 female Core Developers by next year's PyCon. There were none at the time. Frank poked me and said something along the lines of, “you should do it! You could totally do that”. I didn't know much about Guido then, but I knew that I was intimidated even at the thought of talking to him.
그 해의 파이콘 스피커 중 한 명은 파이썬의 사랑받는 창시자이자 BDFL인 귀도 반 로섬이었습니다. 그는 키노트 중에 이듬해의 파이콘 전까지 최소 2명의 여성 코어 개발자를 선정하는 것을 공개적인 목표로 하며 같이 행동하기를 요청했습니다. 당시에는 한 명도 없었습니다. 프랭크는 “당신이 꼭 해야 해! 완전히 딱이라고” 라며 나를 부추겼습니다. 저는 그때까지 귀도에 대해서는 잘 몰랐었지만, 그와 얘기하는 것을 상상만 해도 겁에 질릴 정도였습니다.
One night, we found ourselves at an event that Guido was also attending. Frank and another conference attendee we had met encouraged me to go talk to him. I thought, “if I don't talk to him now, will I get another chance?”
어느 날 밤, 우리는 귀도가 참석하는 한 이벤트에 같이 참여하게 되었습니다. 프랭크와 다른 컨퍼런스 참가자들이 그에게 가서 얘기해보라며 응원해 줬습니다. “지금 가서 말하지 않는다면, 과연 다른 기회가 있을까?”라고 생각했죠.
Turns out, Guido isn't always much of a talker. Conferences can get overwhelming for someone with so much visibility as he has, but I didn't realize that until later. I asked if he had a moment to talk and he said ”sure!” in a way that I admire (I've rarely heard him be anything but enthusiastic and encouraging). I introduced myself and explained my love of Python and history of studying parsers, compilers, and language theory in school. I told him that I heard his call to action and that I was really interested in contributing to Python.
귀도는 말수가 많은 편은 아니었습니다. 그처럼 널리 알려진 사람에게는 컨퍼런스가 부담스러울 수도 있지만, 당시에는 잘 몰랐었습니다. 저는 그에게 잠깐 얘기할 수 있는지 물었고, 그는 “물론이죠!”라고 답했는데, 제가 존경하는 방식이었습니다. (그때까지 열정적이고 격려를 잘하는 사람인 줄은 몰랐습니다) 저는 제 소개와 함께 파이썬에 대한 제 사랑과 그간 공부했던 파서, 컴파일러, 언어 이론에 대해 설명을 했습니다. 그의 행동 촉구 메시지를 들었고, 파이썬에 정말로 기여하고 싶다고 말했습니다.
Sometime during my babbling, our new conference friend walked by and took a flash photo of Guido and I talking. In a dark venue with few lights on. So ya know, totally not obvious or anything. I was stunned and immediately turned bright red (a true skill of mine). I barely knew either of these people, and I was already feeling very out of my comfort zone. We both sort of ignored it and he said something about emailing him and that we could talk more later.
주절주절 말하는 동안에 컨퍼런스에서 새롭게 만난 친구가 걸어가다 귀도와 제가 얘기하고 있는 모습을 플래시를 번쩍 터트려 찍었습니다. 조명이 거의 없는 어두운 곳이었는데, 나중에야 알게 된 것이지만 저는 완전히 긴장해서 얼굴이 빨갛게 변해버렸습니다(저만의 진정한 기술이죠). 이런 부류의 사람을 거의 만나본 적이 없던 저로서는 이미 제 안전지대를 완전히 벗어났다는 느낌이 들었습니다. 우리는 일단 그 일을 무시하고, 그는 나중에 더 얘기할 수 있으니 메일을 보내 달라고 말했습니다.
I didn't. I was horrified and embarrassed.
하지만 보내지 않았습니다. 두렵고 부끄러웠습니다.
PyCon 2016 came and went, and there still weren't any female Core Developers. Guido made another announcement — that he would personally mentor any females who were interested in Core Development. Again, I thought to myself, ”how can I not?”. So I sent him an email, making a joke about how he probably remembered the embarrassing flash-photo night (in hindsight, he had probably forgotten all about it by the next day).
파이콘 2016에 다시 참석했지만, 여전히 여성 코어 개발자는 없었습니다. 귀도는 코어 개발에 관심 있는 여성이 있다면 개인적으로 멘토가 되어주겠다는 새로운 발표를 했습니다. 다시 한번, 이렇게 생각했습니다. “내가 어떻게 안할 수 있어?”. 그래서 그에게 부끄러웠던 플래시 사진을 기억하는지 농담으로 물어보며 메일을 보냈습니다. (돌이켜보면, 그는 아마도 이튿날 그 일을 완전히 잊어버렸겠죠)
From there, the rest is history; yes, the kind of history you read in textbooks – long, drawn out, and pretty boring. The recommendation for new contributors is to write documentation or fix bugs. The tricky part is that most of the open bugs for CPython are non-trivial and are the pieces that Core Devs haven't been able to tackle themselves; most of the new low-hanging fruit gets fixed incredibly quickly. But documentation and bug fixes weren't what drew me to CPython anyway, so I started reading tons of source code and writing a lot of print statements to walk through the core of CPython's implementation.
거기서부터 이야기가 시작되었습니다. 네, 교과서에서 읽은 역사와 같은 일들이 이어졌습니다. 길고, 늘어지고 지루한 그런 일들요. 새로운 기여자에게 추천되는 일은 주로 문서를 작성하고 버그를 고치는 것들입니다. CPython의 알려진 문제점들은 단순하지 않고, 코어 개발팀 내에서 어떻게 해볼 수 없는 일들로 이루어져 있어 어려웠습니다. 쉬운 일들은 엄청나게 빨리 고쳐지는 데 반해서 말이죠. 하지만 CPython의 문서화나 버그 수정만을 위해 온 것이 아니었기 때문에 산더미 같은 소스 코드를 읽기 시작했고, 수도 없이 많은 print 구문을 찍어가며 CPython의 코어 구현을 알아가기로 했습니다.
Guido supported (read: humored) me through all of it. I'd pick at bits and pieces of code that I would come across so I could learn more about the cobweb-covered corners of the code that hadn't been touched in over 15 years. So every few weeks, I'd meet with Guido and ask questions on the interesting or confusing things I would find. But this didn't get me very far on paper (or, in GitHub PRs, if you're counting (and you really shouldn't be)).
귀도는 제가 이 일을 헤쳐나갈 수 있도록 도움(이라고 쓰고 웃음이라고 읽습니다)을 주었습니다. 15년 이상 아무도 건드리지 않아 거미줄이 가득한 코드의 구석에서 제가 살펴볼 코드 조각을 골라냈습니다. 이런 식으로 매주 저는 귀도와 만나 제가 찾은 코드에서 흥미롭거나 헷갈리는 부분을 물어보았습니다. 하지만 논문을 읽던 것에서 별로 달라지진 않았죠. (또는, GitHub PR을 세어보세요 (하지만 하지 않길 바랍니다))
I was graciously invited to attend the Language Summit at PyCon in 2017, which gave me a reassuring boost of enthusiasm – I was so grateful to just get to sit and listen and absorb as much as I possibly could. I felt like a kid who had snuck into a movie theatre without buying a ticket. I mostly kept to myself and didn't really talk to anyone; I mostly observed. So, PyCon 2017 too, came and went.
저는 파이콘 2017에서 열린 Language Summit에 초대받은 덕에, 열정을 되살릴 수 있었습니다. 감사한 마음으로 참석하여 가능한 한 많이 듣고 배우고자 했습니다. 티켓을 사지 않고 영화관에 몰래 들어온 아이 같은 기분이 들었습니다. 누구와도 대화하지 않고 자리에 앉아 관찰하고 들었습니다. 파이콘 2017도 그랬습니다. 그저 왔다가, 갔습니다.
There were many times in this process that I felt aimless. I was arbitrarily picking things apart without actually doing anything new, which had spells of feeling pretty terrible. Sure, I had moments of feeling comfortable and extremely lucky that I had this opportunity and I loved learning about the inner workings of CPython, but I also had a looming feeling that the next time I met with Guido, he'd say something like ”well, I don't see the point of this anymore and I'm not sure you know what you're even doing, so good luck figuring it out” – which he would NEVER say – but nonetheless, the negative voice in my head would sometimes get the better of me and I worried I was wasting his time. I was certainly disappointing myself.
이 과정에서 목표를 상실한 것 같은 느낌이 자주 들었습니다. 실제로 하는 일 없이 이것저것 했다 말았다 했는데, 정말 끔찍한 기분이었죠. 물론 편안함을 느낄 때도 있었고, 이런 기회를 얻기가 쉽지 않음을 인지하며, CPython의 내부 동작에 대해 배우는 것은 정말 좋았지만, 어쩐지 불안한 마음이 들고, 다음에 귀도를 만날 땐 어쩐지 그가 “흠, 요점이 뭔지 모르겠네요. 당신이 뭘 하고 있는지조차 잘 모르겠으니, 그걸 찾아내길 바라요.” – 실제로 그렇게 말한 적은 결코 없지만 — 라고 말할 것만 같았습니다. 그렇지만, 내 머릿속의 부정적인 목소리가 나를 지배하는 듯 했고, 귀도의 시간을 낭비하게 하는 게 아닐까 걱정도 되었습니다. 정말 저 자신에게 실망하고 말았죠.
PyCon 2018 and another Language Summit came around – this time, complete with me actually talking to other core developers! I had been keeping up with the Python-Dev and Python-Ideas mailing lists more than I ever had before, so I felt like I had relative things to talk to people about. Turns out, that most of the core developers are incredibly kind and welcoming (culture is set from the top-down, and Guido has done an incredible job at guiding our community in this direction). I immediately felt more welcomed than I ever had before. People were interested in hearing my story, I got to hear theirs, we would talk about the technical details of the current hot topics. It was grand. I even found an additional mentor, Eric Snow, who invited me to participate in his work on PEP 554 (Multiple Interpreters in the Stdlib). This turned into a great collaborative mentorship (certainly different than the one I had with Guido, but I could write a whole blog post just on that) where we would each bounce ideas off each other or work through implementation details when we needed it.
파이콘 2018과 함께 다시 한번 Language Summit이 찾아왔습니다. 이번에는 다른 코어 개발자들과 확실히 만나 실제로 얘기를 나눴습니다. 이전보다 더 열심히 Python-Dev 와 Python-Ideas 메일링 리스트를 따라잡은 덕에, 상대적으로 이야기할 거리가 생긴 기분이 들었습니다. 그제야 대부분의 코어 개발자들은 정말 친절하고 환영해준다는 것을 알았습니다. (문화는 위에서 아래로 전파되며, 귀도는 이런 커뮤니티를 이끄는 데 중요한 역할을 해냈습니다) 예전보다 더 환영받는 기분이 들었습니다. 사람들은 제 이야기에 귀를 기울여주었고, 저는 그들의 이야기를 들었습니다. 요즘 가장 화젯거리인 문제들의 기술적인 세부 사항에 대해서 떠들기 시작했습니다. 정말 최고였습니다. 에릭 스노우는 저를 그의 작업인 PEP 554 (Multiple Interpreters in the Stdlib)에 참여할 수 있도록 초대해주기도 했습니다. 아이디어를 주고받다가도 필요할 때는 세부 사항을 구현하기도 하는 대단한 협업 멘토링을 경험할 수 있었습니다. (귀도와 했던 것과는 꽤 달랐는데, 이건 나중에 블로그에 따로 적어보겠습니다)
And then, something incredibly divisive happened: PEP 572 (Assignment Expressions) was approved soon after PyCon 2018. Guess who Guido asked to implement it? Suddenly, all of the things I had been studying aimlessly had meaning in a very real way.
그리고 결국, 엄청난 일이 일어나고 말았습니다. PEP 572 (Assignment Expressions)이 파이콘 2018 직후에 승인되었죠. 귀도가 누구에게 구현하라고 요청했는지 한 번 맞춰보세요. 제가 목적 없이 연구해오던 것들이 돌연 실질적인 의미를 가지게 되었습니다.
From there, I worked on implementing a proof of concept in record time (the easiest parts came first, and it was exactly the thing I didn't know I had already been preparing for). I kept iterating towards an implementation that checked all the boxes and worked with Guido to finalize the hairy details during the Python Core Developer Sprint in September 2018. With an implementation 95% complete, I was promoted to a fully fledged Core Developer, over 3 years after that seed had been planted in my head. There were a few other pieces that needed to fall into place to land the implementation, but that was that. I now “own” a new part of the language that I'm responsible for taking care of.
그 작업에서 저는 기록적인 시간 내에 개념 증명을 위한 구현을 했습니다. (가장 쉬운 일이 처음에 왔는데, 제가 예전부터 준비해오던 것이기에 그러했습니다) 모든 요구 사항을 만족시킬 때까지 반복해서 구현하였으며, 2018년 9월에 있었던 파이썬 코어 개발자 스프린트에서 세부 사항을 완성하기 위해 귀도와 함께 작업하였습니다. 95% 정도 완료되었을 때, 저는 본격적인 코어 개발자로 승진할 수 있었습니다. 이 일을 시작한 지 3년만의 일입니다. 구현이 완전히 자리 잡기 위해 손봐야 할 여러 작업이 있었지만, 그건 그거고, 이제 온전히 “저 자신”이 돌봐야 하는 언어의 한 부분이 생긴 것입니다.
I tell my story to show that everyone's path is different. being a Python Core Developer is not an accolade or a badge of honor. It's often difficult, thankless work, but it is so interesting and rewarding if it's right for you. For me, it's been a way for my love of programming language design and compilers to come full circle; a way to continue to learn and use those skills in a way I never expected I would, and a way to give back to the Python community I've grown to love.
저는 사람들마다 방법이 다를 수 있음을 알리기 위해 글을 적었습니다. 파이썬 코어 개발자가 되는 것은 영예나 명예롭다기보다는 어렵기만 하고, 인정받지 못 하는 일에 가깝습니다. 하지만 적성에 맞는다면 꽤 흥미로우며 보람찬 일일 수 있습니다. 저에게는 이것이 바로 프로그래밍 언어 디자인과 컴파일러에 대한 제 사랑을 표현하는 완전한 방법이었습니다. 또한 예상할 수 없었던 방법으로 제 능력을 계속해서 배우고 사용할 수 있고, 제가 사랑하는 파이썬 커뮤니티에 보답하는 방법이기도 합니다.