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 a
fmt.Print("Do we get to here as well?") before someone said “Use numbers”. Now I’m always starting with
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
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. )
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 (
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.
Software Engineer. Go, Rust, Linux, networking, and open source software. On and ever upward.
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.
- Online at: YouTube, Twitch
- Notable Content: Working on GoCrazy (something like a unikernel for raspberry pis)
Jordan Lewis (Large Data Bank)
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.
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.
Developer advocate working for @hashicorp. Interested in Go microservices. Author of Building Microservices in Go and Service Mesh Patterns.
Cryptogopher. Go security lead.
- Online at: YouTube, Twitch
- Notable Content: Cryptography tool AGE streaming, CryptoPals Solutions in GoLang
Ashley Jeffs (Jeffail)
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.
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 (
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.
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)
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)
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)
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 a syntax for defining your build. It works with your existing build system. Get repeatable and understandable builds today.