Watch People Doing the Thing

9 minute read     Updated:

Adam Gordon Bell %
Adam Gordon Bell

I’ve learned so much from watching other people code. It’s never a thing I’m specifically trying to learn. It’s more like someone is walking me through a problem, and they do something I didn’t know could be done. Maybe they just have a low friction way to exploratory test some set of services, where I could only test things by deploying to staging, or they use some shortcut I didn’t know about, and I have to ask them how they did that.

It’s silly, but one improvement I learned from code pairing years ago was while debugging something with print lines. I added a fmt.Print("here") and then a fmt.Print("also here") and eventually afmt.Print("Do we get to here as well?") before someone said “Use numbers”. Now I’m always starting with fmt.Print("1"), fmt.Print("2"), and so on, and it makes my print-line debugging a tiny bit more productive. 1

To be able to professionally develop software, you need to learn the tech stack and learn how to get work done. But, to get to the next level – to become an expert – you have to accumulate thousands of tiny pieces of tacit knowledge that may not be written down anywhere.

Tacit knowledge — as opposed to formal knowledge — is knowledge that is difficult to express or extract, and thus more difficult to transfer to others by means of writing it down or verbalizing it. This can include personal wisdom, experience, insight, and intuition. - Wikipedia

10,000 Hours?

Remember “Deliberate practice”? It’s the idea that you can get good at chess or the violin or leet code problems via grinding out the required, properly structured practice. The ideas behind Deliberate practice are correct but hard to apply past the intermediate level in many fields because they require three things:

First, it demands that the practice be conducted in a field with well-established training techniques.

Second, it demands that practice be guided in the initial stages by a teacher or coach. This is somewhat linked to the first principle — that the practice occurs in a domain with established training methods mean that a teacher may use known pedagogical techniques to improve student performance.

Third, and last, deliberate practice nearly always involves building or modifying previously acquired skills by focusing on particular aspects of those skills and working to improve them specifically. - source

So, it’s easy to go to a Bootcamp and get up to speed on a language, but the stages past that have increasingly limited pedagogical resources and so are way harder to achieve.

Thankfully, there is a newer school of thought suggesting that if you aren’t an aspiring chess master or concert violinist, and if you passed the early levels of skill acquisition then there is still a method of learning available to you. You need to find a way to absorb the tacit knowledge of your field. The argument from common cog, translated into the developer domain, is this:

You learn more practical intermediate skills from pairing with experienced developers (tacit knowledge) than you will learn from drilling on LeetCode problems (deliberate practice).

The problem is that code pairing doesn’t scale the way the LeetCode problems do. ( Secondary concern: if you need to be good at LeetCode problems to get the job, it doesn’t matter how useful they are. It’s just a hurdle you need to overcome. )

Enter Twitch

Code pairing isn’t the only way to learn tacit knowledge. According to Accelerated Expertise, what you need is a way to observe experts building software2. Enter YouTube and twitch streamers.

People with expertise in thing X can now film themselves doing thing X, and clued-in practitioners can watch these experts do thing X and become really good themselves. - The YouTube Revolution in Knowledge Transfer

You should read the common-cog series on tacit knowledge. But seriously, coding streams are a minor revolution in transferring tacit knowledge. People said building a web browser from scratch was impossible but you can now watch ~80 hours of video of Andreas Kling building a web browser from scratch. The implied wisdom behind building a web browser has now been made a lot more widely distributed.

So in my quest to master the tacit knowledge in a particular subfield, I’ve been looking for streamers and YouTubers who are building in Golang. Here is what I’ve got so far:

GoLang / Cloud Native Streamers

Robert S. Muhlestein (rwxrob)

rwxrob has been building software for a long time. He uses his stream to teach server-side programming, mainly using Golang.

I’m a 54 year-old polyglot, mentor, Ashtangi, sk8ter, musician, writer, coder, hacker, gamer, traveler, dancer, art-lover, and full-time Kubernetes infrastructure engineer for a big corp.

Matt Layher

Software Engineer. Go, Rust, Linux, networking, and open source software. On and ever upward.

Michael Stapelberg

I wrote the Linux tiling window manager i3, the code search engine Debian Code Search and the netsplit-free, distributed IRC network RobustIRC. I used to be a Debian Developer, but these days I have effectively retired, aside from keeping services running.

Jordan Lewis (Large Data Bank)

Jordan Lewis hacks on the SQL layer of cockroachDB in his stream. He also has great video and audio quality.

I’m Jordan Lewis, Director of Engineering at Cockroach Labs and a Brooklyn townie. I used to work at Knewton, and before that I got my B.S. in Computer Science from UChicago.

Mark Mandel

