We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

The Different Roads We Take

00:00

Formal Metadata

Title
The Different Roads We Take
Title of Series
Number of Parts
160
Author
License
CC Attribution - NonCommercial - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
The Different Roads We Take [EuroPython 2017 - Keynote - 2017-07-13 - Anfiteatro 2] [Rimini, Italy] We've all taken different routes to get to where we are today, and we're not all currently on the same road going the same place. Tracy Osborn will talk about the idea of the ""Python engineer,"" her (long and full of bumps and potholes) journey to learning and teaching Python, and the harmful myths about learning programming and the paths available when you do so
95
Thumbnail
1:04:08
102
119
Thumbnail
1:00:51
SoftwareIntelSheaf (mathematics)CausalitySystem callBitLecture/ConferenceXMLComputer animation
Goodness of fitFood energyGroup actionAxiom of choiceMetropolitan area networkXMLComputer animationLecture/Conference
WebsiteBroadcast programmingInstallation artWeb pageOnline helpJames Waddell Alexander IIMereologyOpen setCASE <Informatik>Scheduling (computing)Wave packetBoss CorporationException handlingMathematicsSpacetimeFreewarePoint (geometry)Mobile appWeb pageWordLecture/ConferenceXML
Event horizonInformationWebsiteEvent horizonSlide ruleMereologyAeroelasticityInformationQueue (abstract data type)QuicksortWebsiteProduct (business)
FeedbackGreatest elementMultiplication signAdditionFeedbackForm (programming)MereologyArchaeological field surveyOrientation (vector space)Internet forumXMLComputer animation
Orientation (vector space)Projective planeGroup actionCASE <Informatik>XMLComputer animationLecture/Conference
Perfect groupLecture/Conference
FeedbackArithmetic meanProfil (magazine)WebsiteTwitterPoint (geometry)State of matterLine (geometry)Computer animation
MultimediaWeb applicationSeries (mathematics)BitWeb 2.0QuicksortMeeting/InterviewLecture/Conference
Multiplication signAuthorizationBitPresentation of a groupSource codeSpeech synthesisWeb applicationView (database)Bit rateWordArithmetic meanSemiconductor memoryHeuristicRight angleCode refactoringLecture/Conference
MIDIBit rateOnline helpHypermediaLinearizationMultiplication signComputer programmingLecture/Conference
Software developerComputer programmingRight angleProgrammer (hardware)AreaAuthorizationDisk read-and-write headComputer programmingInformationProcess (computing)Solid geometryBitContext awarenessOnline helpSoftwareSoftware engineeringComputer animationLecture/Conference
NeuroinformatikFloppy diskRight angleNumberGame theoryRun time (program lifecycle phase)Group actionNetwork topologyMereologyFamily
Online helpWebsiteWeb pageWeb 2.0Group actionParameter (computer programming)InternetworkingPoint (geometry)WhiteboardWordVirtual machineInformation technology consulting
Maxima and minimaWechselseitige InformationCalculationGroup actionComputer programmingMultiplication signComputer programmingWebsiteInsertion lossAuthorizationHand fanWeb pageOffice suiteFrame problem
WebsiteWordComputer scienceDegree (graph theory)Multiplication signComputer programmingPerfect groupNeuroinformatikUniverse (mathematics)Centralizer and normalizerCalculationFamilySource codeComputer animationLecture/Conference
Fundamental theorem of algebraComputerComputer scienceEntire functionSocial classUniverse (mathematics)Line (geometry)Data miningBookmark (World Wide Web)Process (computing)Online helpSummierbarkeitJava appletJSONLecture/Conference
Social classProcess (computing)Logic programmingWater vaporResultantTheoryGodFundamental theorem of algebraOcean currentProjective planeAbstractionPoint (geometry)Graph (mathematics)Formal languagePattern languageSpring (hydrology)Source codeComputer programmingCodeSystem programmingQuicksortReverse engineeringComputer scienceJSON
NeuroinformatikComputer scienceStudent's t-testComplete metric spaceSocial classDegree (graph theory)Moment (mathematics)QuicksortGodAbstractionProjective planeGradientGroup actionNatural numberWordMultiplication signDirection (geometry)Process (computing)Lecture/Conference
Scripting languageFormal languageFunction (mathematics)Core dumpDisk read-and-write headWebdesignComputer programmingUniverse (mathematics)Digital photographyEndliche ModelltheorieProcess (computing)Monad (category theory)Scripting languageFront and back endsWeb-DesignerJava appletSoftware developerComputer animation
Similarity (geometry)Different (Kate Ryan album)Universe (mathematics)Computer programmingMultiplication signNeuroinformatikType theoryStatisticsBitSocial classComputer animationLecture/Conference
ComputerTwin primeRadio-frequency identificationLink (knot theory)GenderStatisticsMusical ensembleSoftwareSoftware developerRight angleComputer programmingUniverse (mathematics)Surface of revolutionNumberSocial classComputer scienceProcess (computing)EstimatorStudent's t-testMereologyCuboidNeuroinformatikInheritance (object-oriented programming)Multiplication signWordSymbol tableAbstractionComputer programmingSpeech synthesisRange (statistics)Lecture/ConferenceJSON
Form (programming)Parameter (computer programming)Range (statistics)MathematicsProgrammer (hardware)BitGraph coloringParameter (computer programming)Goodness of fitBlogComputer programmingUniverse (mathematics)NeuroinformatikBinary codeComputer scienceRight angleChemical equationLecture/ConferenceComputer animation
Lemma (mathematics)Menu (computing)Meta elementOpticsMoving averageCore dumpLimit (category theory)Cartesian coordinate systemGamma functionDivision (mathematics)SimulationNeuroinformatikVideo gameMereologyJava appletComputer scienceEvent horizonMultiplication signComputer virusCommunications protocolLecture/Conference
Hill differential equationComputer configurationMaxima and minimaUniverse (mathematics)Parameter (computer programming)Software frameworkComputer programmingGradientComputer animationLecture/Conference
Lattice (order)CodeSoftware frameworkDean numberSummierbarkeitLink (knot theory)Mass flow rateGamma functionConvex hullWeb applicationHill differential equationMeta elementDatabaseAbstractionBlogBitRevision controlWeb applicationUniverse (mathematics)NeuroinformatikWeb 2.0Code refactoringEmailBuildingWritingMultiplication signComputer programmingEndliche ModelltheorieHydraulic jumpXML
Mobile appWorld Wide Web ConsortiumOrder (biology)WebsiteStress (mechanics)Streaming mediaComputer programmingTheoryComputer programmingProcess (computing)Structured programmingType theoryGame theoryWeb applicationBuildingAbstractionVideo gameGroup actionComputer animationLecture/Conference
Web applicationWeb 2.0Graph coloringVotingHypermediaArithmetic meanRight angleComputer programmingPower (physics)BitDifferent (Kate Ryan album)Pattern languageWaveLecture/ConferenceComputer animation
Degree (graph theory)BootingProgrammer (hardware)EmailComputer programmingSoftware frameworkMultiplication signSystem programmingNear-ringWeb applicationFacebookMobile appLimit (category theory)Bit rateBenutzerhandbuchBuildingInsertion lossLibrary (computing)Computer animationJSONLecture/Conference
Execution unitInvariant (mathematics)Exception handlingComputer programmingLattice (order)MathematicsWechselseitige InformationMenu (computing)Formal grammarVideo gameComputer programmingSoftware frameworkGoodness of fitProgrammer (hardware)Computer programmingHybrid computerLine (geometry)NumberCode
Drop (liquid)Standard deviationRadiusComputer programmingProgrammer (hardware)Web pageArithmetic meanLecture/Conference
Computer scienceMultilaterationType theoryComputer programmingSoftware frameworkComputer programmingDegree (graph theory)BootingVapor barrierStudent's t-testReal numberProgrammer (hardware)AreaParameter (computer programming)HypothesisJSONLecture/Conference
Execution unitSoftware engineeringUniverse (mathematics)Content (media)Design by contractProcess (computing)Parameter (computer programming)MereologyGroup actionComputer programmingDegree (graph theory)Endliche ModelltheorieProgrammer (hardware)Public key certificateBootingCodeWeb applicationVideo gameStudent's t-testJSON
Streaming mediaConvex hullGraph (mathematics)Wave packetArchaeological field surveyProgrammer (hardware)Multiplication signE-learningNewsletterTwitterLecture/ConferenceXML
Level (video gaming)IRIS-TWeb pageArchaeological field surveyRight angleAuthorizationProgrammer (hardware)Computer programmingMultiplication signTableComputer animation
Computer programmingDifferent (Kate Ryan album)Software developerOnline helpFront and back endsFitness functionSoftware engineeringSoftwareStatisticsProgrammer (hardware)Equaliser (mathematics)AuthorizationSoftware frameworkConsistencyComputer programmingMereologyParameter (computer programming)Lecture/Conference
Software developerComputerNeuroinformatikClosed setPlotterDegree (graph theory)Universe (mathematics)TheorySoftware developerComputer programmingHacker (term)Computer scienceBuildingInternetworkingBit rateDifferent (Kate Ryan album)Inheritance (object-oriented programming)WebsiteWeb 2.0AbstractionJSON
Visualization (computer graphics)Computer fileFluid staticsWebsiteView (database)Endliche ModelltheorieGame theoryMeasurementProcess (computing)AreaLecture/Conference
Computer fontMotion blurMaxima and minimaGamma functionTwin primeComputer fontDifferent (Kate Ryan album)SoftwareSoftware frameworkOnline helpMereologyGraph (mathematics)XML
Computer clusterSoftware developerProcess (computing)AreaFront and back endsProgrammer (hardware)Different (Kate Ryan album)Data miningMereologyMultiplication signCartesian coordinate systemQuicksortOpen sourceWaveWordSoftware frameworkNumberParameter (computer programming)Prisoner's dilemma
Computer clusterRepresentation (politics)Presentation of a groupTheoryComputer programmingMultiplication signSoftware developerRoutingFront and back endsProgrammer (hardware)Equaliser (mathematics)Lecture/Conference
Hydraulic jumpPresentation of a group2 (number)Computer programmingProgrammer (hardware)Bit rateProcess (computing)Electronic program guideMultiplication signComputer programmingHand fanWhiteboardProduct (business)Power (physics)Complex (psychology)Latent heatCodeTouch typingNetwork topologyData managementInformation technology consultingScaling (geometry)Forcing (mathematics)Element (mathematics)Software developerOnline helpEvent horizonVideo gameMusical ensembleMereologyField (computer science)
FingerprintMenu (computing)BitLevel (video gaming)Web 2.0WebdesignComputer programmingParameter (computer programming)Lecture/ConferenceJSON
Transcript: English(auto-generated)
Okay, great. So I think we can start with the announcements and today's session. So the first thing, as you know, is Buongiorno! Buongiorno a tutti! So, and I heard actually that yesterday you also learned the Comestate. Comestate. Comestate.
And the answer to that, which is the new Italian bit for today, is Benne! Benne!
Okay, let me tell you something about this Benne. So in Italian, if you say Benne, it actually means you're not feeling super good. So let's try that again. So you really need to feel, if you're really feeling good then you really feel the energy going up
and then you see, you automatically see that your hands have to move, remember? It's Italian and it really goes up to the smile and it's Benne! Benne!
Okay, so you have these two choices depending on how you feel, that's good, just be aware of them. So Comestate. Okay, so tomorrow Alexander will check, so please make me proud.
Let's go back to the announcements, serious announcements. So ladies and gentlemen, no food and drinks in the rooms except for your amazing gadgets for Europieden bottles. Double check the schedule because there might have been some change.
So remember our great app that you are hopefully using, that you can download for free. Prepare for the trainings, so in case you're attending the trainings, remember to download, install and see the training pages.
For today, there is two Europieden sessions. So remember that at 2, you can join us and if you're willing to help us to build Europieden 2018. And that's going to be followed by Europieden Society General Assembly at 2.35.
So the boss here told me that the second part is like the boring part and the first part is the woo part. So just remember if you're willing to help us, just join, that's open for everyone. And there is probably going to be also a further open discussion session that is going to be announced in the board, in the open space behind the reception.
And it's going to be somewhere at some point in the afternoon. So for all people who would like to discuss about how to organize and improve Europieden for future years. Next point, tonight, there is the social event at Coconuts.
So first of all, the event is sold out, so unfortunately no tickets anymore. But the good thing is that if you didn't get your ticket yet, you can still obviously pick it up.
And please do it at the reception before three today, preferably, so that we avoid queues at the end. There is information on the website, in the events page, on how it's going to happen. And basically it's going to start at seven. From seven to ten there's going to be a sort of aperitivo standing buffet.
And then there is the party afterwards until early in the morning. So there is a part which is private reserved for us for the whole night. But after ten, remember that people from outside, external people can also join the rest of the bar.
Okay, so this is where the party is going to happen. We are in the bottom thing. This is not working.
And in the top you should see the Coconuts bar by the beach. Next announcement, feedback of the conference. So remember that at any time after the talks you can rate the talks and hopefully write fruitful comments for us and for the speakers.
And in addition to that, after the conference, so next week, you will receive a Google form in which we ask you for some questions. And we really invite you and encourage you to answer and take part of the survey because it's really helpful for us to build up and improve for the next edition.
Final thing, today at five there is going to be a sprint orientation. So you might be aware that in the weekend on Saturday and Sunday there's going to be sprints or projects in which you can work together in a group. And today you can join. There's going to be some explanation on how this is going
to work and also gathering ideas of people who would like to propose projects for the sprints. Okay, so that's it for the announcements for today. So enjoy the conference. Okay, so we move to, okay, so we welcome our keynote speaker for today, Tracy Osborn, that just joined us from Canada.
And please, great, so she's a designer, producer, entrepreneur, and she is going to tell us more about the idea of a Python engineer.
So let's see if that works. Perfect. So happy to be here. Ciao. I'm Tracy.
A while ago I made the best mistake of making my username on the internet, limedaring. It's my GitHub profile, it's my website, it's my Twitter handle, it's my Instagram. And it is constantly confused as lime darling even by me, which is annoying because I can't go back and change it at this point.
So FYI, if you want to stalk me, send me questions on Twitter, send feedback on this talk. FYI, it's lime daring, not lime darling. So these are my books. It's Hello Web App.
I have a few here if you want to see them in person or buy them off me. They're my book series introducing Django and teaching people how to make web apps. So like I mentioned, I live in Canada. I'm originally from California. I'm more, I think, well known in North America. So a little bit of an ego check here.
How many people in this audience have heard my name, seen my books, know of me of some sort? Alright, cool. Relatively unknown here. Awesome. So you should check out Hello Web App. These are my books. I designed them, I wrote them.
And I did Kickstarter for them, raised a lot of money. If anyone here is a Kickstarter backer, thank you so much. So I wrote the books. I've done a lot of conference speaking. You might have seen me at DjangoCon Europe in Florence a few months ago. I've spoken at DjangoCons, at PyCons. I was in Berlin for View Source last year, I believe.
So I do a lot of conference speaking. I am an author of a book on Django. So sometimes I feel kind of badass. But then comes times.
And I'm sorry EuroPython, thank you so much for inviting me to do a keynote talk here. But I'm going to start off my presentation by doing a little bit of criticism. Sometimes I see things like this, which is rate your Python power, rate the amount of Python you know. And I just go into this swirl despair. I mean again, I wrote a book on Django.
I'm not going to say on Python, but I wrote a book on Django. Sometimes I feel really awesome, but then I see these questions and I'm like, oh no, where do I fit? Like I really, really don't like being pushed into just kind of this linear, you know, what star are you?
One, two, three, four, five. Although I did laugh when I saw this question, because I was like, oh my gosh, that's exactly what I want to talk about at this keynote. So thanks, EuroPython. Sorry for criticizing. But this is exactly what I want to talk about. Is this idea that there is this linear path in programming.
There's this linear path in Python where you go from, say, beginner to intermediate to advanced. And how this path can actually exclude a lot of people, how this path can make people feel unwelcome. Like I put three stars for myself out of pride, because I didn't want to be like, oh, I'm a keynote speaker at EuroPython and I'm, you know, two stars.
But really that's actually where I am, probably two stars. The thing is, is that, confession, I'm Tracy, and I have absolutely no intention of becoming a software developer.
Like, as a job. I've chosen to teach myself programming, I work with Python, I write to help teach other people Python and Django. But the idea of, say, a five star Python programmer is not a place where I'll ever, ever go. It's not for me. You know, so I'm still, you know, I'm still a software engineer. I'm just not a software, like a software developer.
I'm not, I look at the curriculum here at EuroPython, I feel this dissonance, again, being an author of books, and yet still going to beginner sessions.
So I do, like I said, I do a lot of conference talks, and I have some very strong ideas about talks versus keynotes. When it comes to talks, I like to have concrete information and, like, solid takeaways. Like, you know, a full, like, something that people can walk away from, something they can write down.
Whereas keynotes, I think, are a place where we can explore a problem, where we can ask questions, we can tell stories, we can start a discussion without really having a conclusion. So, just heads up. I just want to talk about a little bit of my story and how I've
gotten here, and some of the issues that I've seen in programming that I think are affecting our industry that I don't really see talked about as much, or at least in the context in which I'm doing. And I want to just start this discussion. So there's no going to be, like, the
stars and the badges, I'm not going to say, that is not the right thing to do. Because, you know, that's just my opinion, it doesn't work for me. I'm not going to have solid conclusions like that. I'm just here to start a discussion. So to really get my full background, you have to get my full background,
so I'm going to start out telling my personal story about learning to program. Rocky Road to programming, which features the rocky road that I grew up on. I grew up in Northern California, a very, very rural area. My town was about 3,000 people, and I lived about half an hour away from it.
I was lucky to have a couple family members that were involved in computers in the 80s, my grandfather and my uncle. So I was lucky, you know, I was born in 1984, I was lucky to always have a computer, like incredibly lucky.
That's part of the reason why I'm here, is I was introduced to computers so early, like those giant floppies and everything. And when it came to, alright, should I go outside and run around in the trees and mountains and be outside, or be on the computer, tack-tacking, playing games, I chose to be on a computer.
And then came the 90s, and basic HTML, and I was like, boom, this is awesome, I can make web pages, I can host them on like angel fire. And this is around, say, 1996, I taught myself basic HTML.
I discovered that teachers at my high school, if they asked you to write so-and-so page report, I just ignored their instructions, and I made a website. And then I showed them the website on the internet, they're like, whoa, instant A. And that is how I got through high school, was just by building websites.
And like, by websites, I mean things like this, this is actually the website I taught myself HTML from, from Wayback Machine, brings me a lot of joy. I had friends who programmed calculators, I was friends with a nerdy group in high school, and I was never really interested in programming calculators.
Like that was, I thought I was programming, and I know HTML is not, but at the time I did. And I was much more interested in doing websites, and things that were visual, and things that people can see, interact with, and that was kind of a hint of what was to come for me.
Once I was in Wayback Machine, I started pulling up all my old websites, I'm not gonna show you, like, these are still live, I'm not gonna give you the addresses, but this is my website from high school. Which was a Terry Brooks fan page, it was actually in the running, the author, fantasy author of Terry Brooks, it was in the running to be the official fan page when I was 14.
And check out that frames, look at those, like, generated buttons, oh my gosh, and somewhere on there is like some really bad poetry for me in high school. I found another website I made, this is my goth phase, everything's really black. So I had what I thought was the perfect background for a computer science degree.
I loved computers, I loved being on computers, I wanted to know everything about them. I liked doing the visual stuff, again, I didn't program calculators like my friends. But I thought I would love, I wouldn't come computer scientist, I'm gonna learn to program and do all these awesome computer things that, you know, I see my family doing.
So this is where I went to university, it's Cal Poly San Luis Obispo, it's about the central coast of California, it's a really great computer science school. And literally day one, hour one, I got a wake up call. I sat down, this is like day
one, hour one of university, not just of this class, this is the very first class I took in university. And the professor just started speaking, and I don't remember what he said, but this was my face throughout the entire first session of computer science.
I forget, I don't remember what he was saying, but I did not get it. I was like, what? Was there a prerequisite that I missed? Was there some piece of knowledge that all these other people, all these other dudes in the class were like, yeah. And I'm like, what? I don't understand a thing here, this is awful. Again, day one, hour one, beginner computer science class.
And I chased the professor down after class, and I'm like, what did I miss? Like, how did I miss how everyone else is understanding what you're talking about? And he's like, it's okay, it's okay, chill out, it'll get better. Really didn't get better. It didn't help that these classes were teaching Java, and like I love Python now, and Java was just, for me learning was not good.
Nothing against the language, it was just not for me. So I passed that one-on-one class. Cal Poly, we were in the quarter system instead of semesters, so there's three quarters per year.
So the winter quarter took 102, which we dealt with GUIs, and I was like, whoa, actually I'm starting to get this. Like, you press a button, and then there's code in the background that does something, and then you see a result. It made so much more sense to me than working the command line. And the 102 was the class I started doing better, and I was like, oh, maybe I can make it.
And then spring quarter was computer science 103, fundamentals computer science 3. And unlike the first two classes of the year, one which introduced basic programming concepts and logic, one that started talking about GUIs,
this class, 99% dealt with theory and abstract concepts, and this was awful for me. Again, I'm a visual person, like when I see something, I click a button, it does something, I'm like, oh, I get it. But when you're, one of our projects was to take sorting methods, and we had to reverse engineer them,
and then create these graphs to show why bubble sort is better than other sort, and oh my god, this class was not good for me. So one project had a rubric, and the rubric, you know, 50% for this, 20% for this, and if I'm a struggling student,
I'm going to mentorship sessions, I have a tutor, I'm trying so hard to pass this class. So of course when you get a project like that, you spend the most amount of time on the thing that's worth 50%, of course, naturally.
And when the professor gave me back my project, I had a lower grade because he had changed the rubric. Some things were worth more on the second rubric than before. So again, as any student would do, I went back to him and I said, hey, you know, this was worth so-and-so, can I have the original rubric back because I would get a better grade?
Naturally, right? Like, no one should be surprised by this. Of course you would do this. And the professor, you know, people who quit computer science, you know, maybe or not they can say the moment that they quit computer science, and this was my moment. Professor emailed back saying, okay, fine, I'll give you the old rubric.
And then for at least three paragraphs, went on to this rant about how lazy I was, and what a bad student I was, and how I needed to stop trying to skate my way through college. Those were his words. Stuck with me. How I needed to actually study, and actually try,
and oh my God, this hurt so much, because I was a struggling computer science student. I was going to these mentoring sessions, I was getting tutored, and these abstract concepts just did not work with my brain.
I was trying so hard, and to have this professor just tell me how lazy he thought I was, that was it. I was done. I started researching that night on how to leave computer science. And I went complete opposite direction. I got an art degree. I was like, screw computers, I hate computers now.
Never going to do computers again. I'm going to paint. And then I eventually started doing graphic design, and my job I was going to do was going to be package design. And I was, again, not going to do programming ever. Again, I hated programming. Like, I thought that it wasn't for me. And I started falling back more and more into computers,
because right before I graduated university, I started working for a startup literally in a garage, which is kind of cool. And they hired me to become their web designer. That's me, my goatee. I like this photo.
I was doing front-end web development for them. Front-end web development usually is HTML, CSS, and JavaScript. But I was so traumatized by Java, and I know Java and JavaScript are not the same, but the mere fact that Java was in the name, and that JavaScript has these really scary curly brackets,
I refused to do any JavaScript at this company. I was a front-end developer ignoring JavaScript entirely out of PTSD. So, I think this story has happened to a lot of other people in similar ways.
And I could have been one of the many who wanted to learn computers, wanted to jump into the tech industry, and then got completely turned off by a class and a way of thinking that didn't work for them. And I think we all know that programming, there's so many different aspects to programming,
and there's so many different ways of learning and ways of programming, of using Python, but this university education was not for me. And that could have been the end of my story.
So, in the bigger picture, I'm going to pause this story and kind of talk a little bit more about stats of the industry. The stats here are more about women in tech. This story, I know, happens to both men and women, people of every gender, but these stats are particularly relevant for women, so I'm going to focus on that.
So, this is awesome. The band of software engineers, software developers, is expected to grow by 17% by 2024. We have so many jobs and opportunities for software developers, and that's just going to keep going up, which is awesome.
However, back in like 1984, 1985, women accounted for nearly 37% of students in university for computer science. But that number has dropped. In 2010, 2011, women just made up 17.6%.
Furthermore, the percentage of women in computer science-related professions have dropped from 35 to 25% in the last 15 years, which really, when you look at these software jobs and how it's just growing and we have so much growth here,
and yet women are taking a smaller and smaller piece of the pie, it's really scary. And I think a lot of my experience in university of having this class and these abstract concepts and this way of thinking that just didn't work for me, this one path didn't work for me. I think maybe it doesn't work for other people, but we can still use tech.
I just want to work on ways on how to bring more people into these other paths. So, speaking of paths, this is a fascinating anecdote. University of California, Berkeley experienced a revolution in their introductory computer science classes after changing the way that they marked, marketed the course. So what used to be known as Introduction to Symbolic Programming is now known as the beauty and joy of computing.
And for the first time in 2014, the number of women outnumbered men. Fascinating, right? And don't just jump to the conclusion just because the word beauty is in the name, that means there's more women, right? That's not it.
When you look at computer science education, typically as a single path, like you are becoming a software developer and you're going to become a back-end engineer and this is, you're going to go from A to B and there's only one straight path. That's what the symbolic programming really implies, like symbolic programming.
That's kind of intimidating, that's kind of super technical sounding. But when you have a title like the beauty and joy of computing, you've gone from something that looks narrow to something that looks wide. More possibilities, more things you can do, like larger range of topics.
And that's why I think that change happened. I want to talk a little bit about the whole one true programmer myth, which is based on the whole no true Scotsman myth where true programmers do this and true programmers do that.
There's a good blog post called the no true programmer fallacy saying if we look at programming as people who can do it or people who can't, just A to B binary thing, then quitting computer science in university makes me someone who can't, right?
Like I couldn't make it in university so I shouldn't try, which is obviously not true because look where I am right now. I'll get into a little bit more of my achievements in a second. While there's many ways, many reasons why women drop out of computer science, from sexism to being exposed to computers later than men,
again I'm so lucky to have had access to computers from such an earlier part of my life. My own particular problem was the way that computer science was taught to me then. It wasn't the best way for me to learn.
And I wouldn't have realized this had the following events not occurred. So back to my story, enter Python, yeah, rainbows, fireworks, so much better than Java for me, oh my gosh. Again, not necessarily better than Java, don't do that, but for me, so much better.
Being in California, in Silicon Valley, everyone and their mother has a startup, and so I got the idea I wanted a startup too, because it looks so easy, right? And because I hate programming, I was going to become the non-technical co-founder, trying to find my technical co-founder, as you do. Go find someone to just code it for you, because I was like, I hate programming, never going to do that,
so I have to find someone to do it for me. Ridiculous. So that didn't go well. I hope there's that. So when I did this co-founder search and things didn't go well, I then looked at my past, and what an awful experience I had in university, how much I thought I hated programming,
like I just don't have the mind for programming, but then I looked at my potential future, and how much I wanted this idea, how much I wanted to build this idea. And someone introduced me to Django, which is like, a lot of people complain about Django as a framework,
because it glosses over all the details, and it hides everything that's going on in the background, abstracts everything away, and you know what, that is what I needed. That is exactly what I needed. I did not need to know the details of what was going on. I didn't need to know really what a database was, which is kind of scandalous.
I used Django to build the first version of my website, and this is actually the second version, I couldn't find a graphic for what it looked like, but I built this website, taught myself a little bit of Python, a little bit of Django, and I basically taught myself how to program by building this website called weddinginfilove,
and I wrote this blog post. It's kind of interesting, I have blog posts for every step of my tech journey, because I've been writing for so long, which is kind of awesome, because I can be like, aw, look how adorable I was. I'm a designer who learned Django, launched her first web app in six weeks. Note that I didn't mention that I went through computer science, did that on purpose.
It sounded like a better story to say, I'm a designer who learned Django. I'm a person who failed out of computer science, jumped into art, became a web designer, then learned Django. It was a smoother story, kind of hid the whole university fact for so long, mainly because I was embarrassed.
So this experience of teaching myself just enough Django in order to launch this website, and then using that to teach myself Python and get more and more into programming, started getting the wheels turning in my head, thinking, hey, if this worked for me, why can't this work for other people, and thus, hello web app.
Started. So I wrote, hello web app. It's essentially the process I used to build Wedding Invite Love. Again, the book, just like Django, abstracts everything away. I don't talk history, I don't talk theory. I don't say you learn how to program, I say you learn how to build a web app with hello web app.
I've gotten so much good feedback from this. It's one of the best things I've ever done in my life, is writing this book, and teaching other people how to build web apps and how to use programming like I did, because there's a lot of other people out there, I think, that struggle with abstract concepts and theory,
but still have desire to build something. And that's why I wrote my book, which was kick-started. Two of both, there's hello web app, and then there's hello web app intermediate concepts. They have both with me, again, if you want to see them. Both are kick-started, and I've done workshops all over the world.
It's been amazing teaching programming. I say teaching how to build a web app as a three-star Python power person on my little EuroPython badge. So that's me, in a nutshell. That explains a little bit why I feel so passionate about this idea of different paths in programming.
And sometimes I want to take my books, and go to my professor, and just wave it in his face, and be like, ha, I almost quit tech entirely because of you, and now I have books. And he'll probably be like, who are you? I don't remember you.
I'll be like, don't you remember me? You wrote that email. So, again, in the bigger picture, degrees, boot camps, frameworks, oh my. I wouldn't be doing what I'm doing personally without a framework,
without being introduced to programming through this hand-holdy Django way. I program, but I don't feel like a programmer. At two separate conferences last year, it was funny, they were back-to-back, and I was not meaning to eavesdrop, but there was people near me,
and they both said something like, man, freaking hate frameworks. They're teaching people to be bad programmers. They should not be taught. They should just go away. Like, these people are mean. And I was like, excuse me? I didn't actually say that. In my head, I'm not that brave.
I wish I was to be like, excuse me? Are you saying I'm a bad programmer? And they were probably like, yeah, and I'd be like, uh-oh, maybe I am. You know, I'm not going to say that frameworks are going to make you an awesome programmer. Again, the HelloWeb app is not teaching you to code, it's teaching you how to build web apps.
I personally would never be hired at Google or Facebook or anything, or something. A couple years ago, I applied for Recurse Center in New York City. It's this summer camp for programmers, and you just kind of work on programming concepts, join the best programming community in the world, and they say, we're just here to make you become better programmers.
And I was thinking, hey, this is my opportunity to finally become a programmer. And I applied, I got through the initial application, and then they wrote back saying, I need to submit a program, like a program that I've written, not using framework.
Like, I, this is Wedding Lovely, ridiculous amount. I'm not, again, I'm not proud of the number of lines of code here, but there's a lot of code in Wedding Lovely, and I've written all of it, and this is, at this point, I'd never written something without Django. So I've written all this code, and yet, I'm like, uh-oh, how do even real programs work?
Which is kind of embarrassing. Like, Wedding Lovely has like over 8,000 businesses on it, over a million page views, and yet, I still don't know how to, I didn't know how to write a Python program. So I'm not gonna say they're wrong, Django did not make me a great programmer.
But it lit the spark, and I actually had a lot of fun with this. I had to go in and be like, wait, I don't understand, why do I need this whole like, if main stuff at the bottom, like what? This doesn't make any sense to me, how to run this program. But I built this tic-tac-toe program, and, is it running?
Yeah, so I wrote, I made this little tic-tac-toe, and you can play against a computer, and I wrote that, and this is literally my first program ever. It's very 101 type stuff, but I had so much fun with it, and more fun than I'd ever had when I was in computer science. So Django and the framework and having this original hand-holding lit the spark that allowed me to have more fun with, you know,
say traditional programming later. And then, the bigger picture, I was sent this paper by a friend, Greg Wilson, in Canada, does a lot of work in this area. This paper is, the barrier is faced by coding boot camp students.
So I didn't go through coding boot camp, but I taught myself how to code, and I know a lot of other people out there have taught themselves to code, and there's a lot of problems facing people who don't have degrees. For example, people in boot camps are faced with stereotypes of what a real programmer is, or isn't, and that's a thing we talked about before,
the whole no true programmer does this, or only true programmers do that. So that's faced by people going through boot camps. Boot camp certificates were not perceived as high as value as university degrees, so when they're going out trying to find jobs, even though they can have
really, really awesome skills using Python, or doing web app stuff, the employers would say, hey, we're looking for someone with a degree instead, which kind of sucks for people like me, who university education doesn't really fit. And contracting or freelance work was not seen as valuable as a full-time job. Again, for me, I've been working for myself, largely, for the last eight years.
I'm not really looking for a job, but I think, obviously, that contracting and freelancing work is a great way to make a living. I love my life. And it sucks that these coding and boot camp students were looked down on by choosing to work for themselves, then find a job.
There was a lot of quotes in this paper from people who said that even after six months of programming, they still didn't feel like an established programmer, which says a lot about their industry, that they can be programming, but still not feel like you're part of the larger group.
You know, sometimes I'm reminded, people come to, I've largely skipped, I haven't had a lot of harassment, I know a lot of other women in this industry have. I've largely missed out on that, which is awesome. People have been very nice to me. But I do get judged every now and then for my lack of engineering-ness,
my lack of true programmer skills. You know, again, even though I have my books, and I'm teaching people, I did this survey. And this survey was for people who know HelloWebApp, who are on the newsletter, who follow me on Twitter. So largely people who are on my side. And I wanted to see if people wanted, like,
I have an online course for HelloWebApp. I have my books, I sell them on Amazon, through myself, I do workshops, but I don't have like an online way of helping people go through the books. I wanted to see if that was something that people would be willing to use. And again, going to people, this only went to newsletter or Twitter people.
People who largely should be nice to me. But someone, someone wrote this and it just stuck with me ever since. They took the time out of their day to respond to my survey. To tell me that I really need to level my skills up more before acting like I'm an authority.
Which it sucks to have someone out there. I can tell there's someone who's looking at me, who's just like, she's not a programmer and here she is, giving keynotes at EuroPython. Here she is, writing a book on Django without remembering how to write a program and run it from a command line. This sucks. And then they like stabbed me and twisted the knife
by telling me my book was ugly too. So, thanks. What I'm trying to say is that I'm an example of a programmer, a person who uses Python, that has taken a different path. And I shouldn't be judged and no one else should be judged
for not following this traditional path, not becoming a true programmer, not becoming a full-on backend software engineer. I can, and I continue will be, just watch me, I can be an authority of the skills that I have. Our industry should accept that not all programmers have to look the same, not all programmers have to think the same,
not all programmers have to do the same thing or have the same coding ability. We're all equal. And that's really key to what I want to talk about. We need to be more accepting of different paths people can take. Someone who learns programming and becomes a documentarian,
someone who learns programming and becomes a Scrum Master or QA, if they don't fit into that traditional path of becoming a backend software engineer, it's about our ecosystem as a whole. In frameworks, in bootcamps, teaching yourself programming, I was going to help push people into different paths.
And we should be accepting of the different ways and places people can go and different ways that people can learn. I really like this. I found this stat that two out of three developers are self-taught, which is awesome. It says a lot for how much programming and coding resources are on the web.
Hey, I'm self-taught, yay. And I found this quote from Hacker News, that instead of just two out of three developers, it's really three out of three developers are self-taught, but only one third of them also have a degree in computer science.
This is great. This is awesome. The internet has allowed us to build tutorials and resources and different styles and different subjects and allowed more and more people to learn coding even if, say for me, this whole super theory and super abstract thinking is for them.
My goal with Hello Web App, the reason why I wrote the book, is I wanted to encourage more people who have this visual way of thinking, people who learn better when they can see what they're building. Like Hello Web App, I try to avoid the command line as much as possible.
You're building a website first. You don't even deal with models and views and everything. The first thing you do is set up static files and get CSS working, get JavaScript working, and you have a website so you can see what you've built. You're like, oh, I built this, and then you start adding things in. I wrote this book for people who have this visual way of thinking,
and that's one of the reasons why I think my book has been so successful. It's made me excited to see more resources aimed at niches. It's not just like, here's how you learn programming. Here's best practices. It's more like, here's how you learn in this area. Did you know that Python is heavily used in typography?
I didn't. That's super cool. Python for typographic designers. You can do Python scripting in Font Lab to help people build typefaces. Obviously, we use Python in science. Frameworks like Django and Bootcamps have increased the amount of people
who could just jump in and start using Python to use things. Focusing on different subjects and different niches and different ways of using Python increases our pool of beginners as a whole. It increases the amount of people that go into different places.
Not just software engineering, but all the different other paths we can take. Those guys that I met at the previous conferences were like, I hate frameworks. They make bad programmers. We're kind of looking at it in a world like this. There's a pool of beginners, and there's this percentage that are bad programmers.
Now that our pool of beginners is much larger, that percentage is the same percentage, but there's a lot more people there. It's increased the amount of bad programmers we have. That's just a really crappy way of looking at things. I like to look at it as before we were smaller, now we're larger.
Each piece of the pie, we have a lot of people going into software development. We also have people going into typography. We're going to startups like me, documentation, science. The larger our pool of beginners is, the more people go into these individual areas.
Our industry is going to grow, and it's going to diversify. There's going to be different thoughts and different ways of thinking, and we're going to get stronger and better as a whole. One of the criticisms of HelloWebApp is that HelloWebApp does not make you an engineer, just like Django. It does not teach you to get a job at Google.
HelloWebApp, again, for me, is that it can teach you just enough skills that opens up all these doors to different things you can do. You could discover, oh, wait, I actually do like programming, and then jump in and work on software development or go into backend.
But you can also discover that, yeah, maybe it's not for you, or maybe you want to start a startup like I did, or maybe you want to start working in open source. Opens up these doors. A friend of mine, before PyCon, came up to me,
and this is a good friend, and he should know better, but he came up to me, and he was like, hey, can you help me with my presentation? It's for you, because my presentation is for beginners. I took a look at his presentation, and it was not for me. Like, yes, it is for beginners. But it was a subject that I was totally not interested in.
He was looking for beginners who were looking to go deeper into a certain skill, but I want to go broader. Like, I have no interest in deep diving into one subject, personally. And I got his permission to put this up here, because I was just like, come on, dude. Not all the beginners are the same.
Not all the beginners have the same route that they're going on, and I'm on a different path. So what can we do better? Just to end on some actionable notes. You know, try as best as you can. Reject this whole one true programmer thing.
Again, all programmers look the same, do the same thing, think the same, learn the same, and can do one thing or not one thing. If you feel like you're the superior race, because you're really awesome at deep Python, or not the superior race, stop.
We also need people who do documentation, we also need people who do technical writing, we need people who are scrum masters, or designers, or front-end developers, and we can all use programming and be equal together. This one, you really should go find this presentation by Jacob Kaplan Moss at PyCon 2015.
Embrace the mediocre programmer, because just like not all of us looking the same or having the same learning process or the same ways of learning, we also aren't all becoming rock stars. It's impossible.
Not everyone here is going to become a rock star. We're all more likely to become a mediocre programmer, and we should celebrate that, and his whole presentation is fantastic. Celebrate people who are mediocre, because we all are. Now I've touched on this a few times in this presentation.
I'd really like to see more specificity at conferences, events, and courses when it comes to complexity of material, and by that, I mean when you narrow things into just the beginner, intermediate, or advanced. Stop that. That's way too narrow. I'm not a big fan of the badges, I love that you're a Python,
but not a fan of the whole Python power badge thing. What's going to happen when you narrow people down to four-star, three-star, two-star? I want to see, I hope to see something like this, where you can say, I'm a beginner in this skill, but I'm intermediate here, and I'm advanced here. A lot of people just say what they're good at,
because not every beginner wants to become intermediate in something, not every intermediate person wants to become advanced. We can say, okay, I'm lesser in this skill, I really want to learn more in here, and that's going to make us more inclusive, and make people who are like me, who are really awesome in their skill, who are still essentially a beginner,
feel more welcome. Mentorship. This is huge for anyone who's jumping into tech, gets overwhelmed, and then doesn't realize all the different paths that are available to them. So this is where mentorship can really help out, because you can tell someone where they can go if something in particular
is not working for them. I would sketch this out. Little things that I'm good, and things that I'm bad at. Like, I'm good, I'm like a minute. I'm like a manager, which is kind of insulting to say to myself, but I like to delegate. I like to find a 20% that does 80% of the value.
I have ambition. I'm really good at breaking things down, but I am really, really bad at details, like design, development, those little touches, terrible at them. I'm terrible at beautiful code. My code is ugly. I cannot remember anything without looking it up.
I would be terrible at whiteboarding. So writing this down, or helping people write these things down, figuring out what little things I'm good at, what little things I'm bad at, will help them determine the path they should go on. As you can see for me, I'm not really interested, nor would I ever be really good at becoming a backend engineer.
And I want to see more tutorials and guides that are aimed at things that are like, that niche is little, small things. I want to see guides, you know, programming for engineers, but also programming for artists, programming for writers, programming for people who want to build a startup.
And, of course, I feel very strongly about this. You know, if you're saying, I can't write something, I can't write a guide, I can't teach someone because I myself am a beginner. Hi, I'm Tracy. I'm a beginner, and I wrote a book, and I self-published it, and I'm selling it on Amazon. People, by and large, have given me really awesome reviews. And you, too, can write, and please write
if you're a beginner, because you have the mindset that is needed to teach other people. You know, you are still, like I think people who are really awesome programmers can often make really terrible teachers because they forget how hard it can be, or they can forget things that don't really work in a beginner's mindset.
So, in conclusion, the power of a community lies in its diversity. Not just accepting people can look different, but also think different, can learn different, that we can choose different paths,
that we can do different things with our tech and our programming skills. The beginners we teach today, people we jump into tech, are going to be our future programmers, but also our future scientists, our future artists, our future managers, our future program product designers.
I hope I raised some good questions. I hope I told some fun stories. I hope that I've started a discussion. I hope we can continue it after this session. So, thank you so much for having me.
And last but not least, a little bit of marketing for myself. If you want HelloWebApp, it's hellowebapp.com. It's almost done. And I'm also working on a third book, teaching design to programmers,
called Hello Web Design, because I am awesome at titles. So, that's hellowebdesignbook.com. And I have five HelloWebApps and four HelloWebApp intermediate concept books here, like paperback books. They're really pretty. Come find me if you want one. Thank you.