Date: Sun, 29 Apr 2018 20:00:00 -0400
<h3>Summary</h3> <p>Many developers enter the market from backgrounds that don’t involve a computer science degree, which can lead to blind spots of how to approach certain types of problems. Gary Bernhardt produces screen casts and articles that aim to teach these principles with code to make them approachable and easy to understand. In this episode Gary discusses his views on the state of software education, both in academia and bootcamps, the theoretical concepts that he finds most useful in his work, and some thoughts on how to build better software.</p> <h3>Preface</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you’re ready to launch your next app you’ll need somewhere to deploy it, so check out Linode. With private networking, shared block storage, node balancers, and a 200Gbit network, all controlled by a brand new API you’ve got everything you need to scale up. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">podcastinit.com/linode</a> to get a $20 credit and launch a new server in under a minute.</li> <li>Finding a bug in production is never a fun experience, especially when your users find it first. Airbrake error monitoring ensures that you will always be the first to know so you can deploy a fix before anyone is impacted. With open source agents for Python 2 and 3 it’s easy to get started, and the automatic aggregations, contextual information, and deployment tracking ensure that you don’t waste time pinpointing what went wrong. Go to <a href="https://www.pythonpodcast.com/airbrake?utm_source=rss&utm_medium=rss">podcastinit.com/airbrake</a> today to sign up and get your first 30 days free, and 50% off 3 months of the Startup plan.</li> <li>To get worry-free releases download GoCD, the open source continous delivery server built by Thoughworks. You can use their pipeline modeling and value stream map to build, control and monitor every step from commit to deployment in one place. And with their new Kubernetes integration it’s even easier to deploy and scale your build agents. Go to <a href="https://www.pythonpodcast.com/gocd?utm_source=rss&utm_medium=rss">podcastinit.com/gocd</a> to learn more about their professional support services and enterprise add-ons.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the newsletter, and read the show notes. And if you have any questions, comments, or suggestions I would love to hear them. You can reach me on Twitter at <a href="https://twtiter.com/podcastinit?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@Podcast__init__</a> or email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>)</li> <li>Your host as usual is Tobias Macey and today I’m interviewing Gary Bernhardt about teaching and learning Python in the current software landscape</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>As someone who makes a living from teaching aspects of programming what is your view on the state of software education? <ul> <li>What are some of the ways that we as an industry can improve the experience of new developers?</li> <li>What are we doing right?</li> </ul> </li> <li>You spend a lot of time exploring some of the fundamental aspects of programming and computation. What are some of the lessons that you have learned which transcend software languages? <ul> <li>Utility of graphs in understanding software</li> <li>Mechanical sympathy</li> </ul> </li> <li>What are the benefits of ‘from scratch’ tutorials that explore the steps involved in building simple versions of complex topics such as compilers or web frameworks?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://twitter.com/garybernhardt?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@garybernhardt</a> on Twitter</li> <li><a href="https://github.com/garybernhardt?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">garybernhardt</a> on GitHub</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://www.terrypratchettbooks.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Terry Pratchett</a></li> </ul> </li> <li>Gary <ul> <li><a href="https://www.destroyallsoftware.com/screencasts?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Destroy All Software</a></li> <li><a href="https://www.deconstructconf.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Deconstruct Conference</a></li> <li><a href="https://github.com/papers-we-love/papers-we-love/blob/master/design/out-of-the-tar-pit.pdf?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Out Of The Tarpit</a></li> <li><a href="https://amzn.to/2jhpwkk?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Algorithms + Data Structures = Programs</a> by Niklaus Wirth</li> <li><a href="https://courses.cs.washington.edu/courses/cse341/17au/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Dan Grossman Programming Languages Course (click the “Videos” links under “course materials”)</a></li> <li><a href="https://www.washington.edu/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">U of W</a></li> <li><a href="http://number-none.com/blow/blog/programming/2014/09/26/carmack-on-inlined-code.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">John Carmack post reconsidering some earlier positions</a></li> </ul> </li> </ul> <h3>Links</h3> <ul> <li><a href="https://www.destroyallsoftware.com/talks/wat?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Wat</a></li> <li><a href="https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Birth and Death of Javascript</a></li> <li><a href="https://www.destroyallsoftware.com/screencasts?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Destroy All Software</a></li> <li><a href="https://www.deconstructconf.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Deconstruct</a></li> <li><a href="https://medium.freecodecamp.org/10-common-data-structures-explained-with-videos-exercises-aaff6c06fb2b?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Data Structures</a></li> <li><a href="https://en.wikipedia.org/wiki/Computer_science?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Computer Science</a></li> <li><a href="https://hackernoon.com/compilers-and-interpreters-3e354a2e41cf?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Compilers</a></li> <li><a href="https://en.wikipedia.org/wiki/Coding_bootcamp?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Programming Bootcamps</a></li> <li><a href="https://en.wikipedia.org/wiki/Graph_theory?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Graph Theory</a></li> <li><a href="https://jvns.ca/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Julia Evans</a> <ul> <li><a href="https://twitter.com/b0rk?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">@b0rk</a> on Twitter</li> </ul> </li> <li><a href="http://greenteapress.com/wp/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Allen Downey</a></li> <li><a href="http://jupyter.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Jupyter Notebook</a></li> <li><a href="http://jcsites.juniata.edu/faculty/rhodes/intro/theory2.htm?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Halting Problem</a></li> <li><a href="https://www.idris-lang.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Idris</a></li> <li><a href="https://en.wikipedia.org/wiki/Visual_Basic?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Visual Basic 3.0</a></li> <li><a href="https://jeremykun.com/2011/07/09/set-theory-a-primer/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Set Theory</a></li> <li><a href="https://en.wikipedia.org/wiki/ML_(programming_language)?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">ML Family of Languages</a></li> <li><a href="https://en.wikipedia.org/wiki/Standard_ML?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SML, a simple dialect of ML</a></li> <li><a href="https://www.smlnj.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">SML/NJ, a compiler for SML</a></li> <li><a href="https://ocaml.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">OCamL, a more modern dialect of ML</a></li> <li><a href="http://fsharp.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">F#, an even newer dialect of ML</a></li> <li><a href="https://clojure.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Clojure, a modern Lisp-like language</a></li> <li><a href="https://www.lua.org/manual/5.3/manual.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Lua Grammar (scroll to the very bottom for the full grammar)</a></li> <li><a href="https://en.wikipedia.org/wiki/John_Carmack?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">John Carmack</a></li> <li><a href="https://twitter.com/garybernhardt/status/991020334584221697?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Twitter Thread Explaining Episode Context</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fdestroy-all-software-with-gary-bernhardt-episode-159%2F&action_name=Destroy+All+Software+With+Gary+Bernhardt+-+Episode+159&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>