> Wherever I end up, I’m going in as an entry-level software engineer. I’m not going in with 15 years of software engineering experience because I simply don’t have it. When it comes to this stuff, I’m the equivalent of a fresh CS grad. Talk about selling yourself short. You've been a web developer for 15 years. I would think you've progressed a little further than entry-level.
You'd be surprised! I've interviewed many "veterans" (and worked with a few!) who just don't have the chops. In the world of web development, the developer who knows just enough to skate by without a proper understanding of algorithms and design patterns seems to be the rule rather than the exception. Kudos to him for acknowledging it and trying to do something about it.
You're not wrong that some developers will simply skate by, but is the developer wrong to simply skate by? Specially as a web developer, I think too many people think that the barrier of entry is high, and it really isn't.
The majority of technology I know how to work with I have picked up out of necessity to make something work (or work better). Even database internals I know little about how they work, because I don't think there's an inherent need. I've worked with many database engines (usually whatever the business wants to use), and I just know enough about DDL/DML and indexing to make things work (note that I'm talking about SQL/noSQL DBs here).
I re-invent the wheel constantly in different languages for pet projects that will never even see GitHub. I act out some of the more modern tutorials to get me more familiar with how other people code. But at no point have I yet had to stop and say "this damn bubble sort isn't fast enough!"
I don't even use an ORM, but I think the majority of web developers don't know SQL and just use an ORM, and I think that's still OK, because they haven't hit the point where they need to use raw SQL to address a performance issue. But when they do, wouldn't they be as likely as I have been to look up documentation, StackOverflow and the rest of the web to get what they need done? And isn't that enough? If the guy sitting next to me knows how to implement a performant/redundant/concurrent database solution from scratch, he shouldn't be sitting next to me in the first place, he should be working on improving database software! And I'll use his tool when he ships it, but that still doesn't make me a caveman.