To be fair, I don't think 3-5 books suffice at all. So from the point of view of adding books no-one else has mentioned, from the point of view of C++ Software Engineer, a few of my favourites:
Code Complete 2 - McConnel
Professional Software Development - McConnel
Structure and Interpretation of Computer Programs (SICP) - Sussmann et all. (main artifact: Implement the scheme interpreter, not in Scheme, but in a language of your choice)
Algorithm Design Manual - Skiena
The Timeless Way Of Building - Alexander. Software patterns often refer this book, but the concepts used in software patterns generally are far more pedestrian in scope than Alexanders timeless vision for quality in architecture. Goes really well with this older book Notes On The Synthesis of Form.
Code Complete 2 - McConnel
Professional Software Development - McConnel
Structure and Interpretation of Computer Programs (SICP) - Sussmann et all. (main artifact: Implement the scheme interpreter, not in Scheme, but in a language of your choice)
Algorithm Design Manual - Skiena
The Timeless Way Of Building - Alexander. Software patterns often refer this book, but the concepts used in software patterns generally are far more pedestrian in scope than Alexanders timeless vision for quality in architecture. Goes really well with this older book Notes On The Synthesis of Form.