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