Can anyone recommend a book that you would use as the guide for building a new software project from scratch? Like something that would provide good overall structural approach and best practices. The goal would be to end with as least amount of tech debt and codebase flexible enough to stand the test of time?
After probably more than 10 years postponing to find what HTDP (how to design programs) is all about I'm now convinced that everyone should go through that book (or an online course) and apply the newly found knowledge in real life.
See the edx links in one of the threads above. Take the course; Actually DO what Gregor repeatedly says in videos and you'll find what you missed.
I do like: Clean Architecture[0], its pretty much language agnostic and has some nice examples on overall structural decision making -- from small to large projects.
>> The goal would be to end with as least amount of tech debt and codebase flexible enough to stand the test of time?
I am not sure if it is possible, to have a comprehensive book with this goal in mind. It very much depends on the project size, the dependencies and your language / framework -- and even if you have that in order, there are your teammates, the process, continuous integration, milestones/deadlines and the general workflow you have to take into consideration.
Depends, what kind of application are you trying to build? What programming language?
I wrote my book Professional PHP [0] as a guide like that, but of course it's heavily skewed towards building a PHP webapp (even though most of it is also applicable to other OOP languages).
But to be honest, I wouldn't try to narrow it down to a single book. Start with the classics like clean code, code complete 2, pragmatic programmer and then work yourself towards effective java, implementing domain driven design etc. I have a list of my recommendations published here [1].
In my opinion no book will really teach you this, only experience. It requires going through cycles of design, implementation and subsequent evaluation of how well those fared and how to improve upon them. After repeatedly going through this experience in a mindful manner you will develop a gut feel for what's good and what's suspect.