/learning

Books to read and ideas for personal projects

Learning

Here I list the books I plan to read and some ideas for personal projects.

Books

Coding

Steve McConnell Code Complete (second edition).

Andrew Hunt, David Thomas The pragmatic programmer.

Glenfold J. Myers The Art of Software Testing. ⭐

Robert C. Martin Agile Software Development, Principles, Patterns, and Practices.

Felienne Hermans The Programmer's Brain. ⭐

Robert C. Seacord Effective C (An Introduction to Professional C Programming). 📚

Randall Hyde Write Great Code, Volume 1, 2nd Edition (Understanding the Machine). 📚 ⭐

Randall Hyde Write Great Code, Volume 2, 2nd Edition (Thinking Low-Level, Writing High-Level). 📚 ⭐

Randall Hyde Write Great Code, Volume 3 (Engineering Software). 📚

Randall Hyde The Art of Assembly Language

Programming languages

Scott Meyers Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library.

Scott Meyers Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14.

Luca Palmieri Zero To Production In Rust. ⭐⭐⭐

Jon Gjengset Rust for Rustaceans. Idiomatic Programming for Experienced Developers. 📚 ⭐⭐

Sylvain Kerkour Black Hat Rust. ⭐⭐

Conrad Barski Land of Lisp (Learn to Program in Lisp, One Game at a Time!). 📚

Daniel Higginbotham Clojure for the Brave and True (Learn the Ultimate Language and Become a Better Programmer). 📚

Kees Doets, Jan van Eijck The Haskell Road to Logic, Maths and Programming.

The Rust Performance Book https://nnethercote.github.io/perf-book/

Stephen Cleary Concurrency in C# Cookbook, 2nd Edition

Software engineering

Gene Kim, Jez Humble, Patrick Debois, John Willis, and Nicole Forsgren The DevOps Handbook. ⭐⭐

Titus Winters, Tom Manshreck, and Hyrum Wright Software Engineering at Google

Steve Freeman and Nat Pryce Growing Object-Oriented Software Guided by Tests.

Gergely Orosz The Software Engineer's Guidebook 📚 ⭐⭐⭐⭐

Software architecture

Eric Evans Domain-Driven Design: Tackling Complexity in the Heart of Software. ⭐⭐

Humberto Cervantes Designing Software Architectures: A Practical Approach.

Len Bass, Rick Kazman, Paul Clemens Software Architecture in Practice.

Gregor Hohpe and Bobby Woolf Enterprise Integration Patterns. ⭐

.NET application architecture documentation https://docs.microsoft.com/en-us/dotnet/architecture/

Thomas Erl Service-Oriented Architecture, Second Edition.

Paul Clemens, Felix Bachmann, Len Bass, David Garlan, James Ivers, .. Documenting Software Architectures: Views and Beyond.

Sam Newmann Building microservices.

Martin Fowler Patterns of Enterprise Application Architecture. ⭐

Roberto Vitillo Understanding Distributed Systems ⭐⭐

Cornelia Davis Cloud Native Patterns: Designing change-tolerant software.

Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad and Michael Stal Pattern-Oriented Software Architecture Volume 1: A System of Patterns

Douglas C. Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects

Michael Kircher, Prashant Jain Pattern-Oriented Software Architecture Volume 3: Patterns for Resource Management

Frank Buschmann, Kevlin Henney, Douglas C. Schmidt Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing

Mark Richards, Benjamin Lange, Neal Ford Fundamentals of Software Architecture: An Engineering Approach

Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani Software Architecture: The Hard Parts

Product and team management

Don McGreal, Ralph Jocham The Professional Product Owner (Leveraging Scrum as a competitive advantage). 📚 ⭐⭐⭐

Jeff Patron User Story Mapping (Discover the Whole Story, Build the Right Product). ⭐

Eric Ries The Lean Startup (How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses).

Marty Cagan INSPIRED (How to Create Tech Products Customers Love (Silicon Valley Product Group)).

Marty Cagan EMPOWERED (Ordinary People, Extraordinary Products).

Processes and management

Matthew Skelton Team Topologies.

Fred Brooks The Mythical Man-Month: Essays on Software Engineering.

Brené Brown Dare to Lead. 📚 ⭐⭐

Camille Fournier The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change

Will Larson An Elegant Puzzle: Systems of Engineering Management

Tanya Reilly The Staff Engineer’s Path

Will Larson Staff Engineer: Leadership beyond the management track https://staffeng.com/

Computer science

Harold Abelson, Gerald Jay Sussman Structure and Interpretation of Computer Programs. 📚 ⭐⭐

Open Web Application Security Project (OWASP) https://www.owasp.org

Aho, Alfred Vaino; Lam, Monica Sin-Ling; Sethi, Ravi; Ullman, Jeffrey David Compilers: Principles, Techniques, and Tools (2 ed.). ⭐⭐⭐

Stefan Höltgen RESUME Hands-on Retrocomputing. ⭐

Peter van Roy, Seif Haridi Concepts, Techniques, and Models of Computer Programming.

Donald Knuth The Art of Computer Programming

Philipp Oppermann Writing an OS in Rust Blog posts. ⭐⭐⭐

Bob Plantz Introduction to Computer Organization (An Under the Hood Look at Hardware and x86-64 Assembly). 📚 ⭐⭐

Jonathan E. Steinhart The Secret Life of Programs (Understand Computers -- Craft Better Code). 📚

Adam Woodbeck Network Programming with Go (Code Secure and Reliable Network Services from Scratch). 📚 ⭐⭐

Machine Learning

Andriy Burkov The Hundred-page Machine Learning Book. 📚

Andriy Burkov Machine Learning Engineering. ⭐

Aurélien Géron Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow. 📚 ⭐⭐⭐

Peter Bruce, Andrew Bruce Practical Statistics for Data Scientists.

Trevor Hastie, Robert Tibshirani, Jerome Friedman The Elements of Statistical Learning: Data Mining, Inference, and Prediction.

Sergios Karagiannakos Deep Learning in Production.

Ian Goodfellow and Yoshua Bengio and Aaron Courville Deep Learning.

Andrew Gelman, John Carlin, Hal Stern, David Dunson, Aki Vehtari, and Donald Rubin. Bayesian Data Analysis.

Ivan Vasilev Advanced Deep Learning with Python

3D and computational geometry

Les Piegl The Nurbs Book.

Jakob Andreas Bærentzen, Jens Gravesen, François Anton, Henrik Aanæs Guide to Computational Geometry Processing. 📚

Gabriel Gambetta Computer Graphics from Scratch. 📚 ⭐⭐

Mathematics

Jorge Nocedal, Stephen Wright Numerical Optimization. 📚 ⭐

William H. Press Numerical Recipes: The Art of Scientific Computing. 📚

Gene H. Golub Matrix Computations.

Timothy A. Davis Direct Methods for Sparse Linear Systems.

Thomas R.J. Hughes The Finite Element Method. Linear Static and Dynamic Finite Element Analysis. 📚

David Spiegelhalter The Art of Statistics. Learning from Data. 📚 ⭐

Physics

Kip S. Thorne, Roger D. Blandford Modern classical physics: Optics, Fluids, Plasmas, Elasticity, Relativity, and Statistical Physics. 📚