Websites

  • Big tech spreadsheet - Big tech companies listed by their domains they have teams in
  • diataxis - How to write technical documentation. This breaks it into tutorials, how-to guides, explanations, and reference material.
  • techinterviewhandbook - This is a classic page for how to prepare for technical interviews
  • systemdesign.one - Handful of useful system design blogs. Maybe hellointerview is better though
  • hellointerview - Platform gaining popularity for interviewing at mid+ level
  • cp-algos - Covers most of the important competitive programming algorithms. I’m not a big fan of their code snippets, but their explanations are quite good
  • usaco - Good set for getting really far into competitive programming
  • napkin-math
  • latency numbers every programmer should know

Books

I’m not going to share links for these, but you can find them quite quickly. I haven’t fully read ALL of these, but they’re useful as references to me. I would not be able to answer quizzes on them.

  • DDIA: Designing Data-Intensive Applications - Covers some system design fundamentals, as well as internal issues around consistency, reliability, consensus and more.
  • Java Performance: The Definitive Guide - Teaches you how to optimise programs that have a garbage collector
  • Effective Java - Teaches you some boring principles
  • Pragmatic Programmer - I read this maybe 6 years ago. It’s alright if you’ve only done assignments
  • CLRS - Fundamental book, really

I’ve read a lot more than this, but these are the ones I actually remember.