book notes philosophy of software design Learning Domain Driven Design architecture notes object oriented design SOLID design patterns domain driven design distributed systems reactive distributed systems database engineering common distributed system patterns tools PHP TypeScript Go Lang kafka platform engineering infrastructure SRE observability Kubernetes soft skills staff engineer path Personal Knowledge Management zettelkasten Folgezettel permanent notes literature notes reference notes fleeting notes Niklas Luhmann How to Take Smart Notes