1. The Pragmatic Programmer by Andy Hunt and Dave Thomas
2. The Clean Coder by Robert Martin
3. Design Patterns: Elements of Reusable Object-Oriented Software (the "Gang of Four" book)
The first two contain a range of advice pertaining to working as a professional software engineer. The third one, although very dated, is still a great resource for understanding many of the design patterns used in OOP.
https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://www.physixfan.com/wp-content/files/GEBen.pdf
https://plato.stanford.edu/entries/computer-science/
https://en.wikipedia.org/wiki/Computer_science#Further_readi...
Is there some reason why I am being downvoted? These are all highly-regarded books.
https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_Ref...
The Art of Computer Programming by Donald Knuth
Introduction to Algorithms by Thomas Cormen
An Introduction to Formal Languages and Automata by Peter Linz
Probability and Statistics by by Morris H. DeGroot
Operating Systems: Internals and Design Principles by William Stallings
Understanding Cryptography by Christof Paar
Database Systems: Fundamentals of Design, Implementations and Management by by Peter Rob
Principles of Concurrent and Distributed Programming: Algorithms and Models by M. Ben-Ari
Introduction to Graph Theory by Richard Trudeau
Advanced Data Structures by Peter Brass
Ones and Zeros: Understanding Boolean Algebra, Digital Circuits, and the Logic of Sets by John Gregg
An Introduction to Algebraic Structures by Joseph Landin
Theory of Computation by S.N. Sivanandam
You can always find more on https://cstheory.stackexchange.com/ or on some universities websites.
Refactoring[1] by Martin Fowler.
On Lisp[2] by PG.
[0]https://www.amazon.com/About-Face-Essentials-Interaction-Des...
[1]https://www.amazon.com/Refactoring-Improving-Existing-Addiso...
Highly recommended, it's a great book.
[0] https://www.amazon.com/Understanding-Digital-World-Computers...
Code Complete: A Practical Handbook of Software Construction, Second Edition
Clean Code: A Handbook of Agile Software Craftsmanship
http://web.mit.edu/6.033/2017/wwwdocs/assignments/rec-therac...
It presents a case study of the impact of a poorly build interface and the impact it can have on peoples' lives. If you do the work of a software engineer, you bear a responsibility for the systems and interfaces you build and the impact of how humans use them. The paper also introduces you to the important questions to ask about systems and teams in order to bear that responsibility.
It was the first paper in my university's Systems Engineering class for good reason.
Elements of Computing Systems
Writing and Interpreter in Go
https://www.amazon.com/Elements-Computing-Systems-Building-P...
https://www.amazon.com/s?k=writing+an+interpreter+in+go&i=st...
Unless your stack is very deep or highly specialised I would say the following: I don't have a specific book in mind but with code slowly becoming a commodity I would advise content that intersects tech with business or UX. Anything not IP or otherwise USP to your company can be built by reusing other's work.
Also learning the mindset to leverage repo's and API's to the max so effective productivity is realised is super important.
- Concise Guide to Software Engineering: https://link.springer.com/book/10.1007%2F978-3-319-57750-0
- Guide to Discrete Mathematics: https://link.springer.com/book/10.1007%2F978-3-319-44561-8
For overall understanding of the Computer as a holistic system of abstractions: Structured Computer Organization by Andrew Tanenbaum.
Any book on Algorithms/Data Structures; Robert Sedgewick's books are recommended.
The above should give you a good foundation. You can then move onto in-depth study of each layer/abstraction eg. Languages/OS/Compilers/Networking etc based on your need/job.
If you feel like you want to grow as a programmer, pick a project (or contribute to an existing one), and learn whatever is needed to do it.
It helps you deep dive into the computer systems and covers subjects taught in at least three to four courses in a formal computer science education.
[0]www.teachyourselfcs.com