SOFTWARE CRAFTSMANSHIPClean Code
Robert C. Martin
A perspective on writing readable, maintainable code and treating software development as a craft.
ENGINEERING
A place where I explore engineering fundamentals, understand the technology behind everyday systems and share what I learn along the way.
HOW I APPROACH ENGINEERING
Understand
Start with the problem, requirements and constraints.
Design
Explore possible approaches and their trade-offs.
Build
Turn the design into something useful and reliable.
Improve
Learn from feedback, measure and refine the solution.
Good engineering starts with understanding the problem, not choosing the technology.
AREAS OF EXPLORATION
Six connected areas, from writing code to understanding the systems that run it.
THE BOOKSHELF
A collection of books on programming, Java, distributed systems and software architecture that shape the way I think about engineering.
SOFTWARE CRAFTSMANSHIPRobert C. Martin
A perspective on writing readable, maintainable code and treating software development as a craft.
JAVA ENGINEERINGJoshua Bloch
Practical Java best practices, API design and making better use of the language.
JAVA & CONCURRENCYBrian Goetz et al.
Thread safety, synchronization and the fundamentals of building concurrent Java applications.
DISTRIBUTED SYSTEMSMartin Kleppmann
Replication, partitioning, consistency and the principles behind reliable data systems.
DISTRIBUTED ARCHITECTURESam Newman
Service boundaries, communication patterns and the trade-offs involved in microservice architecture.
SOFTWARE ARCHITECTUREMark Richards & Neal Ford
Architecture styles, architectural characteristics and making better technical decisions.
A growing collection of ideas, lessons and perspectives.
READ. REFLECT. BUILD.THE APPROACH
The goal isn't to collect technologies. It's to understand why things work, where they fail, and how engineering decisions affect the systems we build.
See what I've been building