{"id":113,"date":"2015-10-03T15:05:04","date_gmt":"2015-10-03T15:05:04","guid":{"rendered":"http:\/\/hodgestar.za.net\/blog\/?p=113"},"modified":"2015-10-03T15:05:04","modified_gmt":"2015-10-03T15:05:04","slug":"where-to-from-here","status":"publish","type":"post","link":"https:\/\/hodgestar.za.net\/blog\/2015\/10\/where-to-from-here\/","title":{"rendered":"Where to from here?"},"content":{"rendered":"<p><em>Closing speech at the end of PyConZA 2015.<\/em><\/p>\n<p>We&#8217;ve reached the end of another PyConZA and I&#8217;ve found myself wondering: Where to from here?\u00a0Conferences generate good idea, but it&#8217;s so easy for daily life to intrude and for ideas to fade and eventually be lost.<\/p>\n<p>We&#8217;ve heard about many good things and many bad things\u00a0during the conference. I&#8217;m going to focus on the bad for\u00a0a moment.<\/p>\n<p>We&#8217;ve heard about imposter syndrome, about a need for more\u00a0diversity, about Django&#8217;s flaws as a web framework, about\u00a0Python&#8217;s lack of good concurrency solutions when data needs\u00a0to be shared, about how much civic information is locked up\u00a0in scanned PDFs, about how many scientists need to be\u00a0taught coding, about the difficulty of importing CSV files,\u00a0about cars being stolen in Johannesburg.<\/p>\n<p>The world is full of things that need fixing.<\/p>\n<p>Do we care enough to fix them?<\/p>\n<p>Ten years ago I&#8217;d never coded Python professionally. I&#8217;d\u00a0never been to a Python software conference, or even a user\u00a0group meeting.<\/p>\n<p>But, I got a bit lucky and took a job at which there were\u00a0a few pretty good Python developers and some time to\u00a0spend learning things.<\/p>\n<p>I worked through the Python tutorial. All of it. Then a\u00a0few years later I worked through all of it again. I read\u00a0the Python Quick Reference. All of it. It wasn&#8217;t that\u00a0quick.<\/p>\n<p>I started work on a personal Python project. With a friend.\u00a0I&#8217;m still working on it. At first it just read text files<br \/>\ninto a database. Slowly, it grew a UI. And then DSLs and\u00a0programmatically generated SQL queries with tens of joins.\u00a0Then a tiny HTML rendering engine. It&#8217;s not finished.\u00a0We haven&#8217;t even released version 1.0. I&#8217;m quietly proud of it.<\/p>\n<p>I wrote some games. With friends.\u00a0The first one was terrible. We knew nothing. But it was\u00a0about chickens. The second was better. For the third we\u00a0bit off more than we could chew. The fourth was pretty\u00a0awesome. The fifth wasn&#8217;t too bad.<\/p>\n<p>I changed jobs. I re-learned Java. I changed again and\u00a0learned Javascript. I thought I was smart enough to handle<br \/>\nthreading and tons of mutable state. I was wrong. I learned\u00a0Twisted. I couldn&#8217;t figure out what deferreds did. I\u00a0wrote my own deferred class. Then I threw it away.<\/p>\n<p>I asked the PSF for money to port a library to Python 3.\u00a0They said yes. The money was enough to pay for pizza.\u00a0But it was exciting anyway.<\/p>\n<p>We ported another library to Python 3. This one was harder.\u00a0We fixed bugs in Python. That was hard too. Our patches\u00a0were accepted. Slowly. Very slowly. In one case, it took three years.<\/p>\n<p>Someone suggested I run PyConZA. I had no idea how little I\u00a0knew about running conferences, so I said yes. I asked the\u00a0PSF for permission. They didn&#8217;t know how little I knew\u00a0either, so they said yes too. Luckily, I got guidance and\u00a0support from people who did. None of them were developers.\u00a0Somehow, it worked. I suspect mostly because everyone was\u00a0so excited.<\/p>\n<p>We got amazing international speakers, but the best talk was by\u00a0a local developer who wasn&#8217;t convinced his talk would\u00a0interest anyone.<\/p>\n<p>I ran PyConZA three more times, because I wasn&#8217;t sure how\u00a0to hand it over to others and I didn&#8217;t want it to not\u00a0happen.<\/p>\n<p>This is my Python journey so far.<\/p>\n<p>All of you are at different places in your own journeys,\u00a0and if I were to share some advice from mine, it might go as follows:<\/p>\n<ul>\n<li>Find people you can learn from\n<ul>\n<li>&#8230; and make time to learn yourself<\/li>\n<\/ul>\n<\/li>\n<li>Take the time to master the basics\n<ul>\n<li>&#8230; so few people do<\/li>\n<\/ul>\n<\/li>\n<li>Start a project\n<ul>\n<li>&#8230; with a friend(s)<\/li>\n<\/ul>\n<\/li>\n<li>Keep learning new things\n<ul>\n<li>&#8230; even if they&#8217;re not Python<\/li>\n<\/ul>\n<\/li>\n<li>Failure is not going to go away\n<ul>\n<li>&#8230; keep building things anyway<\/li>\n<\/ul>\n<\/li>\n<li>Don&#8217;t be scared to ask for money\n<ul>\n<li>&#8230; or for support<\/li>\n<li>&#8230; even from people who aren&#8217;t developers<\/li>\n<\/ul>\n<\/li>\n<li>Sometimes amazing things come from one clueless person\u00a0saying, &#8220;How hard can it be?&#8221;<\/li>\n<li>Often success relies mostly on how excited other people are<\/li>\n<li>Stuff doesn&#8217;t stop being hard\n<ul>\n<li>&#8230; so you&#8217;re going to have to care<\/li>\n<li>&#8230; although what you care about might surprise you.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Who can say where in this complicated journey I changed\u00a0from novice, to apprentice, to developer, to senior<br \/>\ndeveloper? Up close, it&#8217;s just a blur of coding and\u00a0relationships. Of building and learning, and of success and<br \/>\nfailure.<\/p>\n<p>We are all unique imposters on our separate journeys &#8212; our\u00a0paths not directly comparable &#8212; and often wisdom seems largely\u00a0about shutting up when one doesn&#8217;t know the answer.<\/p>\n<p>If all of the broken things are going to get fixed &#8212; from\u00a0diversity to removing the GIL &#8212; it&#8217;s us that will have to\u00a0fix them, and it seems unlikely that anyone is going to\u00a0give us permission or declare us worthy.<\/p>\n<p>Go build something.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Closing speech at the end of PyConZA 2015. We&#8217;ve reached the end of another PyConZA and I&#8217;ve found myself wondering: Where to from here?\u00a0Conferences generate good idea, but it&#8217;s so easy for daily life to intrude and for ideas to fade and eventually be lost. We&#8217;ve heard about many good things and many bad things\u00a0during [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-113","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/posts\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":3,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/posts\/113\/revisions"}],"predecessor-version":[{"id":116,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/posts\/113\/revisions\/116"}],"wp:attachment":[{"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/media?parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/categories?post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hodgestar.za.net\/blog\/wp-json\/wp\/v2\/tags?post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}