DEV Community

Discussion on: What learning path should I take to learn underlying concepts and principles?

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

What language or even learning path do you recommend for my situation?

A rather standard feedback loop like the following is what I'd recommend:

  1. Try to do something.
  2. Make mistakes while trying to do it (not intentionally, just because you happen to make the mistakes).
  3. Learn from your mistakes.
  4. Repeat from step 1.

Iterative learning of this type of thing really is the best way in most cases. Exact choice of language doesn't matter as much as how you approach it (though I would recommend C (not C++, not C#, just plain C) for the learning part, as it kind of forces you to do most of the work yourself).

Is there anyone who experienced the same?

Most people. The number of people for whom this type of stuff is intuitive is pretty small, especially since you can't tangibly interact with a lot of the concepts involved.

Are there any topics every programmer should know?

Yes, but it really depends on what, specifically, you're doing which topics you 'should' know.

The two big ones (at least IMO) that are useful for almost every programmer are basic set theory and basic graph theory. Both provide the underpinnings for a number of very widely used data structures, as well as being helpful to understand a number of other programming concepts and talk about certain types of algorithms. Graph theory is especially useful when dealing with tree structures, which are very common in a wide variety of programming environments.

Collapse
 
lbeul profile image
Louis

Alright, thanks for that huge advice! Do you have any recommendations for resources like books, courses etc.?

Collapse
 
ahferroin7 profile image
Austin S. Hemmelgarn

Unfortunately, not really. I've been looking for a while now for some good primers on basic set theory and graph theory to point people at who are just starting out, but have yet to find any that don't assume a pretty heavy background in advanced mathematics (which kind of defeats the purpose of pointing people straight at set theory and graph theory) or cover a much broader range of sub-topics than most programmers will ever need.