Lazyfoo is good for learning SDL1/2 but I feel that it's a bit difficult to structure one's code once the games become non trivial. I tried twice to write a 2-d rpg, an Ultima spinoff but stopped in the middle because I feel the project is out of my control and the code structure is messy already. There are just so many things in even a basic rpg (NPC, stored, path finding, dialogs, input, etc) that I feel overwhelmed. And A lot of code gets wasted.
I agree and that's why I'm working on an SDL tutorial with modern SDL features centered around how a game might actually be structured. Unfortunately, though, the only real way to learn to write a game properly is to write a dozen games improperly