Reading List
Writing
The Elements of Typographic Style — Robert Bringhurst
The Visual Display of Quantitative Information and Visual Explanations: Images and Quantities, Evidence and Narrative — Edward R. Tufte
Engineering
The Art of Doing Science and Engineering: Learning to Learn — Richard W. Hamming
The Mythical Man-Month Essays on Software Engineering — Frederick P. Brooks, Jr.
Managing the Unmanageable: Rules, Tools, and Insights for Managing Software People and Teams — Mickey W. Mantle, Ron Lichty
Ideas That Created the Future: Classic Papers of Computer Science — Harry R. Lewis
Programming Quantum Computers: Essential Algorithms and Code Samples — Eric Johnston, Nic Harrigan, Mercedes Gimeno-Segovia
Knowledge Representation: Logical, Philosophical, and Computational Foundations — John F. Sowa
Software
Project Oberon: The Design of an Operating System and Compiler — Niklaus Wirth and Jürg Gutknecht
Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software — Scott Rosenberg
Structure and Interpretation of Computer Programs — Harold Abelson, Gerald Jay Sussman, Julie Sussman
Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People https://www.amazon.com/Grokking-Algorithms-illustrated-programmers-curious/dp/1617292230 Aditya Bhargava
Data Structure Visualizations — David Galles
The Big-O Cheat Sheet — Eric Rowell
The Art of Computer Programming, Volumes 1-4A Boxed Set — Donald E. Knuth
Algorithms (4th Edition) — Robert Sedgewick, Kevin Wayne
The Algorithm Design Manual (Texts in Computer Science) — Steven S. Skiena
Purely Functional Data Structures — Chris Okasaki
Time, Clocks and the Ordering of Events in a Distributed System — Leslie Lamport
Category theory for programmers — Bartosz Milewski