Also how to make sure you clear grasp of said fundamentals. I just say this cause it's never really keeping with all the latest technologies it's all about understanding said fundamentals. Also is there some learning path to follow I feel as if I never felt like I'm learning and to be a successful junior I need to find the best way to learn for me.
For fundamentals, I'd describe the core as understanding the common constructs of writing and organize the code. Programming itself only has a fixed number of permutations to do things and often times constructs across languages do the same time but the syntax is different (a for loop in Ruby has different syntax than a for loop in Java, but we'd still expect them to behave the same way). Understanding what these common constructs are means that your time learning something new will be more focused around the specific information you need vs. having to read some documentation end-to-end and having to parse through a bunch of fluff.
The personal example I keep giving on Taro for fundamentals is that I'm an Android engineer, and I haven't touched backend code in years. But I've been able to provide design feedback occassionally for the backend simply because I imagine the backend codebase to be architected similarly to the Android codebase. I don't know the exact tools and technology for the backend, but I can identify certain pieces of functionality and assume there's something that has to be able to behave in a very specific way to accomplish that functionality. So I'd hear the word "Kafka" a bunch in these reviews: I've never used Kafka ever, but I do know that something effectively needs to be an event bus for services.
Glad you're here to ask this question, you're in the right place!
it's never really keeping with all the latest technologies it's all about understanding said fundamentals
100% agreed. And what are those fundamentals for coding? I think its just the basics needed like variables, control flow, functions, and what classes and objects are. After that there are books on OOP, functional programming, Clean Code, etc. But its easier to learn more complex stuff by doing. For getting that first job having fun with side projects is key.
is there some learning path to follow
Essentially building something is key to real learning:
Examples:
Before I got my first full time tech job after school I did a bunch of little exploratory projects for a few months. I implemented my version of malloc in C and tested it's performance - that worked. Then I tried building an iOS app that used GPS, head tracking, spatial audio libraries and didn't really finish anything but played with some libraries. Then I changed some strings and margins of a React template and shipped a personal website. After that I searched for game engines in javascript where my idea was I would train an AI to play them really well, record youtube videos as if I was playing them for real and go viral. Never really finished this but played a perfect game of snake programmatically and I stopped there because I got hired.
I never felt like I'm learning
It feels like you have a negative view of your progress and/or experience with coding. First of all, you probably know a lot more than you think. But the metal side of coding was also really tricky for me - it wasn't understanding OOP that was super hard but rather what the IDE means when it says "Build Failed: 43 Errors, you seem to suck at this". These are some "fundamentals" on the mental side:
One more thought that didn't fit in the last answer is: whatever coding you're doing it's fundamental to break down your work into small bite sized pieces and take them one at a time. (1 min video with example here)