Mark Mandel is building a game server on Kubernetes called Agones

I like writing code in just about any language that comes along. I built a career writing ColdFusion, but these days tend to focus more on Clojure and Go, and a little bit of Haskell.

I have been at Google as a Developer Advocate for the Google Cloud Platform, for the past couple of years, which included moving from Australia over to California, USA.

Nic Jackson

Nic Jackson’s microservices videos come highly recommended.

Developer advocate working for @hashicorp. Interested in Go microservices. Author of Building Microservices in Go and Service Mesh Patterns.

Filippo Valsorda

Filippo Valsorda explains cryptography solutions on twitch as he builds AGE

Cryptogopher. Go security lead.

Ashley Jeffs (Jeffail)

Ashley Jeffs’ live streams his work on Benthos, a boring stream processor.

I’m Ashley Jeffs, a Software Engineer based in Reading, UK. I’m the maintainer of the Benthos stream processor and a few other popular Go projects.

I basically share everything that I do either as code on Github, video talks on YouTube, or incoherent rambling on Twitter.

justforfunc

I’m Francesc Campoy and I decided I want to code more often, and to make it even better I’ll be showing what I build, or at least what I try to build, on this series of videos.

Jeff Lindsay (progrium)

Earthly Docker contributor Jeff Lindsay

Hello, I’m Jeff Lindsay. I’m an independent creator/programmer/entrepreneur/dreamer who, among other things, has somehow been at the forefront of cloud and developer tooling for the last 15 years. I work to make the world more generative and creative, and the world of computing more user extensible and re-combinable.

For the last few years I’ve been working on a project called Tractor, a tool for quickly making software systems. I’ll be using Tractor to build all other tools for my creative projects. I will also be sharing these creator tools, and how they’re made, with the world.

GoLang Cafe

GoLang Cafe’s YouTube videos are halfway between a tutorial and a live stream

Donald Feury

Appalachian Boi making videos about development, linux, and games.

Other Great Live Coders

I assume that the knowledge you can learn from watching live streamers is proportional to how closely their work matches your work. If you work in PHP on windows, using PhpStorm, you may not learn many low-level workflow tips from watching a Linux developer writing C in vim. But the high-level lessons about how to design a solution or how to decompose a problem, those skills can transfer across domains.

So here are some streamers worth watching regardless of your tech-stack.

Casey Muratori (Hand Made Hero)

Casey has been building a game from scratch on Twitch for years now. 600+ episodes are up on YouTube. He is a passionate presenter with lots to teach.

http://handmadehero.org is a project designed to capture and teach the process of coding a complete, professional-quality game from scratch.

Andreas Kling (Serenity OS)

Andreas Kling and the SerenityOS community are building an operating system from scratch and live streaming a lot of it.

I’m currently working on SerenityOS, a from-scratch operating system that tries to make Unix fun again.

I’ve been writing C++ for many years at companies both big and small. There’s a pretty good chance you’re reading this in a browser that’s slightly faster because of me.

Andrew Kelly (Zig Creator)

Andrew Kelly often streams Zig compiler hacking.

I am an open-source contributor, best known for creating the Zig Programming Language. I am employed by the Zig Software Foundation. Open-source software, game dev, music production, and other curiosities.

Send Me Your Tacit Knowledge

So that is a wrap-up of online streamers I am aware of. I tried to focus on Golang people who are streaming their work. Many people create great presentations and tutorials, which are more time-efficient to consume. But, you want to watch an expert at work, not them giving a presentation for tacit knowledge.

I’m sure there are many great streamers that I’ve missed. Who am I missing? Let me know.

Implicit CI Know-How

What does this all have to do with Earthly? Isn’t Earthly a build tool?

Great question. Earthly is a great piece of engineering, but what makes Earthly exciting is that it encapsulates some previously tacit knowledge of the Earthly team directly into a build tool. Values like Versatility, Approachability and making CI developer-centric.

Also, I just wanted to write up a list of great online programming streamers and explain why they are a valuable resource. But while you are here, take a moment to check out Earthly.

While you’re here:

Earthly is the effortless CI/CD framework.
Develop CI/CD pipelines locally and run them anywhere!


  1. This example is not great, but it’s hard to communicate examples of tacit knowledge easily. It’s subjective and not formally expressed by definition.↩︎

  2. You also need a method for extracting and absorbing this knowledge. See NDM for that. Or for a first approximation: emulate what the experts do.↩︎

Adam Gordon Bell %

Spreading the word about Earthly. Host of CoRecursive podcast. Physical Embodiment of Cunningham’s Law.
@adamgordonbell
✉Email Adam✉

Published:

Get notified about new articles!

We won't send you spam. Unsubscribe at any time.