Sunday Morning keynote

0 0

awesome thank you so much Elaine for such a warm introduction I want to start off my talk with something a little bit unusual and to start off I'm going to ask that everyone who is on their laptop or on their phone shut it off you've got an email that you're writing if your boss is bugging you on a Sunday he's a bad boss but also close your laptop lid everyone this is gonna be great if you're on a phone make sure you turn it off as well and what we're gonna do is we're gonna do a group breathing exercise to synchronize ourselves and to start off the day really well so what I want everyone to do is to place both their feet on the floor just a little bit apart and you're gonna place your hands on your thighs palm down and then you're gonna close your eyes now what we're going to do is we're going to breathe in and count to three and breathe out and count down to one so I'm going to count with you and we're gonna try and see if we can all synchronize our breathing to the same pace are you ready let's go try and pace yourself with the person next to you pretty soon you're gonna feel the entire room breathing as one once we've reached that point we're going to open our eyes stop breathing you can put your hands to your side and you can cross your legs or fiddle with them or all that fun stuff I think synchronized breathing is such an interesting exercise especially when you do it with a group or a community of like-minded people because so many times we can get our ideas and saying we have opinions that might be in sync but getting our bodies and sync is a completely different and interesting exercise though thanks for doing that and I encourage you to try that at any meetings you might have at work or if you run a meet-up or organize another conference it's a really fun thing to do if you dedicate a lot of time to it it can be really productive but I'm not here to talk about breathing because hopefully you don't need to learn how to do that I'm here to talk about running because I love running and I love programming and when I started to think about what I wanted to share with you guys as a keynote I realized there were a lot of intersections between running and software I love software so much that I a little obsessed with it I'm captain Sofia on Twitter and github my github is super important to me because I am one of the maintainer zhan interact interact is a desktop-based open source interactive computing environment if you have no idea what that means or that combination of words seems really appealing to you come talk to me after my keynote and I'll be sure to share I'm also a contributor on the Jupiter project so if you've ever used the Jupiter I Python notebook some of the code in there is stuff I've written I'm also the corgin Iser of PI data Chicago PI data Chicago is part of the PI data meetup coalition it's a group of people who are interested in the open source scientific Python ecosystem and that tends to be the ecosystem that I work often and at the intersection of open source and Python in scientific computing as a warning this talk contains a lot of stock photos because I'm not a creative person but hopefully you will enjoy it nonetheless so let's talk about running when I first started to run I don't know what got me into it it was just something that I wanted to take on on my own so I went online and I downloaded a couch to 5k running program it was this 10-week program that would take you from a couch potato which is what I was to somebody who can run consistently for 30 minutes and it did that through this regimented plan that involved running and walking on certain days for certain distances or for certain time periods and this plan was developed by an expert so it was somebody who knew how the human body worked how it responded to running and what was the best way to push people but also keep them at a good pace and when I think back to my start with programming I didn't have that same regiment I started off learning to code in Python by readings at Shaw's learn Python the hard way I was a really interesting and special case because I wanted to learn how to code in Python so I could build a search engine because that's what 14-year olds who are bored on their summer vacation do and so I had a sense of what I wanted to do with my knowledge of Python but nowadays most people who dive into learning Python via book via code Academy or other online sources reach this point where they ask what now they've learned the syntax of the Python programming language but they don't really know how to put it to good use they might have a problem that they're trying to solve or an application they have at work but that transition from knowing the syntax of a language to using it to actually accomplish something or to solve a problem is kind of a big leap and so I started thinking about how you can solve this gap that happens between knowing syntax and solving problems and as I thought a bit about it I think there's four more important points that we as a community kind of need to focus on the first we're already pretty good at because we're all here in this conference is filled with lots of amazing speakers and it's giving back to the community whether it's through teaching or writing blog posts giving back is really important in a way to share your knowledge with other people and sometimes you also have to recognize that giving back might be something you have to do pro bono for example me organising PI data Chicago is my form of giving back to the community and I have a ton of people get involved with open source or just accelerate their Python knowledge via the meetup but I don't really get paid for that and it takes a lot of time and energy from me but that energy and time is multiplied when you look at the impact it has on all the people that I've helped and I don't think the Python community has a problem with being generous and giving back their time so we've got that down what else do we need to focus on I think we also need a diverse community of developers and experiences and this is not just diversity and identity your personality it's also diversity of thought and vision and I think what a lot of people talk about diversity some people kind of tend to say well we don't need to focus on the diversity of people's identities or who they are we just need diversity of thought but so much of the way that we think is based entirely on who we are as people on who we grew up with on who our parents were on that one gift that we got for Christmas that changed our lives forever and we're to school on a professor that we met at a particular college that we got into and so in a way our identities are our thoughts and when we have a diverse community of people who are different in their race and their gender and their socioeconomic status we can guarantee that we have a community of programmers who are diverse in the way that they see the world and think about software and I think the Python community is definitely better at this and other communities I'm also a member of the JavaScript community and I think we got them beat there so yay also we don't have awful semicolons in our code and this is another thing that I think is important is to write about the developer experience and not just development what do I mean when I say the developer experience the developer experience is the learning process it's how you go about learning to use a particular framework or understanding how a certain programming methodology works instead of just writing about the framework or the methodology itself and there's really two important reasons that we need to start writing less about our code and more about our experiences with the code the first is that it forces us if we're an experienced developer to be a bit more introspective about our learning process and our approach to software and oftentimes if you've been programming for a long time you kind of stop critically thinking about how you're working and what you're doing but writing about your experience can be a good way to solidify that and we sharpen your focus on how you're learning and I'm going to touch on that a bit further the other reason I think it's important is for beginner developers a lot of beginner developers will have no problem finding content on a particular framework or a particular programming methodology but they don't have a lot of information about the developer experience of how you go about learning of how you move from being a beginner to an advanced developer and a really good example of this is my friend Adrian Lowe who's a member of the Django community as she transitioned from being a personal chef - a software engineer and had a logged her entire learning experience on her blocks that people can read about it and see what the transition from being a non-technical to a very technical person sounds like her looks like so I encourage everyone to write about their own experiences and how this relates to running the first step that you take into a community really sets the stage for the next 10,000 that you take so if you start off a run and your foot strike is poor if the way that you're hitting the ground is poor if your back is slouched you're gonna have a hard time correcting that later on similarly if you start off your developer journey with poor development practices or a poor learning process because you didn't know any better you might have a hard time correcting that later on and the reason I think people have a hard time correcting when they make mistakes is because sometimes it's hard to recognize failure and running puts you in a very intimate position with failure so after I finished my 10-week couch to 5k program I felt like total all-star because I was like running for 30 minutes and it wasn't even that good a pace but I felt really proud of myself I was like alright I'm gonna totally like go crazy and go all-out so what I did I downloaded a 18 week half marathon training program from Hal higden's website Hal Higden is a lifelong marathoner he's one of those people who's been running since they were like five years old so super experienced runner and I was like this is a novice training program I can definitely handle running this much it's no big deal as it turns out the jump from a 5k to a half marathon is actually a pretty big one so I ended up pushing myself too much and I would get injuries and I would like come out of breath after an 8 mile run and I was feeling terrible about myself but the thing is I judged myself unfairly because I treated my failures as failures of who I was as a runner and as a person who is trying to change their lifestyle not failures because I was just at a pace that was way too hard for me or way beyond me and really this is important because recognizing failure means that you have to know yourself really well as a programmer and as a runner one of the most interesting things about running about people who run professionally is the amount of self-awareness that they have and most professional runners have coaches for a reason being a good runner you need to focus on a lot of things as you run you need to focus on your posture you have to make sure your back is straight you have to make sure that your arms aren't swinging too much so you're not expending energy on an unnecessary task you have to make sure that your foot is hitting the ground properly you'll just have to listen to the sound that's your feet and make when they hit the ground if they're too loud it's not a good thing so you have to focus on all of these things you have to be so aware of yourself and the place that you're in as you run and runners who are really good at keeping awareness of their body as they run are some of the best runners in the world because they know how to pace themselves I was like I'm trying to build my self-awareness as a runner I'm trying to be more aware of how I move in a space but I didn't really have that in my tech career and the result was a lot of burnouts I really didn't know who I wanted to be as an engineer what I wanted to focus on in the open source world well parts of open source I wanted to focus on and as a result I was taking on jobs and side projects and community organization efforts that really didn't align with where I wanted to go and I ended up burning myself out and I think we all need to have a particular or self awareness about who we are as engineers and where we want to go we have that we would burn out much less and to rephrase sun zoo if you know your goal and know yourself you need not fear the result of a hundred syntax errors and all the other awful stuff that mentally wears on you as a developer I probably will go crazy after facing too many null pointer exceptions in Java when I was in high school but in addition to recognizing what your goals are you need to know when you need to push further beyond them and it's this really interesting balance that you have to maintain you have to be aware of yourself enough to know what you can handle but you need to use that same self-awareness to understand how far you can push yourself beyond what you can handle one of the biggest things that a runner has to balance is recognizing when they don't want to run anymore because their body physically cannot handle it at which point you should stop running or your doctor really hate you trust me I know or situations in which they don't want to run anymore because their mind can't handle it and you want to conquer the mind and kind of relax the body in those situations and so this is a really tough balance that you have to make as a developer as a runner and then as a developer you need to be able to know when you're comfortable in the particular framework that you're using or the library that you're working with or the programming language and when you need to push further and expand your knowledge and so in a way programming and running both involve a strong sense of self-awareness and control I think that's what makes software in programming hard for a lot of people you need to have a great amount of mental calmness and awareness to be able to write software and write software in a way that's productive for yourself and for the environment that you're in and self-awareness also requires a strong awareness of privilege - and this reminds me of an incident that happened when I was in Salt Lake City I was going out for and I was walking home from my run and I remember it was around sunset it was getting a bit dark and in the distance I saw two figures laying down on the sidewalk it looked to be a man and a woman and I saw them in the distance and immediately I was annoyed and I said terrible things in my mind that I probably shouldn't have said in the moment because what I thought it was some couple or somebody who was hired drunk and being a complete nuisance to everybody else by laying down in the middle of a sidewalk that people were trying to walk on and then I got closer and I realized that it wasn't a couple it was a mother and her son with Down syndrome who after playing with chalk the whole day had decided that he wanted to lay down on the sidewalk and I felt so shameful I felt that guilt that we all feel when we unfairly judge someone for a situation that we can't control and in that moment I was so aware of my privilege here I was existing in a world where I felt safe enough as a young woman to run out in the street right around sunset and not fear for my safety here I was in a position where I could leave work early because at that point I was working in my back porch remotely and go for a run whenever I wanted whether it was the evening or the morning or the middle of the day and this I think is kind of a modern complexity to running a lot of people will say that running is a self-contained sport that it's so enjoyable because you don't need equipment or facilities to do it but I think in our modern time running is a sport of privilege it requires you to have the time and the safety to feel ok running outside or indoors and in a hectic and fast-paced world where a lot of people don't have those privileges running isn't really as liberating as it was and so in a way I had a advantage and privilege that that little boy would never have and in that moment I was struck by the differences that we all experienced and I still think about it to this day because I think we all encounter moments when we realize just how good we have it it's important to take those moments with us and privilege translates directly to a concept that I hate and software if you follow me on twitter which is captain sofia you know that i talk about this all the time which is the concept of rockstar developers and the unhealthy attitude around hero worship that we have in the tech community I think a lot of people look at certain developers and see them as Rockstar developers there are no Rockstar developers there are just developers who have been given with the most elusive privilege of all the privilege of luck they ran into the right person at a conference they fix the right bug in a particular open-source project they went to the right school they met the right professor they just had it right at the right time and unfortunately not all of us are going to be lucky but luck plays a really important part and who becomes a rockstar and who doesn't and stepping back from talking about individuals and so what Rockstar developers the most important thing about any activity is the community around it and this is my favorite thing about soft about running I call it the silent cult of the runners there's this experience that you have when you're running along a path and you're alone or you think you're alone and you've zoned out into your music and in the distance you see another running runner running towards you and there's this moment of connection of knowing that you're on a common journey with somebody else who's completely different from you and it gives you a boost to wave at them or to not as you run by to know that somebody else is trying to do the same thing that you're doing and I think the same thing exists in tack we have the silent or maybe not so silent cult of the programmers and we all get that same boost of being around each other and knowing that there are other people who are on their developer journey when we go to conferences or if you've ever passed somebody in a coffee shop who you knew as a developer because they had way too many stickers on their laptop that kind of community is really important because it provides fuel to us when we might not have it it gives us the energy to push forward I mentioned earlier that I work a lot in open source open source is a very community driven effort it's really transparent it's all out there you work with people in the open you make lots of friends it's fun everyone do it but at times it can be very lonely you might be sitting at your desk working on a pull request or writing a grant or writing a blog post for the project and in that singular moment it's hard to connect the work that you're doing with the impact that it's going to make that's when you have to kind of lean into the community and rely on them so I got this Twitter message from somebody a while back and it made me really happy because for once I saw that the open source work that I was doing had an impact even if at times it felt like it was just me and a really annoying get problem which I have plenty of those trust me I think that kind of community is really important and more one of the most important aspects of community is working with developers who talk more about what they don't know than what they do know and this is when I get alarmed because at some point people started calling me an expert on open source I have no idea what I'm doing I just started banging on a keyboard and somehow I'm here and I try my best to talk more about what I don't know and a lot of the answers that are still a lot of the questions that are still left unanswered in the community that I'm in that I do talking about what I do know and one of the warning signs that have kind of come across of developers that might be toxic to work with or not productive to work with our developers who always talk about what they do know and when I said that you probably thought of somebody right and I think that's problematic because it shows two things it's either that they're not willing to push themselves forward and learn more or they're so self-indulgent that they can't admit what their failings are and what they don't know I really liked Raymond's talk yesterday because he talked so much about case studies of failures of not knowing things and that's how you know Raymond is a great developer because he talked more about what he didn't know than what he did know you know what I don't know how to run in ten degree weather without freezing your ass off and hating yourself that's a question I'm still trying to answer so winter is coming up and in about I think three weeks is when December starts I'll be starting my winter training program during winter training I do run outside because I'm an insane person whether it's snowing or hailing or like God knows what's going on outside because of climate change I'm out there at six I am running and it's a really interesting challenge because it's you against one of the most kind of basic human arch-nemesis that ever existed which is the environment the elements the weather as a reminder or a note to everybody I live in Chicago also known as the Windy City also known as a terrible place between December and March and I've already started to experience this kind of struggle of facing the elements right now into the let me tell you there is nothing that will like put you up against like the human characteristic of endurance and having to run south west against a 30 mile-per-hour wind I'm sorry I didn't convert that for the Canadians but it was terrible and as you might suspect I don't have a lot holding me down so was it it was not a fun experience but the thing is when you run in extreme weather conditions whether it's extreme heat extreme cold very high altitudes your body's going to struggle to a load to accommodate to those different conditions and your pace is naturally going to slow down but when you are in that situation you don't blame your slow pace on yourself you recognize that it's because of the environment that you're in and what I realized was that I couldn't translate that concept effectively into my career in tech whenever I existed in a workplace that was obviously hostile because I had an unsupportive manager or I had a co-worker which just wasn't respecting me or my ideas why did I blame myself for that if when I'm out on the trail running against a really strong wind the wind is obviously at fault when I slowed down so I couldn't translate that into my career in tech and I think it's really important for all of us to know when we're being hindered by ourselves and when we're being hindered by the environment that were in and it goes back to that self-awareness I talked about the elements and I want to talk about another interesting connection between programming and running and it goes back to like the dawn of man sorry not to use that transition because people tend to hate it my 8th grade English teacher did at least when humans first developed their large brains the same large brain cell our stright software and organize conferences like this we required increased caloric intake to provide energy for that brain and so we had to accommodate our food gathering techniques appropriately and one of the techniques that emerged was a technique known as persistence running one of the things they need to know about humans is that we're not the strongest or fastest animals on the planet person but we are the most endurance and interest really enough we sweat really well and so persistent running was a technique that was utilized by hunters where humans would run after game for long distances until the animal that they were running after would die of heat exhaustion because it couldn't sweat and maintain coolness as well as human stood in that heat and then we would eat the animal and it would fuel our minds and then we would one day exist in a society that could somehow build a machine called a computer that could execute code that would change the world and so I think this is really interesting because in a way thinking and fueling the way you think are - of what I like to call primal obsessions there are two of the most basic things that we can do is and us humans it's all about getting back to the basics of what it means to be a person I encourage everyone to try this there is something so cathartic so appealing about working through a really tough bug or a really hard programming challenge closing your laptop and then going out for a run or a bike ride and engaging in just like a really physically intensive human activity I think as tech workers we exist in a society an ecosystem that always demands our attention whether it's like our insane deployments lakh Bahts which I saw a lot about this conference or like her bosses emailing us are things crashing everywhere we're constantly bombarded by technology both because we build it and because we use it so excessively and sometimes it's good to show all of that off and get to the basics of what it is to be a human being which is to solve really hard problems using our magical human minds and to run really long distances my plan is to convert everyone to a runner after this talk so I hope I'm being effective and getting back to the basics running long distance is kind of shutting off all the noise around you can be a really uncomfortable process and that's one of the things that's so great is it forces you to get comfortable with discomfort and that's translated so much into what I do in tech open source can often be a series of uncomfortable circumstances especially when you're a woman of color in the field you have to deal with the responses to pull requests that make you feel like maybe they were angry at you for more than just the what your code was written and managing that discomfort has been so much easier for me to do now that I've started running and managing the physical discomfort of being a long distance or a speed runner you know what else is really uncomfortable strength training this is one of the mistakes that I made when I first started running when you run it's all about increasing the efficiency of your body how well you can utilize oxygen and one of the mistakes that a lot of runners will make is not doing any strength training when they start to run strength training is really important because it builds muscles in your body having strong muscles prevents injuries when you run it's the combination of strength training and long distance or speed running that makes runners successful and that translates very well into tack as I think we all find a particular subfield of the tech world that we all want to specialize in maybe you're really into data science are really into DevOps and we get so comfortable in that particular subfield that we're in that we fail to step out of it and dive into something else and I think a really good exercise for everyone to do is figure out what subfield you're in like maybe you work in DevOps maybe you're a data scientist maybe you program with a particular framework and try and learn something new but not just anything new try and learn something that your co-workers or somebody on another team in your office is using and go through the experience of being a beginner in that particular area and then try and train yourself and both things simultaneously so you just become like a super-powered engineer on both dimensions and then when you do strength train when you run one of the most important things that you have to do is keep good form so I'm betting on the fact that most of you here have tried to do push-ups yes okay probably the wrong crowd to ask about push-ups so if you've ever done any kind of work our exercise you know that one of the things that a trainer will tell you to do is to keep good form and you've all experienced this you're like getting ready to do to do a push-up and you're like so into it got your hands in a good position your back is nice and straight your feet are at the right position you like do one push-up you're feeling like a total boss you get down to do the next one your back starts to sink a little you realize oh no I've never actually done push-ups before if your back raises a little and then you keep going but your form is bad you're not actually exercising any of the muscle groups that you need to exercise because you're not in the right position to get the most value out of that exercise and when I started thinking about this I realized that I suffered from a similar thing in the software world and it relates to my learning process we all have situations where the way that we learn how to do something might be the least effective way to do it I'll give you an example one of my guilty pleasures is copying and pasting code from Stack Overflow without reading like the paragraphs of analysis and text that the person has put in and like poured their life into because I just need a code snippet and that's all I need and that's an example of me having poor form and that's an example of my learning process my learning exercise not really working out the muscle groups that I'm trying to work out because I'm not doing it right and so if the way that you're learning is an impactful if you're not taking the time to like lengthy analysis that somebody posted then there's really no doing that you need to kind of be very self aware of how you're learning and when you need to stop correct your form and then get back to it and another thing that you learn when you strength trainer do alternate exercise is the importance of slowness if you've ever worked through a workout tape let's see if I get a better response from workout tapes than I do from doing push-ups not really okay so if you've ever worked out via workout tape or just online videos or anything you'll notice that the trainer will oftentimes tell you to do an exercise really slowly and if you've ever worked out and you've actually gone through and taking the time to work really throw it through an exercise you'll almost feel your muscles compressing and expanding and you'll feel them getting stronger I think this is really important to do in TAC because in time software accelerates really rapidly I also belong to the JavaScript community as I mentioned earlier and they've got like a new framework or like a methodology out like every other Tuesday and so it's hard to keep up with that but what I learned is it's not about absorbing things immediately as they come out it's about taking time to synthesize the trends that are going on understanding the problems that people are trying to solve understanding the root cause of most things engineers tend to do this thing where they like create a hundred different solutions to the same problem and when that happens you get what happens in the JavaScript community which is tons of frameworks coming out every other day and what happens when what you need to do when that happens is to focus on the root problem that they're all trying to address and to work through that one slowly and steadily and that's how you get the most impact out of your learning experience and that's kind of what I've learned in the brief amount of time that I have to share with you about how running and software intersect it's been a really interesting journey there's kind of a long and winding trail of more runs and more insights into how running and software intersect for me and I think if you took the time to focus on it there would be a lot for you as well thanks for having me you can go my website which is Sofia dot Rox for more info and good stuff I have the best top-level domain in the world so there's that thanks to a woman of color and tech and Flickr for the stock photos I'm gonna do the thing that Tracy did and have like more good stuff after the thank you so just some stuff that I'm coming up working on and I think you might be interested in I'm doing an open-source live stream on Twitch of like how I work on interact I did this because I posted a tweet that I don't have syntax highlighting turned on in vim and people freaked out and were like how do you even write code with no syntax highlighting I will show you how I write code so he joined me for the live stream and follow me on Twitter it'll be really fun [Music] I'm also doing a getting involved with open source Q&A with codementor IO it's so Evan R type thing where if you have any questions about open source and how you get into it I'll help answer them if you're really excited about what Raymond discussed yesterday and you kind of want to get more info this is a good place to get that info it's gonna focus less on the tech side of getting started with open source and so I will be talking about how you get set or how you get your code editor set up it'll be more focused on kind of the social and cultural introduction to open source and finally I'm working with David Beasley to do a Python office hour series and a couple of other people and so it's a one hour long office hour where you just get to ask us questions about Python and we'll answer them to the best of our abilities all mine will focus on data science and data analytics with Python so that's something you're interested in be sure to check out that link as the events come out they are free but they are limited to 20 people so make sure you like track what events are announced in like register for them soon ok now I'm actually done [Applause]