News for hackers. Stuff that matters.

Ask HN: I'm a self-taught programmer, what am I likely missing

I've been programming since I was about 10, starting with BASIC, then ActionScript 2 and 3, then PHP, mySQL, Objective C, then Javascript, Swift, back to Javascript to learn React, Node, Next.js etc etc. and using these I've made websites and apps with millions of downloads, had books published.

BUT, I'm entirely self taught, and I feel like I'm likely missing a bunch of things that 'properly' trained programmers know. But you don't know what you don't know, right? I would definitely fail any kind of code test with sorting algorithm type questions for example.

Has anyone also been along this path and realised these important things they don't know? If so, what are they?

( 7 comments | 3 points | on HN )
Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by AnimalMuppet on Tuesday October 05, 2021 @06:21PM (#28766467)
I'm self-taught. (OK, I had one class in high school, and one in college. Nobody has ever hired me because of those classes.)

Things I've had to learn:

  - Big O notation and what it means
  - UML, at least parts of it
  - SQL
  - git
  - gdb
I am not expert at any of these. I've learned enough to get by.

And that's kind of my philosophy. It's like just-in-time learning. I learn what I need to be able to do what I need to do. I haven't bothered to grind leetcode or anything. I let the job tell me what I need, and I learn that. (I do also kind of keep an eye on what else is going on, so that every five years or so, I try to learn the one thing that's going to matter most for my employability in the future.)

Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by jonplackett on Tuesday October 05, 2021 @06:35PM (#28766595)
Thanks, I've never heard of Big O or UML so that's just the kind of thing I was hoping would come up. I have the exact same philosophy as you, constant learning but to always achieve a goal. Makes learning always fun (even when massively frustrating).
Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by version_five on Tuesday October 05, 2021 @06:43PM (#28766677)
Take a look through and undergrad CS curriculum. A lot of what you're missing would be breadth stuff - math, basic physics, introductory logic, operating system theory, computer architecture, digital systems, algorithms and data structures, compiler theory, finite automata, ...

Personally I'm a big advocate for learning all of this stuff, even if you don't ever need it for your job. It still changes how you think about problems and makes you more well rounded (though formal education is not the only way to be more well rounded).

If you have an undergrad degree or past experience in a different area, you may not be "missing" anything from the perspective of being well rounded.

Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by clash on Tuesday October 05, 2021 @06:08PM (#28766316)
Knowledge about complexity classes is an issue that at least many hobbyists seem to miss.
Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by jonplackett on Tuesday October 05, 2021 @06:35PM (#28766600)
Any reading on this you'd recommend?
Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by clash on Wednesday October 06, 2021 @03:06AM (#28770084)
I'll rephrase. Learn about the basic container data structures like linked list, vector, set, map, hash, tree, queue, heap.

Study time complexity of insertion, deletion, search, etc. in these data structures. Then you will understand when to use which. Big O notation is used to express time complexity for expected runtime of the operations.

Re:Ask HN: I'm a self-taught programmer, what am I likely mi... by christopherbalz on Wednesday October 06, 2021 @01:08PM (#28775539)
My two cents: Formal Methods (e.g., "Z" and Promela) and also, teamwork stuff (from old days, Team Software Process, and any more modern material like that).