Tutorials themselves aren't bad, the problem is that people write the code from them blindly and don't actually learn what the code itself is doing.
Sure they have "written" a platformer from Shauns tutorials, made an RPG from Heartbeasts videos or a farm game from Friendly Cosmonauts tutorials, but the vast majority of them wouldn't be able to answer if you asked them how arrays work, how lists work or even the difference between local/instance/global variables and general scoping because they simply copied the code without knowing what it is actually doing and why.
The number of "...was not set before use" posts on here vouvhes for that, even when the error message is clear as to what the error is they don't know what is causing it because they likely copy/pasted the code and have no idea how it works. Sometimes they get help and then post again about
with the same error message but this time with a different variable. They don't even take in the help they got they just get the quick fix and want to rush ahead and that isn't how coding works.
There are no shortcuts to learning and understanding it, you just have to put the time in and learn at your own speed and try and have fun whilst doing so.
If you want to become self-reliant and write your own code then you need to learn the actual fundamentals of programming and understand things such as loops, scope, how different data structures work and how each one is best used for a specific task.
Yes it's not as Hollywood or glamourous as a platformer, RPG or farming sim but what good is that if you don't understand how it works nor fix any bugs because all that happened was a slow, manual copy/paste of code from the videos into the IDE.
Once you have an understanding of the fundamentals of programming you can use that to build anything you like because all code is based on those same fundamentals - the only difference between languages is usually syntax (give or a take a few language specific features) as the core concepts and logic are the same
I've heard good things about the tutorial series that
@samspade has released so I would recommend taking a look at that.
I'm not sure which is the best way to watch the playlists as there seems to be one playlist for pre-2.3 and updated playlist for 2.3+ so maybe
@samspade could post in here and advise you better on that but here are the links to both playlists:
GMS2 Coding Fundamentals in GML
GMS2 Coding Fundamentals Update
Also work on small little projects to build your knowledge.
Something like Pong that is simple but that you can build everything needed for a game: player input, moving the paddles based on that input, making the ball move, collision between ball and bats, keeping track of score, adding sounds, adding extra animations to spice things up etc.
Then slowly add difficulty to that and build something like Breakout which has a few new things to learn (storing bricks and their states, level layouts, power ups like multiball, effects on the ball and bat, shooting bullets until the power up runs out, saving the game etc) as well as allowing you to reinforce the knowledge you built from the Pong game (player input, moving the bat, moving the ball(s), collisions, score keeping etc).
People just starting to learn get told to make small games all the time and scoff at the idea, but when you think about it these simple games have all the systems needed just like any other game and can actually be more complex than they look - Breakout is a great example of this with all the things you can add to a basic brick breaking game - but all the Hollywood fluff and graphical pizzazz is removed and you're able to focus on the core mechanics and learn how to put the thing together piece by piece learning along the way about all the fundamentals which can then be used in other more compex games....and the cycle continues because as a programmer you never stop learning.
The manual and Google should become your best friends too, between them the answer to any questions you have will likely be answered but try to get into the mindset of understanding what code is doing and why. Make changes to it and see if it changed what you thought it would, play around with it and understand the concept of what is happening when you changed whatever that thing was, then move onto the next thing.
I've written way more than I intended to, but hope that helps.