<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Learning-Programming on TanHo.ca</title><link>https://tanho.ca/tags/learning-programming/</link><description>Recent content in Learning-Programming on TanHo.ca</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright> © 2026 Tan Ho. Unless otherwise specified, content is licensed with [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/).</copyright><lastBuildDate>Fri, 02 Oct 2026 14:22:39 -0400</lastBuildDate><atom:link href="https://tanho.ca/tags/learning-programming/index.xml" rel="self" type="application/rss+xml"/><item><title>Things I Think You Should Read and Watch</title><link>https://tanho.ca/recs/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid>https://tanho.ca/recs/</guid><description>&lt;p&gt;This is a curated, non-exhaustive list of tech-adjacent content I&amp;rsquo;ve really&#10;enjoyed and shared with friends and colleagues.&lt;/p&gt;&#10;&lt;p&gt;Mostly general thoughts on life as a data scientist, learning/teaching programming,&#10;technical leadership, career advice, and other tech-adjacent topics, and not specific&#10;to R or sports analytics (will probably tackle that another time).&lt;/p&gt;&#10;&lt;p&gt;Inspired by Derek Sivers&amp;rsquo;s &lt;a href="https://sive.rs/book" target="_blank" rel="noreferrer"&gt;book notes&lt;/a&gt; and Vicki Boykis&amp;rsquo;s&#10;&lt;a href="https://vickiboykis.com/favorite_essays/" target="_blank" rel="noreferrer"&gt;favourite essays&lt;/a&gt;, and organized loosely&#10;by topic (click to jump to section):&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#life-as-a-programmer--data-scientist" &gt;life as a programmer&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#learning-and-teaching-programming" &gt;learning and teaching&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#technical-leadership" &gt;technical leadership&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#career-advice" &gt;career advice&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#technical-topics" &gt;technical topics&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://tanho.ca/recs/#changelog" &gt;changelog&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;life as a programmer &amp;amp; data scientist&#10; &lt;div id="life-as-a-programmer--data-scientist" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#life-as-a-programmer--data-scientist" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://mtlynch.io/human-code-reviews-1/" target="_blank" rel="noreferrer"&gt;Michael Lynch: How to Do Code Reviews Like A Human&lt;/a&gt;&#10;and &lt;a href="https://mtlynch.io/human-code-reviews-2/" target="_blank" rel="noreferrer"&gt;part two&lt;/a&gt;,&#10;blog posts (18 and 15 min reads, respectively)&#10;&lt;ul&gt;&#10;&lt;li&gt;Code reviews are daily interactions that shape both the code itself and, maybe even more&#10;importantly, the relationships between programmers - these posts really help with how&#10;to approach these in a constructive and positive way.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=1LAhHDEtTD0" target="_blank" rel="noreferrer"&gt;Hank Green: The Secret to My Productivity&lt;/a&gt;,&#10;YouTube video (4 min)&#10;&lt;ul&gt;&#10;&lt;li&gt;Invaluable advice on when to stop working on creative projects: stop working on it when&#10;you have reached 80% of &amp;ldquo;the best you can do&amp;rdquo;, release it to the world, and then go do&#10;your next project. Applies in hobbies and tbh to professional projects as well.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.counting-stuff.com/succeeding-as-a-data-scientist-in-small-companies-startups-92f59e22bd8c-65949948516031001b351309/" target="_blank" rel="noreferrer"&gt;Randy Au: Succeeding as a Data Scientist in Small Companies / Startups&lt;/a&gt;,&#10;blog post (8 min read)&#10;&lt;ul&gt;&#10;&lt;li&gt;How to succeed in a small company where you are the first &amp;ldquo;data&amp;rdquo; person there: helping&#10;the company succeed TODAY and setting up the company to be data driven TOMORROW.&#10;Also has a very nice &amp;ldquo;hierarchy of needs&amp;rdquo; graphic that explains what it means to set up a&#10;company to be data driven. Immediately relevant for people in small companies and also&#10;for understanding the core needs for a data team (and seeing how that scales as you add&#10;more people.)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.albertosavoia.com/uploads/1/4/0/9/14099067/thewayoftestivus.pdf" target="_blank" rel="noreferrer"&gt;Alberto Savoia: The Way of Testivus&lt;/a&gt;,&#10;PDF blog post&#10;&lt;ul&gt;&#10;&lt;li&gt;Advice on developer and unit testing, packaged up as pseudo-Confucian tenets worth&#10;living by.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://boringtechnology.club/" target="_blank" rel="noreferrer"&gt;Dan McKinley: Boring Technology&lt;/a&gt;, talk/slides&#10;and original &lt;a href="https://mcfunley.com/choose-boring-technology" target="_blank" rel="noreferrer"&gt;blogpost&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Core idea: you get &amp;ldquo;innovation tokens&amp;rdquo; to spend as a (developer, team) and you&#10;don&amp;rsquo;t have that many even across a team. In order to keep those innovation tokens&#10;spent on the team&amp;rsquo;s core mission (e.g. solving soccer), you should spend less&#10;time innovating on the core technologies (fancy database stuff, programming&#10;paradigms etc), because fixing bleeding edge database stuff takes up &amp;ldquo;innovation&#10;tokens&amp;rdquo; that you want to spend doing other things.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=th79W4rv67g" target="_blank" rel="noreferrer"&gt;David Robinson: Unreasonable Effectiveness Of Public Work&lt;/a&gt;,&#10;YouTube talk recording (40 min)&#10;&lt;ul&gt;&#10;&lt;li&gt;Anything you put out into the world is going to be far better and far more useful&#10;than anything that sits in your drafts folder waiting for some arbitrary threshold&#10;of &amp;ldquo;good&amp;rdquo; before it gets published. Go out there and do things!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;!-- candidates: egoless programming, grug brained developer? --&gt;&#10;&#10;&lt;h2 class="relative group"&gt;learning and teaching programming&#10; &lt;div id="learning-and-teaching-programming" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#learning-and-teaching-programming" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ewXvFQByRqY" target="_blank" rel="noreferrer"&gt;Greg Wilson: what everyone in tech should know about teaching and learning&lt;/a&gt;, YouTube video (41 min)&#10;&lt;ul&gt;&#10;&lt;li&gt;Massively useful! Especially the ideas right at the beginning about mental models and&#10;the differences between how beginners, competent users, and experts learn. The whole&#10;video is incredible, but I recommend at least the first 8:23 to cover these ideas.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=YWwBhjQN-Qw" target="_blank" rel="noreferrer"&gt;Andy Harris: how to begin thinking like a programmer&lt;/a&gt;,&#10;YouTube video (61 min)&#10;&lt;ul&gt;&#10;&lt;li&gt;A riveting talk (given at a Python conference, which should surprise you if you know me).&#10;which covers how to &lt;em&gt;think&lt;/em&gt; like a programmer. Especially profound: comments are not&#10;for explaining code to other programmers - instead, code is there to explain comments to&#10;the computer!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;technical leadership&#10; &lt;div id="technical-leadership" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#technical-leadership" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.noidea.dog/glue" target="_blank" rel="noreferrer"&gt;Tanya Reilly: Being Glue&lt;/a&gt;, annotated talk slides and &lt;a href="https://www.youtube.com/watch?v=KClAPipnKqw" target="_blank" rel="noreferrer"&gt;YouTube video&lt;/a&gt; (28 min)&#10;&lt;ul&gt;&#10;&lt;li&gt;A brutally honest talk about the non-promotable &amp;ldquo;glue&amp;rdquo; work that programmers can&#10;get silently stuck with, and that hurts your technical development and ultimately your&#10;career development if you&amp;rsquo;re not prepared. Can disproportionately affect teams,&#10;especially women and/or&#9;introverted/non-assertive personalities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://jvns.ca/blog/2018/09/22/new-zine--help--i-have-a-manager/" target="_blank" rel="noreferrer"&gt;Julia Evans: Help, I Have A Manager!&lt;/a&gt;,&#10;zine (~$12)&#10;&lt;ul&gt;&#10;&lt;li&gt;Having a good relationship with your manager is probably the most important factor in&#10;your happiness at work. This zine is full of great advice on how to make that relationship&#10;better - how to handle 1:1s, asking for feedback, figuring out what they&amp;rsquo;re good at,&#10;building a support system for areas they aren&amp;rsquo;t as good, and more.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://vas3k.com/notes/hiring/index.html" target="_blank" rel="noreferrer"&gt;Vasily Zubarev: How to hire sane engineers 2.0&lt;/a&gt; (~15 min read)&#10;&lt;ul&gt;&#10;&lt;li&gt;A pragmatic Russian&amp;rsquo;s take on hiring engineers in a &amp;ldquo;sane&amp;rdquo; and effective way.&#10;Would love to implement this one day to help with bypassing some of the technical&#10;interview steps that are so common now.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;career advice&#10; &lt;div id="career-advice" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#career-advice" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://sive.rs/balance" target="_blank" rel="noreferrer"&gt;Derek Sivers: How To Do What You Love And Make Good Money&lt;/a&gt;,&#10;blog post with audio recording (4 min read/listen)&#10;&lt;ul&gt;&#10;&lt;li&gt;This is the advice I share when folks ask me about getting their dream job and making a&#10;career from sports analytics or other hobbies - you don&amp;rsquo;t need to force sports analytics to&#10;be both your livelihood and your art! The dream job that does both may or may not come along,&#10;but you can be happy in both career and art without it. Part of a larger book, &lt;a href="https://sive.rs/n" target="_blank" rel="noreferrer"&gt;Hell Yeah or No&lt;/a&gt;,&#10;which is also very worth reading (~$15).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://austinkleon.com/show-your-work/" target="_blank" rel="noreferrer"&gt;Austin Kleon: Show Your Work&lt;/a&gt;, short book (~$15)&#10;&lt;ul&gt;&#10;&lt;li&gt;The book I share when people ask me how to build their public portfolio and&#10;personal networks: share something small every day without being human spam, teach&#10;what you know, and tell good stories. A lot of insights packed into a small and&#10;easy to read format. Also great are the other books in the Steal trilogy, including&#10;&lt;a href="https://austinkleon.com/steal/" target="_blank" rel="noreferrer"&gt;Steal Like An Artist&lt;/a&gt; on how to be creative and&#10;&lt;a href="https://austinkleon.com/keepgoing/" target="_blank" rel="noreferrer"&gt;Keep Going&lt;/a&gt; on how to sustain the creative&#10;effort&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.manning.com/books/build-a-career-in-data-science" target="_blank" rel="noreferrer"&gt;Jacqueline Nolis &amp;amp; Emily Robinson: Build A Career In Data Science&lt;/a&gt;,&#10;book (~$24) and &lt;a href="https://podcast.bestbook.cool/" target="_blank" rel="noreferrer"&gt;podcast series&lt;/a&gt; (~20 episodes&#10;each about 60min)&#10;&lt;ul&gt;&#10;&lt;li&gt;A great resource for finding a job in data science. Really like the &lt;em&gt;definitions&lt;/em&gt; of data&#10;science as an industry - essentially the intersection of programming, statistics,&#10;and domain knowledge. Book was available online for free at one point but now&#10;seems to be only paid - very worth it, but listening to each of the podcast&#10;episodes is a pretty good equivalent.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://haseebq.com/my-ten-rules-for-negotiating-a-job-offer/" target="_blank" rel="noreferrer"&gt;Haseeb Qureshi: Rules for Negotiating a Job Offer&lt;/a&gt;&#10;and &lt;a href="https://haseebq.com/how-not-to-bomb-your-offer-negotiation/" target="_blank" rel="noreferrer"&gt;part two&lt;/a&gt;,&#10;blog posts (24 and 34 minute reads)&#10;&lt;ul&gt;&#10;&lt;li&gt;More people should negotiate job offers and simply don&amp;rsquo;t. This is good, not-too-kitschy&#10;advice on how to approach negotiating.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;specific technologies&#10; &lt;div id="specific-technologies" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#specific-technologies" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://vas3k.com/blog/machine_learning/index.html" target="_blank" rel="noreferrer"&gt;Vasily Zubarev: Machine Learning For Everyone&lt;/a&gt;,&#10;blog post (~40 min read)&#10;&lt;ul&gt;&#10;&lt;li&gt;&amp;ldquo;Machine Learning is like sex in high school. Everyone is talking about it, a few know what&#10;to do, and only your teacher is doing it.&amp;rdquo; An impressively nontechnical and yet surprisingly&#10;comprehensive overview of machine learning that I found useful early on in my data&#10;science career as someone with neither a CS nor a stats background.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://jvns.ca/blog/2020/11/22/new-zine--hell-yes--css-/" target="_blank" rel="noreferrer"&gt;Julia Evans: Hell Yes CSS&lt;/a&gt;,&#10;zine (~$12) and &lt;a href="https://jvns.ca/blog/2020/07/25/some-comics-about-css/" target="_blank" rel="noreferrer"&gt;comics&lt;/a&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;I&amp;rsquo;ve always found CSS to be incredibly frustrating, but reading this zine was super helpful.&#10;Still refer back to the &lt;a href="https://wizardzines.com/comics/selectors/" target="_blank" rel="noreferrer"&gt;CSS Selectors&lt;/a&gt; comic to&#10;this day whenever I need to format something.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://ohshitgit.com" target="_blank" rel="noreferrer"&gt;OhShitGit.com&lt;/a&gt; (reference page)&#10;&lt;ul&gt;&#10;&lt;li&gt;For the times I manage to fuck up using git, this page consistently saves me every single time.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://arelbundock.com/posts/dt_tb_df/index.html" target="_blank" rel="noreferrer"&gt;data.table vs base vs dplyr&lt;/a&gt; (reference page)&#10;&lt;ul&gt;&#10;&lt;li&gt;An awesome syntax lookup page to go between dplyr, base, and data.table in R - a worthy successor to the&#10;original post by &lt;a href="https://atrebas.github.io/post/2019-03-03-datatable-dplyr/" target="_blank" rel="noreferrer"&gt;atrebas&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 class="relative group"&gt;changelog&#10; &lt;div id="changelog" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#changelog" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;2026-07-21: added data.table vs base vs dplyr reference page&lt;/li&gt;&#10;&lt;li&gt;2025-09-04: added ohshitgit.com&lt;/li&gt;&#10;&lt;li&gt;2025-03-17: added David Robinson&amp;rsquo;s Unreasonable Effectiveness Of Public Work talk&lt;/li&gt;&#10;&lt;li&gt;2024-11-29: first version&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://tanho.ca/recs/featured.jpg"/></item><item><title>The Beginner Data Science Programming Book That Doesn't Exist (Yet?)</title><link>https://tanho.ca/posts/2024-12-10_beginner-book/</link><pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate><guid>https://tanho.ca/posts/2024-12-10_beginner-book/</guid><description>&#10; &#10;&#10;&#10;&#10;&lt;div&#10; &#10; class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"&#10; &#10; &gt;&#10; &lt;span&#10; &#10; class="text-primary-400 pe-3 flex items-center"&#10; &#10; &gt;&#10; &lt;span class="relative block icon"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"&gt;&lt;path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/&gt;&lt;/svg&gt;&#10;&lt;/span&gt;&#10; &lt;/span&gt;&#10;&#10; &lt;span&#10; &#10; class="dark:text-neutral-300"&#10; &#10; &gt;Ideas are &lt;a href="https://sive.rs/multiply" target="_blank" rel="noreferrer"&gt;worth nothing unless executed&lt;/a&gt;, and I&amp;rsquo;m&#10;tired of adding ideas to my backlog only to never get to them. This &lt;a href="https://tanho.ca/tags/free-ideas/" &gt;series&lt;/a&gt;&#10;aims to set those ideas free - let me know if you take it on!&lt;/span&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&lt;h2 class="relative group"&gt;Hot take: the ideal beginner data science programming book doesn&amp;rsquo;t exist (yet)&#10; &lt;div id="hot-take-the-ideal-beginner-data-science-programming-book-doesnt-exist-yet" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#hot-take-the-ideal-beginner-data-science-programming-book-doesnt-exist-yet" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;The beloved &lt;a href="https://r4ds.hadley.nz" target="_blank" rel="noreferrer"&gt;R for Data Science&lt;/a&gt; is a fantastic book, and&#10;yet I struggled immensely with following along with it. I think it&amp;rsquo;s because I&#10;can only care so much about flower irises, penguins, and NYC taxis: I quit halfway&#10;through the third chapter of R4DS on my first attempt in 2018ish, &amp;hellip; because I&#10;got bored.&lt;/p&gt;&#10;&lt;p&gt;Since then, I&amp;rsquo;ve gotten treatment for ADHD (which probably explains a lot, tbh),&#10;but I think what really helped the most with learning programming was that I&#10;started working on projects that I actually cared about: fantasy football and NFL.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;d work on something for a while, get stuck on something I didn&amp;rsquo;t know, Ctrl-F&#10;the R4DS book + dplyr/tidyr reference manuals, figure out what I needed to know&#10;and how it fit into what I already knew, and then keep going. Reading R4DS cover&#10;to cover was utterly unhelpful until I knew how to fit each concept into a mental&#10;model that I knew how to use.&lt;/p&gt;&#10;&lt;p&gt;My love of all things R and data has since taken off (enough to have made a whole&#10;career of it), and now I often get asked what books I&amp;rsquo;d recommend for learning&#10;NFL/sports analytics, R, data science, programming etc. I supply the easy answer&#10;(&lt;em&gt;&amp;ldquo;you should read R4DS&amp;rdquo;&lt;/em&gt;), but I&amp;rsquo;m a little uncomfortable with it because the book&#10;I wish I could recommend doesn&amp;rsquo;t quite exist.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;the ideal book for learning programming and NFL analytics&#10; &lt;div id="the-ideal-book-for-learning-programming-and-nfl-analytics" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-ideal-book-for-learning-programming-and-nfl-analytics" aria-label="Anchor"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;There are a lot of introductory data science and programming books out there, and&#10;even ones that apply the context of NFL: both &lt;a href="https://www.oreilly.com/library/view/football-analytics-with/9781492099611/" target="_blank" rel="noreferrer"&gt;Eric Eager&lt;/a&gt;&#10;and &lt;a href="https://bradcongelio.com/nfl-analytics-with-r-book/" target="_blank" rel="noreferrer"&gt;Brad Congelio&lt;/a&gt; have great&#10;iterations of this (and the latter is free online)!&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;m so glad these books exist now and they&amp;rsquo;d have certainly helped a lot when I&#10;first got started, but I&amp;rsquo;m not quite sure these are the ones I&amp;rsquo;ve been wanting:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;how do they stay up to date with a fast-evolving programming landscape?&lt;/li&gt;&#10;&lt;li&gt;how do they compare with the existing literature that is beloved by the community,&#10;like R4DS, and how should beginners proceed if the books disagree on best code&#10;approach?&lt;/li&gt;&#10;&lt;li&gt;what happens if I want to learn another programming language other than R?&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I think the book I want to exist would be structured as a &lt;em&gt;companion&lt;/em&gt; to books&#10;like R4DS, but not include &lt;em&gt;any&lt;/em&gt; language-specific code whatsoever. Instead, I&amp;rsquo;d&#10;focus on a few goals:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;create a series of case studies and exercises that challenge learners to write&#10;their own solutions based on domain-specific research questions&#10;&lt;ul&gt;&#10;&lt;li&gt;provide starter data of appropriate complexity/cleanliness in a data repository&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;cover a full breadth of high-level data science / programming topics&#10;&lt;ul&gt;&#10;&lt;li&gt;kind of like R4DS&amp;rsquo;s visualize, transform, import, program, communicate sections&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;maintain up-to-date links to readings for each case study that help learners&#10;find best-practice guidance on a given topic in a supported programming language&#10;&lt;ul&gt;&#10;&lt;li&gt;each case study should provide links to &amp;ldquo;prerequisite reading&amp;rdquo; to solve it,&#10;e.g. links to relevant R4DS chapters for R&lt;/li&gt;&#10;&lt;li&gt;should be easily extended to other languages by linking to equivalent&#10;material, e.g. pivoting data, group by + summarize are relational data&#10;concepts that have parallels in almost every language&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;introduce the essential background knowledge for the domain in question&#10;&lt;ul&gt;&#10;&lt;li&gt;for NFL this should include concepts like EPA, fourth downs, completion&#10;probability, expected rushing yards etc - essentially covering the body of&#10;public research&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;suggest further research questions that can be tackled beyond the controlled&#10;sandbox of the book/repository&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I think something like this would be massively helpful for introducing people to&#10;the relevant public research in a domain, and with putting technical topics into&#10;practical use for learners. It would be robust to existing languages evolving (could&#10;approach the same case study in e.g. tidyverse, data.table etc), easily extended&#10;to new languages (e.g. Python, Julia, Rust), and even to new technologies (probably&#10;could do the whole thing in DuckDB one day). The format also would be easy to adopt&#10;in different sports (soccer, basketball, baseball, hockey?) and to other domains&#10;altogether.&lt;/p&gt;&#10;&lt;p&gt;Of course, I&amp;rsquo;ve been sitting on this idea for a while: I first started a&#10;&lt;a href="https://github.com/nflverse/nflbeginR" target="_blank" rel="noreferrer"&gt;repo&lt;/a&gt; for this idea ~ three years ago&#10;and convinced friends like Sebastian Carl to start thinking about it,&#10;but neither of us have made much progress, which I think is more due to just a lack&#10;of time/energy/expertise in it. I still think it&amp;rsquo;s a worthwhile idea and am writing this&#10;post mostly to set it free and hope someone is inspired to pick it up!&lt;/p&gt;&#10;&lt;p&gt;A similar idea has come up since then: the &lt;a href="https://scorenetwork.org/about.html" target="_blank" rel="noreferrer"&gt;SCORE project&lt;/a&gt;&#10;led by CMU&amp;rsquo;s Statistics and Data Science department aims to provide case studies across&#10;all sports for learning statistics and data science, and has a set of&#10;&lt;a href="https://modules.scorenetwork.org/by-statsds-topic.html" target="_blank" rel="noreferrer"&gt;modules&lt;/a&gt; already.&#10;I&amp;rsquo;m not sure if ~ learning to program in a given language is in the scope&#10;of the project - it seems to be very statistics-focused - but it could otherwise&#10;be an interesting parallel project?&lt;/p&gt;&#10;</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://tanho.ca/posts/2024-12-10_beginner-book/featured.jpg"/></item></channel></rss>