Engineering
Intro
- Effective Java, Joshua Bloch
- Clean Code, Robert Cecil Martin
- Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Refactoring: Improving the Design of Existing Code, Kent Beck and Martin Fowler
Advanced
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems, Martin Kleppmann, [link]
- Fault-Tolerant Message-Passing Distributed Systems: An Algorithmic Approach, Michel Raynal
- Reactive Design Patterns, Section 2, Brian Hanafee, Jamie Allen, and Roland Kuhn Dr.
Papers, Wikis, & Blogs
- Power Machine Learning At Scale, Mapping Parallelized Modeling-to-HPC Infrastructure on AWS, White Paper, 2019, [link]
- Avoiding Insurmountable Queue Backlogs, David Yanacek, [link]
- Meaningful Availability, Tamas Hauer, et al., 2019, [link]
- Challenges with Distributed Systems, [link]
- Is High Quality Software Worth the Cost?, Martin Fowler, [link]
Non-Engineering
- Outliers: The Story of Success, Malcom Gladwell
- Never Split the Difference: Negotiating As If Your Life Depended on It, Chris Voss
- Influencer: the New Science of Leading Change
- Indistractable: How to Control Your Attention and Choose Your Life, Nir Eyal
- Atomic Habits: Tiny Changes, Remarkable Results, James Clear
- Peak: Secrets From the New Science of Expertise, Anders Ericsson & Robert Pool