was chatting with a friend about some of the challenges with teaching yourself programming topics:

* you have random gaps that you don’t even know about
* it's hard to assess your level, you might know a lot about one subtopic and be a total beginner elsewhere
* it's very difficult to guess what other fellow autodidacts know about the subject

I've had to learn how to suss out what shared knowledge base I have with another programmer on any given topic quickly so that we can talk

(1/?)

I also think a lot about what it means to be "self taught" in programming, for example I "taught myself" about how TLS works under the hood by writing a toy implementation of TLS 1.3. But I used this guide https://tls13.xargs.org/, and I probably could not (or would not) have done the project if that guide didn't exist

so if we want to make it easier for people to teach themselves effectively, what kinds of resources do we need to provide?

(2/?)

The Illustrated TLS 1.3 Connection

Every byte of a TLS connection explained and reproduced

we have a lot of amazing "teach yourself" resources in programming (like nand2tetris or all of the great guides to writing your own compiler / programming language).

But I think a lot about -- which programming topics *don't* have great guides for how to "teach yourself" that thing? What's missing? How can we fill in the gaps?

(3/?)

also, how can we help people who are self-taught in an area recognize what knowledge gaps we might have? Not in a gatekeeping “EVERY REAL PROGRAMMER SHOULD KNOW X” way, but more "hey, if you feel like you're missing something, here are some ideas for where to start"

(4/?)

@b0rk

So what's wrong with a EVERY REAL PROGRAMMER SHOULD KNOW X approach? I would have loved to have one of those when I was starting out.

@SnerkRabbledauber I just fundamentally don't think it makes sense, @galaxykate has a great thread about this on twitter https://twitter.com/GalaxyKate/status/1751618131187884089

there are too many different kinds of programmers and programming is too big

Dr Kate Compton puts a hex on you: #B00000 (@GalaxyKate) on X

Reminder that CS is a vast and fractal field, and you can do 20 years without ever using localhost or 20 years without ever using the terminal, or 20 years without thinking about np completeness

X (formerly Twitter)

@b0rk @galaxykate

But as a CS worker for decades I see all the time how a lack of understanding the basics leaves people confused and stuck when something doesn't do exactly what they expect.

@SnerkRabbledauber @b0rk There's a big difference between the mindset of "REAL PROGRAMMERS SHOULD KNOW" and "These concepts are used extensively in multiple fields"

For example: A lot of people say crap like "REAL PROGRAMMERS SHOULD KNOW HOW MEMORY WORKS". While I'll allow that "knowing how memory works" has made some of my code better over the years, I know plenty of people who are much more prolific devs than I am who have almost no understanding of it, because they don't NEED it.

@b4ux1t3

I'm just sharing what I have learned in 30 years in the field. If you want to have real power over your tech you should want the basics, no, you should DEMAND the basics. Cutting corners and skimping on enriching your brain may work if you're lucky, but it also hands over your power to others. How comfortable a person is with that exchange will vary.

@SnerkRabbledauber @b4ux1t3 I think the point is, what on earth ARE the basics? My husband has been neck deep in network protocols and if I need to know how UDP works*, I’d ask him. But if he needs to make a minimal web page exist, he asks me. And we’ve both been in the field for a while now. Just very different parts of it.

* I have literally never needed to know this

@thatandromeda @SnerkRabbledauber check this extremely technical document for everything you need to know about UDP.

I always thought the UDP one should be a hose instead of a bottle.

@thatandromeda (this is not me trying to mansplain UDP, for the record; just a joke. Haha)
@b4ux1t3 @SnerkRabbledauber haha this is great and reminds me of my favorite reference work (https://http.cat)
HTTP Cats

API for HTTP Cats

HTTP Status Cats API
@thatandromeda @SnerkRabbledauber this is new to me, and now I need it in every web app I maintain personally.

@b4ux1t3 @thatandromeda @SnerkRabbledauber this tbh isn't a helpful metaphor

you should be thinking of udp as Fancy IP

it's a datagram with a port and a useless checksum we can forget about

@noah _wheels the catapult back into the shed_ yeah, bad metaphors. Indeed.