I'm learning the MERN stack, but I don't want my understanding of web development to depend entirely on JavaScript or a particular framework. I'd like to build a strong, language-independent foundation covering frontend and backend concepts, databases, system design, and software architecture. I'm looking for one book or a small set that starts with the fundamentals and gradually moves into intermediate topics while explaining the underlying principles rather than focusing on a specific technology. What would you recommend?
3 Answers
Designing Data-Intensive Applications by Martin Kleppmann is an excellent choice for backend, database, and distributed-systems fundamentals. It focuses on data modeling, storage, scalability, reliability, and system design in ways that apply no matter which language or framework you use.
For a practical combination, try Database Design for Mere Mortals for relational database concepts and A Philosophy of Software Design by John Ousterhout for architecture and managing complexity. Both focus on transferable ideas instead of teaching one particular stack. Also, once you're comfortable, rebuild the same feature in two different technologies—that's one of the best ways to separate core concepts from syntax and framework conventions.
Books like Structure and Interpretation of Computer Programs, The Computer Systems: A Programmer's Perspective, Algorithm Design, Concrete Mathematics, and Introduction to the Theory of Computation can provide deep computer-science foundations. They're valuable if you want rigorous theory, but they may be excessive if your immediate goal is becoming effective at full-stack development. A more focused architecture and data-systems path would probably be better to start with.

That makes sense. I appreciate the theory list, but I'm mainly looking for concepts I can apply while building web applications, so I'll start with data systems and software design before diving into the more mathematical books.