I was going to make a comment very similar to yours- there's been plenty of programming 101 books, though maybe more so in previous decades starting in the '90s, which has the author present a project or a series of projects and each chapter involves building out the project while introducing concepts. While those books tend to be about teaching how to use a specific framework, SDK, or language rather than programming in general, that project-based method of pedagogy is common.
What's annoying about those books is that sometimes you don't care to go through the entire project, you just want to jump to a specific topic, but you're forced be part of a continuous narrative. Though in modern times where every technical book has a corresponding repository somewhere with code samples, you can at least use that code rather than starting chapter one.
Whether you want to learn from how-to projects, or from abstract first principles, there's resources out there for both. Teaching how to code is not broken at all. Maybe teaching data structures and algorithms could use more work- but that's the subject for a different article.
What's annoying about those books is that sometimes you don't care to go through the entire project, you just want to jump to a specific topic, but you're forced be part of a continuous narrative. Though in modern times where every technical book has a corresponding repository somewhere with code samples, you can at least use that code rather than starting chapter one.
Whether you want to learn from how-to projects, or from abstract first principles, there's resources out there for both. Teaching how to code is not broken at all. Maybe teaching data structures and algorithms could use more work- but that's the subject for a different article.