DEV Community

Louis
Louis

Posted on

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

Hey there,
I'm Louis. I've been programming since about a year and a half after pivoting from an apprenticeship in banking. Now I'm back in school and I spent a lot of my free time coding.

In the past year I dove into FrontEnd Development, as I started with HTML & CSS and naturally moved to JS and React.
I know a bit of PHP and mySQL from school, but I feel like I'm still not getting the big picture and have a huge knowledge gap when it comes to algorithms, data structures and low level programming.

To pick up these concepts in a "learning by doing style", I want to learn a backend, maybe low-level programming language to apply all these theoretical but underlying techniques and practises.

I mean, I heard of them. Pointers, hashtables, linked lists and big-O. But I really don't know much about them because I never needed them in my FrontEnd projects.

What language or even learning path do you recommend for my situation? Is there anyone who experienced the same? Are there any topics every programmer should know?

I'm really looking forward to hear about your opinions!

Top comments (10)

Collapse
 
harittweets profile image
Harit Himanshu

Also, when learning data structures and algorithms, try to visualize them and map them to real-life examples. That way, you learning will retain for a long time.
I do not have any videos created for them, but in future, I will surely create some!

For now, you can get a lot of help from University of San Francisco's lecture available here

Collapse
 
lbeul profile image
Louis

Thanks, that's what I want to do :) Apply these concepts to real projects.

Collapse
 
harittweets profile image
Harit Himanshu

@Louis, good luck! Please reach out if you need help with resources. I have education and experience for over 15+ years now in Software Development, maybe my experience help you not take 15+ years, and get better faster!

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.

Collapse
 
dimitrimarion profile image
Dimitri Marion
Collapse
 
lbeul profile image
Louis

Yeah, I love this kind of community-driven education paths!

Collapse
 
stereobooster profile image
stereobooster
Collapse
 
lbeul profile image
Louis

Thanks a lot! Exactly what I'm looking for. :)