Hacker News new | ask | show | jobs
by tialaramex 389 days ago
I think this "self taught coder" approach has two distinct big problems over actual Computer Science graduates writing software

1. Cliffs. There are big swathes of theoretical CS where we know things can't be done, and the self-taught people would smash their faces into such problems forever because they won't even realise it's insoluble in principle rather than merely difficult, whereas with a more principled background you needn't expend this wasted effort.

2. Local Maxima. Without a principled understanding it's easier to mistake a local maximum you've stumbled into for a global maximum. After all, all the small tweaks you tried make it worse, so, how are you expected to guess that a violently different solution would be better? Theory could help but you don't have any.

3 comments

Point 1 sounds interesting but I can't comment on it, because I don't remember ever having encountered it.

Point 2:

One of the most important techniques as a self-taught programmer is to develop an instinct for "foundational solution that wants to get out" so to speak. So you search for the name of the type of problem you're looking at or for the approach you half-way discovered. You don't have a tutor or professor who will tell you where you are, so you need to figure that out yourself, often by assuming that someone else already put a label on the map.

On the other hand, self-taught does not mean "you don't have theory". From my experience getting the raw knowledge is the easy part. There are a lot of excellent resources out there, from book recommendations/compilations to freely available lectures and so on.

The thing that I always missed or were generally harder to come by are far more precious than that: guidance and feedback from teachers/mentors, interaction with peers who are in the same boat and most importantly time.

These are absolutely spot on. I worked as a programmer having been a self taught coder. There were important things I just did not understand. A good example is how to gauge the runtime complexity of a program. I did not know what I did not know. Looking back at the code I wrote then—eek!

I hit another wall later in my career and that drove me to go to grad school. I met some folks there who clearly leveraged their CS knowledge (eg, people who were solving niche compiler problems “for fun”) and I realized that there was a lot more to CS than the stuff I had learned on my own. So I stuck with CS and never went back.

What makes you assume that a self taught coder would lack theoretical CS knowledge? Are you confusing bootcamp graduates with self taught coders?

With AI it's infinitely easier, but even before there have been plenty of self taught developers with good CS grounding.

> What makes you assume that a self taught coder would lack theoretical CS knowledge?

Because that's what self taught means. I would not consider myself to be a "self taught coder" for example because I have a CS degree.